Basic.hlsl 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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. out float4 oColor : COLOR0,
  11. #endif
  12. #ifdef DIFFMAP
  13. out float2 oTexCoord : TEXCOORD0,
  14. #endif
  15. out float4 oPos : POSITION)
  16. {
  17. float4x3 modelMatrix = iModelMatrix;
  18. float3 worldPos = GetWorldPos(modelMatrix);
  19. oPos = GetClipPos(worldPos);
  20. #ifdef VERTEXCOLOR
  21. oColor = iColor;
  22. #endif
  23. #ifdef DIFFMAP
  24. oTexCoord = iTexCoord;
  25. #endif
  26. }
  27. void PS(
  28. #ifdef VERTEXCOLOR
  29. float4 iColor : COLOR0,
  30. #endif
  31. #if defined(DIFFMAP) || defined(ALPHAMAP)
  32. float2 iTexCoord : TEXCOORD0,
  33. #endif
  34. out float4 oColor : COLOR0)
  35. {
  36. float4 diffColor = cMatDiffColor;
  37. #ifdef VERTEXCOLOR
  38. diffColor *= iColor;
  39. #endif
  40. #if (!defined(DIFFMAP)) && (!defined(ALPHAMAP))
  41. oColor = diffColor;
  42. #endif
  43. #ifdef DIFFMAP
  44. oColor = diffColor * tex2D(sDiffMap, iTexCoord);
  45. #endif
  46. #ifdef ALPHAMAP
  47. float alphaInput = tex2D(sDiffMap, iTexCoord).a;
  48. oColor = float4(diffColor.rgb, diffColor.a * alphaInput);
  49. #endif
  50. }