DeferredBasePass.bslinc 3.7 KB

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