Lambert 라이팅 모델
float lambert_term = max(0, dot(normal, light_direction));
Half Lambert 라이팅 모델
float halflambert_term = dot(normal, lightdirection) * 0.5f + 0.5f
float halflambert_pow_term = pow(dot(normal, lightdirection) * 0.5f + 0.5f, power);
Wrapped Diffuse
float wrapped_diffuse_term = (dot(normal, lightdirection) + w) / (1+w);
Wrapped Diffuse + 에너지 보존법칙
float3 wrappedDiffuse = LightColour * saturate((dot(N, L) + w) / ((1 + w) * (1 + w)));
http://www.gamedevforever.com/150
Oren-Nayar Reflectance Lighting Model
http://www.gamedevforever.com/93
- 좀 더 거친 표면의 Diffuse 표현 -> Oren-Nayar Model
- 일반적인 표면의 Diffuse 표현 -> Lambert Model
- 좀 더 부드러운 표면의 Diffuse 표현 -> Wrapped Diffuse Model
'TA > Unity' 카테고리의 다른 글
Unity Alpha Blend Mode Toggle (0) | 2020.07.07 |
---|---|
unity shader 프로퍼티 숨기기 (0) | 2020.07.07 |
타일 프로퍼티 숨기기 / 프로퍼티 이름달기 (0) | 2020.07.07 |
감마환경에서 PBR쉐이더 보정(리니어) (0) | 2020.07.07 |
알파 블랜드 라이트맵 (0) | 2020.07.07 |