BasePass.bslinc 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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. mixin BasePassCommon
  11. {
  12. code
  13. {
  14. VStoFS vsmain(VertexInput input)
  15. {
  16. VStoFS output;
  17. VertexIntermediate intermediate = getVertexIntermediate(input);
  18. float4 worldPosition = getVertexWorldPosition(input, intermediate);
  19. output.worldPosition = worldPosition.xyz;
  20. output.position = mul(gMatViewProj, worldPosition);
  21. populateVertexOutput(input, intermediate, output);
  22. return output;
  23. }
  24. float3 calcWorldNormal(VStoFS input, float3 surfaceNormal)
  25. {
  26. float3 tangentToWorldX = input.tangentToWorldX.xyz;
  27. float3 tangentToWorldZ = input.tangentToWorldZ;
  28. float3 tangentToWorldY = cross(tangentToWorldZ, tangentToWorldX) * input.tangentToWorldX.w;
  29. float3x3 tangentToWorld = float3x3(tangentToWorldX, tangentToWorldY, tangentToWorldZ);
  30. // Multiplication order flipped because we stored basis vectors as rows
  31. return normalize(mul(surfaceNormal, tangentToWorld));
  32. }
  33. };
  34. };
  35. mixin BasePass
  36. {
  37. mixin GBufferOutput;
  38. mixin PerCameraData;
  39. mixin PerObjectData;
  40. mixin NormalVertexInput;
  41. mixin BasePassCommon;
  42. };
  43. mixin BasePassSkinned
  44. {
  45. mixin GBufferOutput;
  46. mixin PerCameraData;
  47. mixin PerObjectData;
  48. mixin SkinnedVertexInput;
  49. mixin BasePassCommon;
  50. };
  51. mixin BasePassMorph
  52. {
  53. mixin GBufferOutput;
  54. mixin PerCameraData;
  55. mixin PerObjectData;
  56. mixin MorphVertexInput;
  57. mixin BasePassCommon;
  58. };
  59. mixin BasePassSkinnedMorph
  60. {
  61. mixin GBufferOutput;
  62. mixin PerCameraData;
  63. mixin PerObjectData;
  64. mixin SkinnedMorphVertexInput;
  65. mixin BasePassCommon;
  66. };