Basic.hlsl 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #include "Uniforms.hlsl"
  2. #include "Samplers.hlsl"
  3. #include "Transform.hlsl"
  4. void VS(float4 iPos : POSITION,
  5. #ifdef DIFFMAP
  6. float2 iTexCoord : TEXCOORD0,
  7. #endif
  8. #ifdef VERTEXCOLOR
  9. float4 iColor : COLOR0,
  10. #endif
  11. #ifdef SKINNED
  12. float4 iBlendWeights : BLENDWEIGHT,
  13. int4 iBlendIndices : BLENDINDICES,
  14. #endif
  15. #ifdef INSTANCED
  16. float4x3 iModelInstance : TEXCOORD4,
  17. #endif
  18. #if defined(BILLBOARD) || defined(DIRBILLBOARD)
  19. float2 iSize : TEXCOORD1,
  20. #endif
  21. #if defined(DIRBILLBOARD) || defined(TRAILBONE)
  22. float3 iNormal : NORMAL,
  23. #endif
  24. #if defined(TRAILFACECAM) || defined(TRAILBONE)
  25. float4 iTangent : TANGENT,
  26. #endif
  27. #ifdef DIFFMAP
  28. out float2 oTexCoord : TEXCOORD0,
  29. #endif
  30. #ifdef VERTEXCOLOR
  31. out float4 oColor : COLOR0,
  32. #endif
  33. #if defined(D3D11) && defined(CLIPPLANE)
  34. out float oClip : SV_CLIPDISTANCE0,
  35. #endif
  36. out float4 oPos : OUTPOSITION)
  37. {
  38. float4x3 modelMatrix = iModelMatrix;
  39. float3 worldPos = GetWorldPos(modelMatrix);
  40. oPos = GetClipPos(worldPos);
  41. #if defined(D3D11) && defined(CLIPPLANE)
  42. oClip = dot(oPos, cClipPlane);
  43. #endif
  44. #ifdef VERTEXCOLOR
  45. oColor = iColor;
  46. #endif
  47. #ifdef DIFFMAP
  48. oTexCoord = iTexCoord;
  49. #endif
  50. }
  51. void PS(
  52. #if defined(DIFFMAP) || defined(ALPHAMAP)
  53. float2 iTexCoord : TEXCOORD0,
  54. #endif
  55. #ifdef VERTEXCOLOR
  56. float4 iColor : COLOR0,
  57. #endif
  58. #if defined(D3D11) && defined(CLIPPLANE)
  59. float iClip : SV_CLIPDISTANCE0,
  60. #endif
  61. out float4 oColor : OUTCOLOR0)
  62. {
  63. float4 diffColor = cMatDiffColor;
  64. #ifdef VERTEXCOLOR
  65. diffColor *= iColor;
  66. #endif
  67. #if (!defined(DIFFMAP)) && (!defined(ALPHAMAP))
  68. oColor = diffColor;
  69. #endif
  70. #ifdef DIFFMAP
  71. float4 diffInput = Sample2D(DiffMap, iTexCoord);
  72. #ifdef ALPHAMASK
  73. if (diffInput.a < 0.5)
  74. discard;
  75. #endif
  76. oColor = diffColor * diffInput;
  77. #endif
  78. #ifdef ALPHAMAP
  79. float alphaInput = Sample2D(DiffMap, iTexCoord).a;
  80. oColor = float4(diffColor.rgb, diffColor.a * alphaInput);
  81. #endif
  82. }