0001:
0002:
0003:
0004: struct appdata
0005: {
0006: float4 position : POSITION;
0007: float3 normal : NORMAL;
0008: float3 color : DIFFUSE;
0009: };
0010:
0011:
0012:
0013:
0014: struct vfconn
0015: {
0016: float4 HPOS : POSITION;
0017: float4 COL0 : COLOR0;
0018: float4 COL1 : COLOR1;
0019: };
0020:
0021:
0022:
0023:
0024: vfconn main(appdata IN
0025: , uniform float4x4 WorldViewProj
0026: , uniform float4x4 World
0027: , uniform float4 Light
0028: )
0029: {
0030: vfconn OUT;
0031:
0032: OUT.HPOS = mul(WorldViewProj, IN.position);
0033:
0034:
0035: OUT.COL0.xyz = IN.color.xyz * (
0036: 0.3f
0037: + 0.3f * dot(IN.normal.xyz, Light.xyz));
0038: OUT.COL0.w = 1.0;
0039:
0040:
0041: float4 n = IN.normal.xyzz;
0042: n = mul(World, n);
0043:
0044:
0045: OUT.COL1.xyz = 0.5f * n.xyz + 0.5f;
0046: OUT.COL1.w = 0.5;
0047:
0048: return OUT;
0049: }
0050: