public GameOfLifeCalculator() { var d = RenderFrame.Instance.device; var ShaderInputTexDescription = new Texture2DDescription { ArraySize = 1, Width = Config.Width, Height = Config.Height, BindFlags = BindFlags.ShaderResource, CpuAccessFlags = CpuAccessFlags.None, Format = Format.R8G8B8A8_UNorm, Usage = ResourceUsage.Default, MipLevels = 1, SampleDescription = new SampleDescription(1, 0) }; ScreenBufferShaderResourceTexture = new Texture2D(d, ShaderInputTexDescription); ScreenBufferShaderResource = new ShaderResourceView(d, ScreenBufferShaderResourceTexture); randomTex = Texture2D.FromFile(d, @".\Content\Noise.png"); randomTexView = new ShaderResourceView(d, randomTex); ShaderInputTexDescription.BindFlags = BindFlags.RenderTarget; OffscreenRenderTargetTexture = new Texture2D(d, ShaderInputTexDescription); OffscreenRenderTarget = new RenderTargetView(d, OffscreenRenderTargetTexture); d.ImmediateContext.ClearRenderTargetView(OffscreenRenderTarget, Color.Black); GoLPS = ShaderProvider.CompilePS("./Shader/GoL.fx"); GoLVS = ShaderProvider.CompileVS("./Shader/GoL.fx"); CBuffer = new Buffer(d, Vector4.SizeInBytes * 2, ResourceUsage.Dynamic, BindFlags.ConstantBuffer, CpuAccessFlags.Write, ResourceOptionFlags.None, 0); quad = Mesh.ScreenQuad(); }
public TextureInput(Device d) { inputVS = ShaderProvider.CompileVS("./Shader/TextureInput.fx"); inputPS = ShaderProvider.CompilePS("./Shader/TextureInput.fx"); strokeInfoBuffer = new Buffer(d, Vector4.SizeInBytes * MaxStrokesPerFrame * 2, ResourceUsage.Dynamic, BindFlags.ConstantBuffer, CpuAccessFlags.Write, ResourceOptionFlags.None, 0); miscInfoBuffer = new Buffer(d, Vector4.SizeInBytes, ResourceUsage.Dynamic, BindFlags.ConstantBuffer, CpuAccessFlags.Write, ResourceOptionFlags.None, 0); quad = Mesh.ScreenQuad(); DataBox databoxPS = d.ImmediateContext.MapSubresource(miscInfoBuffer, 0, MapMode.WriteDiscard, 0); databoxPS.Data.Position = 0; databoxPS.Data.Write(new Vector4(Config.Width, Config.Height, 0, 0)); d.ImmediateContext.UnmapSubresource(miscInfoBuffer, 0); }