반응형
https://gamedevforever.com/150
위 포스팅 기반 기존 포스팅 삭제후 대체
Lambert Lighting model
float lambert_term = max(0, dot(normal, light_direction)); |
Half Lambert Lighting model
float halflambert_term = dot(normal, lightdirection) * 0.5f + 0.5f float halflambert_pow_term = pow(dot(normal, lightdirection) * 0.5f + 0.5f, power); |
대마왕님 이글루스 테스트 링크 : http://chulin28ho.egloos.com/5099713
Wrapped Diffuse Lighting model
float wrapped_diffuse_term = (dot(normal, lightdirection) + w) / (1+w); // Energy 0Conserving Wrapped Diffuse // w is between 0 and 1 float3 wrappedDiffuse = LightColour * saturate((dot(N, L) + w) / ((1 + w) * (1 + w))); |
- 좀 더 거친 표면의 Diffuse 표현 -> Oren-Nayar Model
- 일반적인 표면의 Diffuse 표현 -> Lambert Model
- 좀 더 부드러운 표면의 Diffuse 표현 -> Wrapped Diffuse Model
https://www.rorydriscoll.com/2009/01/25/energy-conservation-in-games/
반응형
'Technical Report > Unity Shader' 카테고리의 다른 글
Fade in/out 연출을 위한 shader (3) | 2015.01.23 |
---|---|
SelfilluminationBlend shader (0) | 2015.01.20 |
multipass surface shader : DiffuseOutline (0) | 2015.01.19 |
Android platform texture compresstion option에 따른 결과물 (0) | 2015.01.16 |
Matcap shader review. (0) | 2015.01.12 |