Пример #1
0
        public FullScreenQuadVS()
        {
            Name             = "FullScreenQuadVS";
            Type             = ShaderType.Vertex;
            FeatureLevel     = FeatureLevel.VS_4_0_Level_9_1;
            KeyPart          = new TechniqueKey(vs: VertexShaderFlags.Position | VertexShaderFlags.TextureUV | VertexShaderFlags.Normal);
            EnableSeparators = true;
            InputStruct      = Struct.VertexPositionNormalTexture;
            OutputStruct     = SpriteVS.VSOut;

            Structs.ConstantBuffer cbStatic = SpriteVS.CBStatic;
            Add(cbStatic);

            DeclarationNode nClip = ClipSpaceTransformNode.FullScreenNode(InputStruct, cbStatic[Param.Vectors.ViewportSize]);

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

            outputNode.RegisterField(Vector.ClipPosition, nClip, Shaders.Type.Float4);
            outputNode.RegisterField(Vector.TextureUV, new ReferenceNode {
                Value = InputStruct[Param.SemanticVariables.Texture]
            }, Shaders.Type.Float2);

            Result = outputNode;
        }
Пример #2
0
        public SpriteVS()
        {
            Name             = "SpriteVS";
            Type             = ShaderType.Vertex;
            FeatureLevel     = FeatureLevel.VS_4_0_Level_9_1;
            KeyPart          = new TechniqueKey(vs: VertexShaderFlags.Position | VertexShaderFlags.TextureUV | VertexShaderFlags.Normal);
            EnableSeparators = true;
            InputStruct      = Struct.VertexPositionNormalTexture;
            OutputStruct     = VSOut;

            Structs.ConstantBuffer cbStatic   = CBStatic;
            Structs.ConstantBuffer cbInstance = CBPerInstance;
            Add(cbStatic);
            Add(cbInstance);

            ClipSpaceTransformNode cstNode = new ClipSpaceTransformNode
            {
                Position = new ReferenceNode {
                    Value = InputStruct[Param.SemanticVariables.ObjectPosition]
                },
                InstancePosition = cbInstance[Param.Vectors.SpritePosition],
                Size             = cbInstance[Param.Vectors.SpriteSize],
                ScreenSize       = cbStatic[Param.Vectors.ViewportSize]
            };

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

            outputNode.RegisterField(Vector.ClipPosition, cstNode, Shaders.Type.Float4);
            outputNode.RegisterField(Vector.TextureUV, new ReferenceNode {
                Value = InputStruct[Param.SemanticVariables.Texture]
            }, Shaders.Type.Float2);

            Result = outputNode;
        }