res-avatar-unity/Assets/_PoiyomiShaders/Shaders/7.3/Includes/CGI_PoiSubsurfaceScattering.cginc

28 lines
932 B
HLSL
Raw Permalink Normal View History

2023-07-16 02:51:23 +00:00
#ifndef SUBSURFACE
#define SUBSURFACE
float _SSSThicknessMod;
float _SSSSCale;
float _SSSPower;
float _SSSDistortion;
float4 _SSSColor;
float _EnableSSS;
POI_TEXTURE_NOSAMPLER(_SSSThicknessMap);
float3 calculateSubsurfaceScattering()
{
float SSS = 1 - POI2D_SAMPLER_PAN(_SSSThicknessMap, _MainTex, poiMesh.uv[_SSSThicknessMapUV], _SSSThicknessMapPan);
half3 vLTLight = poiLight.direction + poiMesh.normals[0] * _SSSDistortion;
half flTDot = pow(saturate(dot(poiCam.viewDir, -vLTLight)), _SSSPower) * _SSSSCale;
#ifdef FORWARD_BASE_PASS
half3 fLT = (flTDot) * saturate(SSS + - 1 * _SSSThicknessMod);
#else
half3 fLT = poiLight.attenuation * (flTDot) * saturate(SSS + - 1 * _SSSThicknessMod);
#endif
return fLT * poiLight.color * _SSSColor;
}
#endif