1 Year Ago
Stop using PixelInput for everything (#1336) * PS_InitFinalCombiner( PS_INPUT ) -> PS_InitFinalCombiner() so it works without COMMON_PS_INPUT_DEFINED - this is just for default values anyway PS_CommonTransformNormal should be wrapped in COMMON_PS_INPUT_DEFINED too * Material shading API can be used without common PixelInput Internals rewritten to remove reliance on a commonly defined PixelInput instead every function just takes what it needs. The only public methods you may have been using were changed like so: ```diff - float3 TransformNormal( const PixelInput i, float3 vNormalTs ) + float3 TransformNormal( float3 vNormalTs, float3 vGeometricNormalWs, float3 vTangentUWs, float3 vTangentVWs ) - float3 NormalWorldToTangent( PS_INPUT i, float3 vNormalWs ) + float3 NormalWorldToTangent( float3 vNormalWs, float3 vGeometricNormalWs, float3 vTangentUWs, float3 vTangentVWs ) ``` Material::From( PixelInput ... ), ShadingModelStandard::Shade( PixelInput ... ) stil exist but are wrapped in ifdef COMMON_PS_INPUT_DEFINED, so only work with the common PixelInput include. Material::Init() added to initialize a Material with default values Geometric normals are now distinctive from normals in Material too, this is important for the lighting model: https://files.facepunch.com/matt/1b1711b1/beforeafter.png And a lot of tool vis modes were fixed too. * Material.AmbientOcclusion float3 -> float