DeferredBasePass.bslinc 3.8 KB

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