TA/Unity2020. 7. 7. 11:38

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

Posted by 프리랜서 디자이너