Depth.hlsl 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #include "Uniforms.hlsl"
  2. #include "Samplers.hlsl"
  3. #include "Transform.hlsl"
  4. void VS(float4 iPos : POSITION,
  5. #ifdef SKINNED
  6. float4 iBlendWeights : BLENDWEIGHT,
  7. int4 iBlendIndices : BLENDINDICES,
  8. #endif
  9. #ifdef INSTANCED
  10. float4x3 iModelInstance : TEXCOORD4,
  11. #endif
  12. #ifndef NOUV
  13. float2 iTexCoord : TEXCOORD0,
  14. #endif
  15. out float3 oTexCoord : TEXCOORD0,
  16. out float4 oPos : OUTPOSITION)
  17. {
  18. // Define a 0,0 UV coord if not expected from the vertex data
  19. #ifdef NOUV
  20. float2 iTexCoord = float2(0.0, 0.0);
  21. #endif
  22. float4x3 modelMatrix = iModelMatrix;
  23. float3 worldPos = GetWorldPos(modelMatrix);
  24. oPos = GetClipPos(worldPos);
  25. oTexCoord = float3(GetTexCoord(iTexCoord), GetDepth(oPos));
  26. }
  27. void PS(
  28. float3 iTexCoord : TEXCOORD0,
  29. out float4 oColor : OUTCOLOR0)
  30. {
  31. #ifdef ALPHAMASK
  32. float alpha = Sample2D(DiffMap, iTexCoord.xy).a;
  33. if (alpha < 0.5)
  34. discard;
  35. #endif
  36. oColor = iTexCoord.z;
  37. }