Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [DataContract]
- [PixelShader(PixelShaderFlags.Diffuse)]
- [PixelShader(PixelShaderFlags.Specular)]
- public class PhongPS : Shader
- {
- public PhongPS()
- {
- Name = "PhongPS";
- Type = ShaderType.Pixel;
- FeatureLevel = Odyssey.Graphics.Materials.FeatureLevel.PS_4_0_Level_9_1;
- EnableSeparators = true;
- var input = PhongVS.VSOut;
- input.Name = "input";
- InputStruct = input;
- OutputStruct = Struct.PixelShaderOutput;
- ConstantBuffer cbStatic = CBStatic;
- ConstantBuffer cbFrame= CBFrame;
- Struct pointLight = (Struct)cbStatic[Param.Struct.PointLight];
- Struct material = (Struct)cbStatic[Param.Struct.Material];
- Add(cbStatic);
- Add(cbFrame);
- CastNode vWorldPos = new CastNode
- {
- Input = new ConstantNode { Value = InputStruct[Param.SemanticVariables.WorldPosition] },
- Output = new Vector { Type = Shaders.Type.Float3, Name = "vWorldPos", Swizzle = new[] { Swizzle.X, Swizzle.Y, Swizzle.Z } },
- IsVerbose = true
- };
- SubtractionNode vLightDirection = new SubtractionNode
- {
- Input1 =vWorldPos,
- Input2 = new ConstantNode { Value = pointLight[Param.Light.Position] },
- Output = new Vector { Type = Shaders.Type.Float3, Name="vLightDirection"},
- IsVerbose = true,
- };
- SubtractionNode vViewDirection = new SubtractionNode
- {
- Input1 = new ConstantNode { Value = cbFrame[Param.Vectors.CameraPosition] },
- Input2 = vWorldPos,
- Output = new Vector { Type = Shaders.Type.Float3, Name="vViewDirection"},
- IsVerbose = true,
- };
- PhongLightingNode nPhong = new PhongLightingNode
- {
- Light = new ConstantNode { Value = pointLight },
- Material = new ConstantNode { Value = material },
- ViewDirection = vViewDirection,
- Normal = new ConstantNode {Value= InputStruct[Param.SemanticVariables.Normal] },
- LightDirection = vLightDirection,
- Specular = true,
- };
- Result = new PSOutputNode()
- {
- FinalColor = nPhong,
- Output = OutputStruct
- };
- }
- [...]
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement