BasePass.bslinc 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #include "$ENGINE$\GBufferOutput.bslinc"
  2. #include "$ENGINE$\PerCameraData.bslinc"
  3. #include "$ENGINE$\PerObjectData.bslinc"
  4. #include "$ENGINE$\SkinnedVertexInput.bslinc"
  5. #include "$ENGINE$\NormalVertexInput.bslinc"
  6. #define USE_BLEND_SHAPES
  7. #include "$ENGINE$\SkinnedVertexInput.bslinc"
  8. #include "$ENGINE$\NormalVertexInput.bslinc"
  9. #undef USE_BLEND_SHAPES
  10. Technique : base("BasePassCommon") =
  11. {
  12. Pass =
  13. {
  14. Vertex =
  15. {
  16. VStoFS main(VertexInput input)
  17. {
  18. VStoFS output;
  19. VertexIntermediate intermediate = getVertexIntermediate(input);
  20. float4 worldPosition = getVertexWorldPosition(input, intermediate);
  21. output.worldPosition = worldPosition.xyz;
  22. output.position = mul(gMatViewProj, worldPosition);
  23. populateVertexOutput(input, intermediate, output);
  24. return output;
  25. }
  26. };
  27. Fragment =
  28. {
  29. float3 calcWorldNormal(VStoFS input, float3 surfaceNormal)
  30. {
  31. float3 tangentToWorldX = input.tangentToWorldX.xyz;
  32. float3 tangentToWorldZ = input.tangentToWorldZ;
  33. float3 tangentToWorldY = cross(tangentToWorldZ, tangentToWorldX) * input.tangentToWorldX.w;
  34. float3x3 tangentToWorld = float3x3(tangentToWorldX, tangentToWorldY, tangentToWorldZ);
  35. // Multiplication order flipped because we stored basis vectors as rows
  36. return normalize(mul(surfaceNormal, tangentToWorld));
  37. }
  38. };
  39. };
  40. };
  41. Technique
  42. : base("BasePass")
  43. : inherits("GBufferOutput")
  44. : inherits("PerCameraData")
  45. : inherits("PerObjectData")
  46. : inherits("NormalVertexInput")
  47. : inherits("BasePassCommon") =
  48. { };
  49. Technique
  50. : base("BasePassSkinned")
  51. : inherits("GBufferOutput")
  52. : inherits("PerCameraData")
  53. : inherits("PerObjectData")
  54. : inherits("SkinnedVertexInput")
  55. : inherits("BasePassCommon") =
  56. { };
  57. Technique
  58. : base("BasePassMorph")
  59. : inherits("GBufferOutput")
  60. : inherits("PerCameraData")
  61. : inherits("PerObjectData")
  62. : inherits("MorphVertexInput")
  63. : inherits("BasePassCommon") =
  64. { };
  65. Technique
  66. : base("BasePassSkinnedMorph")
  67. : inherits("GBufferOutput")
  68. : inherits("PerCameraData")
  69. : inherits("PerObjectData")
  70. : inherits("SkinnedMorphVertexInput")
  71. : inherits("BasePassCommon") =
  72. { };