12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- #include "VertexConstants.h"
- struct VS_INPUT
- {
- // Per vertex data
- float3 vPos : POSITION;
- float3 vNorm : NORMAL;
- float2 vTex : TEXCOORD0;
- float4 vCol : COLOR;
- // Per instance data
- matrix iModel : INSTANCE_TRANSFORM; // model matrix
- matrix iModelInvTrans : INSTANCE_INV_TRANSFORM; // (model matrix^-1)^T
- float4 iCol : INSTANCE_COLOR; // color of the model
- };
- struct VS_OUTPUT
- {
- float4 Position : SV_POSITION;
- };
- VS_OUTPUT main(VS_INPUT input)
- {
- VS_OUTPUT output;
- // Check if the alpha = 0
- if (input.vCol.a * input.iCol.a == 0.0)
- {
- // Don't draw the triangle by moving it to an invalid location
- output.Position = float4(0, 0, 0, 0);
- }
- else
- {
- // Transform the position from world space to homogeneous projection space for the light
- float4 pos = float4(input.vPos, 1.0f);
- pos = mul(input.iModel, pos);
- pos = mul(LightView, pos);
- pos = mul(LightProjection, pos);
- output.Position = pos;
- }
-
- return output;
- }
|