4.15、4.16版本的MeshDecals.usf存在BUG,造成使用Mesh Decal的材质ScreenPosition总为(0, 0)
4.15版本的MeshDecals.usf修改如下:
void FPixelShaderInOut_MainPS(
FVertexFactoryInterpolantsVSToPS Interpolants,inout FPixelShaderIn In,
inout FPixelShaderOut Out)
{
...FMaterialPixelParameters MaterialParameters = GetMaterialPixelParameters(Interpolants, In.SvPosition);
MaterialParameters.ScreenPosition = SvPositionToScreenPosition(In.SvPosition);
...
}
4.16版本的MeshDecals.usf需要作以下修改(否则MaterialParameters.ScreenPosition仍无法正常赋值,参照DeferredDecal.usf中MaterialParameters.ScreenPosition的赋值):
MaterialParameters.SvPosition = In.SvPosition;
MaterialParameters.ScreenPosition = SvPositionToScreenPosition(In.SvPosition);