Unity/UnityShader
[HLSL]Henyey-Greenstein Phase Function
멍산
2025. 3. 25. 14:34
https://www.oceanopticsbook.info/view/scattering/level-2/the-henyey-greenstein-phase-function
The Henyey-Greenstein Phase Function :: Ocean Optics Web Book
www.oceanopticsbook.info
개념
빛이 매질을 통과할 때 어느 방향으로 산란되는지 결정하는 확률 분포 함수.
- 앞 쪽으로 잘 퍼지는 빛 - Forward Scattering
- 모든 방향으로 잘 퍼지는 빛 - Isotropic
- 뒤 쪽으로 잘 퍼지는 빛 - Back Scattering
HLSL 코드
float PhaseFunction(float cosTheta, float g)
{
//cosTheta : 카메라와 광원 방향사이의 각도 dot(-viewDirection, lightDirection)
//g : 편향 인자(bias)
float g2 = g * g;
return (1.0 - g2) / pow(1.0 + g2 - 2.0 * g * cosTheta, 1.5)
* (1.0 / (4.0 * 3.14159265));
}
근사치 계산 식
float3 L = LightDirection;
float3 V = ViewDirection;
float Scatter(float n)
{
return pow(dot(-L,V), n);
}
그 외 알아보면 좋은 것
Schlick, Mie 등