| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- #include "$ENGINE$\GBufferOutput.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"
- #undef USE_BLEND_SHAPES
- mixin BasePassCommon
- {
- code
- {
- VStoFS vsmain(VertexInput input)
- {
- VStoFS output;
-
- VertexIntermediate intermediate = getVertexIntermediate(input);
- float4 worldPosition = getVertexWorldPosition(input, intermediate);
-
- output.worldPosition = worldPosition.xyz;
- output.position = mul(gMatViewProj, worldPosition);
- populateVertexOutput(input, intermediate, output);
-
- return output;
- }
- 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));
- }
- };
- };
- mixin BasePass
- {
- mixin GBufferOutput;
- mixin PerCameraData;
- mixin PerObjectData;
- mixin NormalVertexInput;
- mixin BasePassCommon;
- };
- mixin BasePassSkinned
- {
- mixin GBufferOutput;
- mixin PerCameraData;
- mixin PerObjectData;
- mixin SkinnedVertexInput;
- mixin BasePassCommon;
- };
- mixin BasePassMorph
- {
- mixin GBufferOutput;
- mixin PerCameraData;
- mixin PerObjectData;
- mixin MorphVertexInput;
- mixin BasePassCommon;
- };
- mixin BasePassSkinnedMorph
- {
- mixin GBufferOutput;
- mixin PerCameraData;
- mixin PerObjectData;
- mixin SkinnedMorphVertexInput;
- mixin BasePassCommon;
- };
|