「Archive」Wrapped Diffuseについた韓国語のメモ
Archieved専用の記事です。韓国語で書かれているため、日本語への翻訳は時間があるときやらせてもらいたいと思います。
Wrapped Diffuse
이 기사는 Diffuse Lighting 에 대해서 다룸. 이 기사에서 다루는 디퓨즈 라이팅은 3 가지로 나뉘는데, Lambert, Half lambert, 그리고 Wrapped Diffuse 라 하는 것임.
Lambert 와 Half lambert 는 이미 알기 때문에 메모에서는 Wrapped Diffuse 만 하기로 함.
3. Wrapped Diffuse Lighting Model
https://www.slideshare.net/leemwymw/wrapped-diffuse
http://blog.stevemcauley.com/2011/12/03/energy-conserving-wrapped-diffuse/
Wrapped Diffuse 모델은 의사적인 Subsurface scattering, Area light source 및 부드러운 반사를 표현하기 위해서 입사한 지점 에 대한 노멀에 대한 반구 (Hemisphere) 을 감싸는 쉐이딩 모델이다.
Wrapped Diffuse 의 구현 공식 (간략화) 은 다음과 같다고 한다. 여기서 는 임의의 정수이다. Half Lambert 와 비슷하다는 것을 알 수 있다. (딱봐도, w 가 1 이면 바로 Half Lambert 가 된다.)
...but it’s incredibly useful for lighting things like particles where a simple Lambert term doesn’t come close to representing light scattering through smoke...
Wrapped Diffuse 는 Half Lambert 와 비슷하게 유사하게 투과되는 느낌을 표현하는데 사용된다고 한다. 피부, 나뭇잎, 파티클 라이팅이 주로 쓰인다.
하지만 Wrapped Diffuse 는 위의 기존 모델 그대로 쓰기에는 너무 밝은 결과를 나타낸다. (대비가 없어진다) Wrapped Diffuse 의 성질을 보존하면서도 대비를 조절하기 위해서, Wrapped Diffuse 의 모델의 총 에너지를 로 만들어주는 에너지 보존 법칙을 사용해서 다음과 같이 개량된 구현 식을 얻을 수 있다고 한다.
이는 PBR 의 에너지 보존 법칙을 이용한 Wrapped Diffuse 이다.
Why?
우선 일반 디퓨즈 라이팅에서은 으로 팩터를 표현하는데, 반구에 대해서 옆의 식을 다음과 같이 표현할 수 있을 것이다.
하지만 이대로라면 기존의 Standard 한 Diffuse Lighting 방법은 에너지 보존을 하지 않는다는 것을 알 수 있다. (그래서 최종적으로는 로 나눠줘야 함) 하지만 Wrapped Diffuse 에서 위의 개선된 Energy-Conservated Wrapped Diffuse 을 도출하기 위해서 그냥 그대로 두기로 하자.
기존의 Wrapped Diffuse 에서
이를 반구에 대해 그대로 적분하기에는, 으로 인해서 일반 반구보다 더 뻗어나갈 수 있음을 알 수 있다. 따라서 범위에 대해 을 공역으로 삼기보다는, 범위에 대해 세타의 전개를 할 수 있도록 해보자.
결과로 다음과 같은 값을 얻을 수 있다.
즉, 노멀라이즈된 전체 에너지 양은 이 되므로, 위의 식에서 을 나눠준다.
결론
Oren-Nayar 와 Lambert 와 Wrapped Diffuse 는 다음의 대략적인 성질을 가진다.
- 비용 순 : Oren-Nayar >> Wrapped Diffuse with energy conservation > Wrapped Diffuse > Lambert
- 좀 더 거친 표면 (Microfacet) 을 할 때는 Oren-Nayar 일반적인 표면의 경우 Lambert & Half Lambert 좀 더 부드러운 표면은 Wrapped Diffuse