Exemple #1
0
        bool SetShaderParameters(DeviceContext deviceContext, Matrix world, Matrix view, Matrix projection, ShaderResourceView texture, Vector3 lightDirection, Color4 ambientColor, Color4 diffuseColor)
        {
            try {
                var matrixBufferType = new MatrixBufferType {
                    World      = Matrix.Transpose(world),
                    View       = Matrix.Transpose(view),
                    Projection = Matrix.Transpose(projection)
                };

                deviceContext.UpdateSubresource(ref matrixBufferType, matrixBuffer);
                deviceContext.VertexShader.SetConstantBuffer(0, matrixBuffer);
                deviceContext.PixelShader.SetShaderResource(0, texture);

                var lightBufferType = new LightBufferType {
                    AmbientColor   = ambientColor,
                    DiffuseColor   = diffuseColor,
                    LightDirection = lightDirection,
                    Padding        = 0.0f
                };

                deviceContext.UpdateSubresource(ref lightBufferType, lightBuffer);
                deviceContext.PixelShader.SetConstantBuffer(0, lightBuffer);
            } catch { return(false); }
            return(true);
        }
Exemple #2
0
        private bool SetShaderParameters(DeviceContext deviceContext, Matrix worldMatrix, Matrix viewMatrix,
                                         Matrix projectionMatrix, Vector4 pixelColor)
        {
            try
            {
                worldMatrix.Transpose();
                viewMatrix.Transpose();
                projectionMatrix.Transpose();

                deviceContext.MapSubresource(_matrixBuffer, MapMode.WriteDiscard, MapFlags.None, out DataStream mappedResource);
                MatrixBufferType matrixBuffer = new MatrixBufferType()
                {
                    world      = worldMatrix,
                    view       = viewMatrix,
                    projection = projectionMatrix,
                    color      = pixelColor
                };
                mappedResource.Write(matrixBuffer);
                deviceContext.UnmapSubresource(_matrixBuffer, 0);
                int bufferSlotNuber = 0;
                deviceContext.VertexShader.SetConstantBuffer(bufferSlotNuber, _matrixBuffer);
                return(true);
            }
            catch
            {
                return(false);
            }
        }
        bool SetShaderParameters(DeviceContext deviceContext, Matrix world, Matrix view, Matrix projection, ShaderResourceView[] textureArray, Vector3 lightDirection, Color4 diffuseColor, Vector3 cameraPosition, Color4 specularColor, float specularPower)
        {
            try {
                var matrixBufferType = new MatrixBufferType {
                    World      = Matrix.Transpose(world),
                    View       = Matrix.Transpose(view),
                    Projection = Matrix.Transpose(projection)
                };

                deviceContext.UpdateSubresource(ref matrixBufferType, matrixBuffer);
                deviceContext.VertexShader.SetConstantBuffer(0, matrixBuffer);
                deviceContext.PixelShader.SetShaderResources(0, textureArray);

                var lightBufferType = new LightBufferType {
                    DiffuseColor   = diffuseColor,
                    LightDirection = lightDirection,
                    SpecularColor  = specularColor,
                    SpecularPower  = specularPower
                };

                deviceContext.UpdateSubresource(ref lightBufferType, lightBuffer);
                deviceContext.PixelShader.SetConstantBuffer(0, lightBuffer);

                var cameraBufferType = new CameraBufferType {
                    CameraPosition = cameraPosition
                };

                deviceContext.UpdateSubresource(ref cameraBufferType, cameraBuffer);
                deviceContext.VertexShader.SetConstantBuffer(1, cameraBuffer);
            } catch { return(false); }
            return(true);
        }
Exemple #4
0
        bool SetShaderParameters(DeviceContext deviceContext, Matrix world, Matrix view, Matrix projection)
        {
            try {
                var matrixBufferType = new MatrixBufferType {
                    World      = Matrix.Transpose(world),
                    View       = Matrix.Transpose(view),
                    Projection = Matrix.Transpose(projection)
                };

                deviceContext.UpdateSubresource(ref matrixBufferType, matrixBuffer);
                deviceContext.VertexShader.SetConstantBuffer(0, matrixBuffer);
            } catch { return(false); }
            return(true);
        }
Exemple #5
0
        bool SetShaderParameters(DeviceContext deviceContext, Matrix world, Matrix view, Matrix projection, ShaderResourceView texture, Vector4 clipPlane)
        {
            try {
                var matrixBufferType = new MatrixBufferType {
                    World      = Matrix.Transpose(world),
                    View       = Matrix.Transpose(view),
                    Projection = Matrix.Transpose(projection)
                };

                deviceContext.UpdateSubresource(ref matrixBufferType, matrixBuffer);
                deviceContext.VertexShader.SetConstantBuffer(0, matrixBuffer);
                deviceContext.PixelShader.SetShaderResource(0, texture);

                var clipPlaneBufferType = new ClipPlaneBufferType {
                    ClipPlane = clipPlane
                };

                deviceContext.UpdateSubresource(ref clipPlaneBufferType, clipPlaneBuffer);
                deviceContext.VertexShader.SetConstantBuffer(1, clipPlaneBuffer);
            } catch { return(false); }
            return(true);
        }
Exemple #6
0
        bool SetShaderParameters(DeviceContext deviceContext, Matrix world, Matrix view, Matrix projection, ShaderResourceView texture, float blend)
        {
            try {
                var matrixBufferType = new MatrixBufferType {
                    World      = Matrix.Transpose(world),
                    View       = Matrix.Transpose(view),
                    Projection = Matrix.Transpose(projection)
                };

                deviceContext.UpdateSubresource(ref matrixBufferType, matrixBuffer);
                deviceContext.VertexShader.SetConstantBuffer(0, matrixBuffer);
                deviceContext.PixelShader.SetShaderResource(0, texture);

                var translateBufferType = new TransparentBufferType {
                    BlendAmount = blend
                };

                deviceContext.UpdateSubresource(ref translateBufferType, transparentBuffer);
                deviceContext.PixelShader.SetConstantBuffer(0, transparentBuffer);
            } catch { return(false); }
            return(true);
        }
        bool SetShaderParameters(DeviceContext deviceContext, Matrix world, Matrix view, Matrix projection, ShaderResourceView texture, float fogStart, float fogEnd)
        {
            try {
                var matrixBufferType = new MatrixBufferType {
                    World      = Matrix.Transpose(world),
                    View       = Matrix.Transpose(view),
                    Projection = Matrix.Transpose(projection)
                };

                deviceContext.UpdateSubresource(ref matrixBufferType, matrixBuffer);
                deviceContext.VertexShader.SetConstantBuffer(0, matrixBuffer);
                deviceContext.PixelShader.SetShaderResource(0, texture);

                var fogBufferType = new FogBufferType {
                    FogStart = fogStart,
                    FogEnd   = fogEnd
                };

                deviceContext.UpdateSubresource(ref fogBufferType, fogBuffer);
                deviceContext.VertexShader.SetConstantBuffer(1, fogBuffer);
            } catch { return(false); }
            return(true);
        }
Exemple #8
0
        bool SetShaderParameters(DeviceContext deviceContext, Matrix world, Matrix view, Matrix projection, ShaderResourceView texture, ShaderResourceView reflectionTexture, Matrix reflection)
        {
            try {
                var matrixBufferType = new MatrixBufferType {
                    World      = Matrix.Transpose(world),
                    View       = Matrix.Transpose(view),
                    Projection = Matrix.Transpose(projection)
                };

                deviceContext.UpdateSubresource(ref matrixBufferType, matrixBuffer);
                deviceContext.VertexShader.SetConstantBuffer(0, matrixBuffer);

                var reflectionBufferType = new ReflectionBufferType {
                    Reflection = Matrix.Transpose(reflection)
                };

                deviceContext.UpdateSubresource(ref reflectionBufferType, reflectionBuffer);
                deviceContext.VertexShader.SetConstantBuffer(1, reflectionBuffer);
                deviceContext.PixelShader.SetShaderResource(0, texture);
                deviceContext.PixelShader.SetShaderResource(1, reflectionTexture);
            } catch { return(false); }
            return(true);
        }
        protected override void InitShaderBuffers(Device device)
        {
            BufferDescription bufferDescription = new BufferDescription(MatrixBufferType.SizeInBytes(), ResourceUsage.Dynamic, BindFlags.ConstantBuffer, CpuAccessFlags.Write, ResourceOptionFlags.None, 0);

            m_matrixBuffer = new SharpDX.Direct3D11.Buffer(device, bufferDescription);
        }