You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
23 lines
922 B
23 lines
922 B
TEXTURE3D(_HairAzimuthalScattering);
|
|
|
|
// Returns the roughened azimuthal scattering distribution term for all three lobes.
|
|
float3 GetRoughenedAzimuthalScatteringDistribution(float phi, float cosThetaD, float beta)
|
|
{
|
|
const float X = (phi + TWO_PI) / FOUR_PI;
|
|
const float Y = cosThetaD;
|
|
const float Z = beta;
|
|
|
|
// TODO: It should be possible to reduce the domain of the integration to 0 -> HALF/PI as it repeats. This will save memory.
|
|
return SAMPLE_TEXTURE3D_LOD(_HairAzimuthalScattering, s_linear_clamp_sampler, float3(X, Y, Z), 0).xyz;
|
|
}
|
|
|
|
TEXTURE3D(_HairLongitudinalScattering);
|
|
|
|
float3 GetEnergyConservingLongitudinalScattering(float sinThetaI, float sinThetaO, float beta)
|
|
{
|
|
const float X = 0.5 + 0.5 * sinThetaI;
|
|
const float Y = 0.5 + 0.5 * sinThetaO;
|
|
const float Z = beta;
|
|
|
|
return SAMPLE_TEXTURE3D_LOD(_HairLongitudinalScattering, s_linear_clamp_sampler, float3(X, Y, Z), 0).xyz;
|
|
}
|