#include "$ENGINE$\GBuffer.bslinc" #include "$ENGINE$\PerCameraData.bslinc" #include "$ENGINE$\PerObjectData.bslinc" #include "$ENGINE$\SkinnedVertexInput.bslinc" #include "$ENGINE$\NormalVertexInput.bslinc" #define USE_BLEND_SHAPES #include "$ENGINE$\SkinnedVertexInput.bslinc" #include "$ENGINE$\NormalVertexInput.bslinc" Technique : base("DeferredBasePassCommon") = { Language = "HLSL11"; Pass = { Vertex = { VStoFS main(VertexInput input) { VStoFS output; VertexIntermediate intermediate = getVertexIntermediate(input); float4 worldPosition = getVertexWorldPosition(input, intermediate); output.position = mul(gMatViewProj, worldPosition); populateVertexOutput(input, intermediate, output); return output; } }; Fragment = { float3 calcWorldNormal(VStoFS input, float3 surfaceNormal) { float3 tangentToWorldX = input.tangentToWorldX.xyz; float3 tangentToWorldZ = input.tangentToWorldZ; float3 tangentToWorldY = cross(tangentToWorldZ, tangentToWorldX) * input.tangentToWorldX.w; float3x3 tangentToWorld = float3x3(tangentToWorldX, tangentToWorldY, tangentToWorldZ); // Multiplication order flipped because we stored basis vectors as rows return normalize(mul(surfaceNormal, tangentToWorld)); } }; }; }; Technique : base("DeferredBasePass") : inherits("GBuffer") : inherits("PerCameraData") : inherits("PerObjectData") : inherits("NormalVertexInput") : inherits("DeferredBasePassCommon") = { Language = "HLSL11"; }; Technique : base("DeferredBasePassSkinned") : inherits("GBuffer") : inherits("PerCameraData") : inherits("PerObjectData") : inherits("SkinnedVertexInput") : inherits("DeferredBasePassCommon") = { Language = "HLSL11"; }; Technique : base("DeferredBasePassMorph") : inherits("GBuffer") : inherits("PerCameraData") : inherits("PerObjectData") : inherits("MorphVertexInput") : inherits("DeferredBasePassCommon") = { Language = "HLSL11"; }; Technique : base("DeferredBasePassSkinnedMorph") : inherits("GBuffer") : inherits("PerCameraData") : inherits("PerObjectData") : inherits("SkinnedMorphVertexInput") : inherits("DeferredBasePassCommon") = { Language = "HLSL11"; }; Technique : base("DeferredBasePassCommon") = { Language = "GLSL"; Pass = { Vertex = { void main() { VertexIntermediate intermediate; getVertexIntermediate(intermediate); vec4 worldPos; getVertexWorldPosition(intermediate, worldPos); gl_Position = gMatViewProj * worldPos; populateVertexOutput(intermediate); } }; Fragment = { vec3 calcWorldNormal(vec3 normal, vec4 tangent, vec3 surfaceNormal) { vec3 tangentToWorldX = tangent.xyz; vec3 tangentToWorldZ = normal; vec3 tangentToWorldY = cross(tangentToWorldZ, tangentToWorldX) * tangent.w; mat3 tangentToWorld = mat3(tangentToWorldX, tangentToWorldY, tangentToWorldZ); return normalize(tangentToWorld * surfaceNormal); } }; }; }; Technique : base("DeferredBasePass") : inherits("GBuffer") : inherits("PerCameraData") : inherits("PerObjectData") : inherits("NormalVertexInput") : inherits("DeferredBasePassCommon") = { Language = "GLSL"; }; Technique : base("DeferredBasePassSkinned") : inherits("GBuffer") : inherits("PerCameraData") : inherits("PerObjectData") : inherits("SkinnedVertexInput") : inherits("DeferredBasePassCommon") = { Language = "GLSL"; }; Technique : base("DeferredBasePassMorph") : inherits("GBuffer") : inherits("PerCameraData") : inherits("PerObjectData") : inherits("MorphVertexInput") : inherits("DeferredBasePassCommon") = { Language = "GLSL"; }; Technique : base("DeferredBasePassSkinnedMorph") : inherits("GBuffer") : inherits("PerCameraData") : inherits("PerObjectData") : inherits("SkinnedMorphVertexInput") : inherits("DeferredBasePassCommon") = { Language = "GLSL"; };