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; }