您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
29 行
1.1 KiB
29 行
1.1 KiB
//-------------------------------------------------------------------------------------
|
|
// Fill SurfaceData/Builtin data function
|
|
//-------------------------------------------------------------------------------------
|
|
#include "CoreRP/ShaderLibrary/Packing.hlsl"
|
|
#include "CoreRP/ShaderLibrary/Sampling/SampleUVMapping.hlsl"
|
|
|
|
void GetSurfaceData(float2 texCoordDS, float3x3 decalToWorld, out DecalSurfaceData surfaceData)
|
|
{
|
|
surfaceData.baseColor = float4(0,0,0,0);
|
|
surfaceData.normalWS = float4(0,0,0,0);
|
|
surfaceData.mask = float4(0,0,0,0);
|
|
float totalBlend = _DecalBlend;
|
|
#if _COLORMAP
|
|
surfaceData.baseColor = SAMPLE_TEXTURE2D(_BaseColorMap, sampler_BaseColorMap, texCoordDS.xy);
|
|
surfaceData.baseColor.w *= totalBlend;
|
|
#endif
|
|
UVMapping texCoord;
|
|
ZERO_INITIALIZE(UVMapping, texCoord);
|
|
texCoord.uv = texCoordDS.xy;
|
|
#if _NORMALMAP
|
|
surfaceData.normalWS.xyz = mul(decalToWorld, SAMPLE_UVMAPPING_NORMALMAP(_NormalMap, sampler_NormalMap, texCoord, 1)) * 0.5f + 0.5f;
|
|
surfaceData.normalWS.w = totalBlend;
|
|
#endif
|
|
#if _MASKMAP
|
|
surfaceData.mask = SAMPLE_TEXTURE2D(_MaskMap, sampler_MaskMap, texCoordDS.xy);
|
|
surfaceData.mask.z = totalBlend;
|
|
#endif
|
|
|
|
}
|