public void TestHorizonSSAO() { var c = new OBJToRAMMeshConverter(new RAMTextureFactory()); var mesh = DefaultMeshes.CreateMerchantsHouseMesh(c); var game = new DX11Game(); game.InitDirectX(); var context = game.Device.ImmediateContext; var texturePool = new TexturePool(game); var gBuffer = new GBuffer(game.Device, 800, 600); var renderer = new DeferredMeshesRenderer(game, gBuffer, texturePool); var ssao = new HorizonSSAORenderer(game, 800, 600); var el = renderer.AddMesh(mesh); el.WorldMatrix = SlimDX.Matrix.Translation(MathHelper.Right * 0 * 2 + SlimDX.Vector3.UnitZ * 0 * 2); game.GameLoopEvent += delegate { gBuffer.Clear(); gBuffer.SetTargetsToOutputMerger(); renderer.Draw(); ssao.OnFrameRender(gBuffer.DepthRV, gBuffer.NormalRV); context.ClearState(); game.SetBackbuffer(); if (game.Keyboard.IsKeyDown(Key.I)) { GBufferTest.DrawGBuffer(game, gBuffer); } else { game.TextureRenderer.Draw(ssao.MSsaoBuffer.pSRV, new SlimDX.Vector2(0, 0), new SlimDX.Vector2(800, 600)); } }; game.Run(); }
public void TestDeferredMeshRendererRenderCity() { var c = new OBJToRAMMeshConverter(new RAMTextureFactory()); var importer = new ObjImporter(); importer.AddMaterialFileStream("Town001.mtl", new FileStream("../../bin/GameData/Core/Town/OBJ03/Town001.mtl", FileMode.Open)); importer.ImportObjFile("../../bin/GameData/Core/Town/OBJ03/Town001.obj"); var mesh = c.CreateMesh(importer); var game = new DX11Game(); game.InitDirectX(); var context = game.Device.ImmediateContext; var texturePool = new MHGameWork.TheWizards.Graphics.SlimDX.Rendering.Deferred.TexturePool(game); var gBuffer = new GBuffer(game.Device, 800, 600); var renderer = new DeferredMeshesRenderer(game, gBuffer, texturePool); var el = renderer.AddMesh(mesh); el.WorldMatrix = global::SlimDX.Matrix.Translation(MathHelper.Right * 0 * 2 + global::SlimDX.Vector3.UnitZ * 0 * 2); game.GameLoopEvent += delegate { gBuffer.Clear(); gBuffer.SetTargetsToOutputMerger(); renderer.Draw(); context.ClearState(); game.SetBackbuffer(); GBufferTest.DrawGBuffer(game, gBuffer); }; global::SlimDX.Configuration.EnableObjectTracking = false; game.Run(); }
public void Render() { angle += MathHelper.Pi * game.Elapsed; point.LightPosition = new Vector3((float)Math.Sin(angle), (float)Math.Cos(angle), -2); ctx.ClearState(); combineFinal.SetLightAccumulationStates(); combineFinal.ClearLightAccumulation(); point.Draw(); ctx.ClearState(); game.SetBackbuffer(); ctx.Rasterizer.SetViewports(new Viewport(400, 300, 400, 300)); combineFinal.DrawCombined(); game.SetBackbuffer(); GBufferTest.DrawGBuffer(game, buffer); }
public void drawMeshTest(IMesh mesh, Matrix worldMatrix) { var game = createGame(); var pool = createTexturePool(game); var worldMesh = new WorldMesh { Mesh = mesh, WorldMatrix = worldMatrix }; var meshes = new MeshesRenderer(new RendererResourcePool(new MeshRenderDataFactory(game, null, pool), pool, game), game); var ctx = game.Device.ImmediateContext; var gBuffer = createGBuffer(game); var scene = new RenderingTestsHelper.SimpleLightedScene(game, gBuffer); var list = new List <WorldMesh>(); list.Add(worldMesh); var buffer = gBuffer; ctx = game.Device.ImmediateContext; // Non-related init code var point = new PointLightRenderer(game, buffer); point.LightRadius = 3; point.LightIntensity = 1; point.ShadowsEnabled = false; var angle = 0f; var combineFinal = new CombineFinalRenderer(game, buffer); var raster = new RasterizerStateDescription() { CullMode = CullMode.Front, FillMode = FillMode.Solid }; var state = RasterizerState.FromDescription(game.Device, raster); point.LightRadius = 10; game.GameLoopEvent += delegate { ctx.ClearState(); ctx.Rasterizer.State = state; gBuffer.Clear(); gBuffer.SetTargetsToOutputMerger(); meshes.DrawMeshes(list, game.Camera); angle += MathHelper.Pi * game.Elapsed; var alpha = 0.99f * game.Elapsed * 20000; var cam = game.Camera.ViewInverse.GetTranslation(); var diff = cam - point.LightPosition; diff.Normalize(); point.LightPosition += diff * game.Elapsed * 2;// new Vector3((float)Math.Sin(angle), (float)Math.Cos(angle), -2); ctx.ClearState(); combineFinal.SetLightAccumulationStates(); combineFinal.ClearLightAccumulation(); point.Draw(); ctx.ClearState(); game.SetBackbuffer(); ctx.Rasterizer.SetViewports(new Viewport(400, 300, 400, 300)); combineFinal.DrawCombined(); game.SetBackbuffer(); GBufferTest.DrawGBuffer(game, buffer); }; game.Run(); }