Esempio n. 1
0
        public ShapeVS()
        {
            Name             = "ShapeVS";
            Type             = ShaderType.Vertex;
            FeatureLevel     = FeatureLevel.VS_4_0_Level_9_1;
            KeyPart          = new TechniqueKey(vs: VertexShaderFlags.Position | VertexShaderFlags.Color);
            EnableSeparators = true;
            InputStruct      = Struct.VertexPositionColor;
            OutputStruct     = VSOut;

            ConstantBuffer cbScene    = CBPerFrame;
            ConstantBuffer cbInstance = CBPerInstance;

            Add(cbScene);
            Add(cbInstance);

            var nPosV3toV4 = CastNode.PositionV3toV4(InputStruct[Param.SemanticVariables.Position]);
            var mulPosWVP  = new MatrixMultiplyNode
            {
                Input1 = nPosV3toV4,
                Input2 = MatrixMultiplyNode.WorldViewProjection,
            };

            CustomOutputNode outputNode = new CustomOutputNode()
            {
                Output = OutputStruct
            };

            outputNode.RegisterField(Vector.ClipPosition, mulPosWVP, Shaders.Type.Float4);
            outputNode.RegisterField(Vector.Color, new ReferenceNode {
                Value = InputStruct[Param.SemanticVariables.Color]
            }, Shaders.Type.Float4);

            Result = outputNode;
        }