示例#1
0
        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();
        }
示例#2
0
        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);
        }