본문으로 바로가기

Wrapped Diffuse

category Technical Report/Unity Shader 2015. 1. 19. 15:40
반응형


https://gamedevforever.com/150

 

Wrapped Diffuse

오랜만이네요. 한 동안 멘탈이 붕괴되어서, 방황하다가 우리 아가랑 신나게 놀다가 정신차리고 돌아왔습니다. ㅎㅎ슬슬 GDC12의 기술문서들이 올라오네요.. ㅎㅎㅎ.. 비록 GDC는 못 갔지만, 대충

gamedevforever.com

 

위 포스팅 기반 기존 포스팅 삭제후 대체

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/

반응형