BasePass.bslinc 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. #include "$ENGINE$\GBuffer.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. Language = "HLSL11";
  13. Pass =
  14. {
  15. Vertex =
  16. {
  17. VStoFS main(VertexInput input)
  18. {
  19. VStoFS output;
  20. VertexIntermediate intermediate = getVertexIntermediate(input);
  21. float4 worldPosition = getVertexWorldPosition(input, intermediate);
  22. output.worldPosition = worldPosition.xyz;
  23. output.position = mul(gMatViewProj, worldPosition);
  24. populateVertexOutput(input, intermediate, output);
  25. return output;
  26. }
  27. };
  28. Fragment =
  29. {
  30. float3 calcWorldNormal(VStoFS input, float3 surfaceNormal)
  31. {
  32. float3 tangentToWorldX = input.tangentToWorldX.xyz;
  33. float3 tangentToWorldZ = input.tangentToWorldZ;
  34. float3 tangentToWorldY = cross(tangentToWorldZ, tangentToWorldX) * input.tangentToWorldX.w;
  35. float3x3 tangentToWorld = float3x3(tangentToWorldX, tangentToWorldY, tangentToWorldZ);
  36. // Multiplication order flipped because we stored basis vectors as rows
  37. return normalize(mul(surfaceNormal, tangentToWorld));
  38. }
  39. };
  40. };
  41. };
  42. Technique
  43. : base("BasePass")
  44. : inherits("GBuffer")
  45. : inherits("PerCameraData")
  46. : inherits("PerObjectData")
  47. : inherits("NormalVertexInput")
  48. : inherits("BasePassCommon") =
  49. {
  50. Language = "HLSL11";
  51. };
  52. Technique
  53. : base("BasePassSkinned")
  54. : inherits("GBuffer")
  55. : inherits("PerCameraData")
  56. : inherits("PerObjectData")
  57. : inherits("SkinnedVertexInput")
  58. : inherits("BasePassCommon") =
  59. {
  60. Language = "HLSL11";
  61. };
  62. Technique
  63. : base("BasePassMorph")
  64. : inherits("GBuffer")
  65. : inherits("PerCameraData")
  66. : inherits("PerObjectData")
  67. : inherits("MorphVertexInput")
  68. : inherits("BasePassCommon") =
  69. {
  70. Language = "HLSL11";
  71. };
  72. Technique
  73. : base("BasePassSkinnedMorph")
  74. : inherits("GBuffer")
  75. : inherits("PerCameraData")
  76. : inherits("PerObjectData")
  77. : inherits("SkinnedMorphVertexInput")
  78. : inherits("BasePassCommon") =
  79. {
  80. Language = "HLSL11";
  81. };
  82. Technique
  83. : base("BasePassCommon") =
  84. {
  85. Language = "GLSL";
  86. Pass =
  87. {
  88. Vertex =
  89. {
  90. void main()
  91. {
  92. VertexIntermediate intermediate;
  93. getVertexIntermediate(intermediate);
  94. vec4 worldPos;
  95. getVertexWorldPosition(intermediate, worldPos);
  96. outWorldPosition = worldPos.xyz;
  97. gl_Position = gMatViewProj * worldPos;
  98. populateVertexOutput(intermediate);
  99. }
  100. };
  101. Fragment =
  102. {
  103. vec3 calcWorldNormal(vec3 normal, vec4 tangent, vec3 surfaceNormal)
  104. {
  105. vec3 tangentToWorldX = tangent.xyz;
  106. vec3 tangentToWorldZ = normal;
  107. vec3 tangentToWorldY = cross(tangentToWorldZ, tangentToWorldX) * tangent.w;
  108. mat3 tangentToWorld = mat3(tangentToWorldX, tangentToWorldY, tangentToWorldZ);
  109. return normalize(tangentToWorld * surfaceNormal);
  110. }
  111. };
  112. };
  113. };
  114. Technique
  115. : base("BasePass")
  116. : inherits("GBuffer")
  117. : inherits("PerCameraData")
  118. : inherits("PerObjectData")
  119. : inherits("NormalVertexInput")
  120. : inherits("BasePassCommon") =
  121. {
  122. Language = "GLSL";
  123. };
  124. Technique
  125. : base("BasePassSkinned")
  126. : inherits("GBuffer")
  127. : inherits("PerCameraData")
  128. : inherits("PerObjectData")
  129. : inherits("SkinnedVertexInput")
  130. : inherits("BasePassCommon") =
  131. {
  132. Language = "GLSL";
  133. };
  134. Technique
  135. : base("BasePassMorph")
  136. : inherits("GBuffer")
  137. : inherits("PerCameraData")
  138. : inherits("PerObjectData")
  139. : inherits("MorphVertexInput")
  140. : inherits("BasePassCommon") =
  141. {
  142. Language = "GLSL";
  143. };
  144. Technique
  145. : base("BasePassSkinnedMorph")
  146. : inherits("GBuffer")
  147. : inherits("PerCameraData")
  148. : inherits("PerObjectData")
  149. : inherits("SkinnedMorphVertexInput")
  150. : inherits("BasePassCommon") =
  151. {
  152. Language = "GLSL";
  153. };