물리 기반 셰이더라니?(1)
• 기존의 실시간 셰이더들은 물리적으로 부정확한 부분이 많았습니다.
– 어두운 Diffuse map을 써야 한다던가
– Ambient Light가 단색이라던가
– Specular가 엄청 약하거나, 혹은 강하거나
8
9.
물리 기반 셰이더라니?(2)
• 기존의 실시간 셰이더들은 물리적으로 부정확한 부분이 많았습니다.
– Fresnel 효과가 잘못 들어가있거나
– Reflection에 대한 고려가 전혀 없거나
– 조명이 엄청 약한데도 엄청 밝은 셰이더라던가
9
10.
그럼 예전 셰이더들이물리랑은 상관 없는거야?
• 기존 셰이더들이 생략을 좀 많이 했을 뿐입니다.
– Lambert diffuse 셰이딩은 표면이 완벽하게 빛을 반사한다고
가정합니다.
– 거울의 반사율도 90%!
• Phong 셰이딩은 현실 세계의 Specular를 재현하지 못합니다.
– 원형 물체에선 괜찮지만 평평한 면에선 실제 스페큘러를 표현하지
못합니다.
– 언제나 동그랗게 맺히는 하이라이트~
10
11.
물리 기반 셰이더는뭐가 다른데?
• 물리 기반 셰이더는 생략된 물리 현상들을 좀더 많이 구현한
셰이더입니다.
– Oren-nayar
– Blinn-Phong Specular
– 미세표면
– Fresnel 효과
– Image Base Light
– 에너지 보존 법칙
11
실제 세계의 물리효과들 2 - 모든 표면은 Specular가 있다! (1)
• 셰이더라고 그러지만 사실은 반사 모델
– BRDF라는 말도 양방향 ‘반사’ 분포 함수
18
19.
실제 세계의 물리효과들 2 - 모든 표면은 Specular가 있다! (2)
• 카메라에 편광 필터를 사용해서 사진을 찍어 보신분은 아시겠지만
좀더 색이 풍부하게 나옵니다.
– 이게 표면에서 반사되는 난반사를 줄여줘서 - Specular를 줄여줘서 -
본래의 색을 더 풍부하게 보이게 해주는 원리 입니다.
• 즉, 편광 필터를 사용해서 찍은 사진들은 물체의 Diffuse 부분만을
얻어낸 것으로, 포토샵으로 원래 사진에서 디퓨즈 부분만 빼면
Specular만 남은 이미지를 얻을 수 있습니다.
19
22.
실제 세계의 물리효과들 2 - 모든 표면은 Fresnel이 있다! (1)
• 스넬의 법칙(Snell’s Law)
– 두 매질이 마주하는 경계면에서 임계각을
넘으면 전반사가 일어난다.
• 즉, 우리가 익히 아는 Specular 반사는 특정
각도에서만 일어납니다.
22
23.
실제 세계의 물리효과들 2 - 모든 표면은 Fresnel이 있다! (2)
• Fresnel의 법칙(Fresnel Effect)
– 표면의 반사량은 관찰자의 시점과 표면이
이루는 각도에 영향을 받는다.
– 표면을 바라보는 각도가 물체의 전반사가
일어나는 고유 각도, 즉 Critical
Angle(임계각)에 이르면 Fresnel 효과를
경험 할 수 있게 됩니다.
23
24.
• 마루도 얕은각도에서 보면 거울
처럼 반사가 일어납니다.
• 우리가 흔히 아는 Fresnel은
진정한 Fresnel이 아닌겁니다!
25.
• 마루도 얕은각도에서 보면 거울
처럼 반사가 일어납니다.
• 우리가 흔히 아는 Fresnel은
진정한 Fresnel이 아닌겁니다!
26.
실제 세계의 물리효과들 2 - 모든 표면은 Fresnel이 있다! (3)
• 우리 주변 물체들의 IOR
• 나무, 돌 같은 Specular가 없는 것처럼 보이는 재질들은 얕은
각도에서 전반사가 일어납니다.
26
재질 IOR(Index Of Refraction)
진공 1.0
공기 1.0002926
유리 1.5
유리, 나무, 돌, 콘크리트 3 ~ 4 (14 ~ 30도)
플라스틱 5 ~ 8
금속 20 ~ 100
27.
실제 세계의 물리효과들 2 - 빛을 받는 물체의 표면도 그림자가 진다!
• Fresnel 때문에 Specular가 잘 안보인다는 설명은 뭔가 부족
– 유리와 벤젠의 IOR은 같지만 Specular는 다르게 보임
27
실제 세계의 물리효과들 3 - Image Based Lighting (1)
• 기존의 셰이더는 Ambient Light를 그냥
단색으로 처리하는 경우가 대부분
29
30.
실제 세계의 물리효과들 3 - Image Based Lighting (2)
• 실제 세계에선 그늘진 부분에서도 난반사에 의한 조명이 발생
30
31.
실제 세계의 물리효과들 3 - Image Based Lighting (3)
• Image Based Lighting(IBL)은
단색으로 이뤄지던 주변광을 사진이나
이미지를 통해 여러 색을 갖게 만들어
주는 것.
– 이것은 Diffuse 부분만이 아닌
Specular와 Reflection 양쪽에 영향을
주며, 표면의 거칠기에 따라 반사되는
주변광의 모양이 바뀝니다.
31
32.
실제 세계의 물리효과들 3 - Image Based Lighting (4)
• Specular와 Reflection
32
33.
에너지 보존 법칙- 들어온 것보다 나가는 것이 많을 수
없다!
실제 세계의 물리 효과들 4
34.
실제 세계의 물리효과들 4 - 에너지 보존 법칙 (1)
• 뉴턴 역학계에 속해있다면 모든 물리 현상은 에너지
보존 법칙을 따릅니다.
– 방출되는 에너지는 입력되는 에너지와 같거나 작다.
– 무한동력이 존재하지 않는 이유죠.
34
35.
실제 세계의 물리효과들 4 - 에너지 보존 법칙 (2)
• 빛도 마찬가지!
– 입사되는 빛보다 반사되는 빛의 양이 많을 수 없다!
35
에너지 보존 법칙 무시 에너지 보존 법칙 적용
36.
정리 하자면…
• PBS는이런 실제 세계의 물리 효과들을 표현합니다.
– Microfacet BRDF
• 모든 표면에 존재하는 Specular
• 모든 표면에 존재하는 Fresnel
• 표면 특유의 거칠기에 따른 미세표면 Shadowing과 Maksing
– IBL(Image Based Lighting)
• 실제 세계의 난반사를 시뮬레이션 하는 IBL
• 표면의 거칠기에 따라 변형되는 주변광의 모양
– 그리고 마지막으로 이런 모든 물리적 현상을 에너지 보존 법칙에
따라 표현합니다.
기본적인 셰이더의 구조
•셰이더는 크게 두 부분으로 구성
– Directional Light 부분
– Ambient Light 부분
• 각 부분은 다시 세가지 반사 성분으로 이루어 짐
– Diffuse
– Specular
– Reflection
• 기존 셰이더들은 Reflection 성분을 제외하고 구성된 경우가 많고,
특히 Ambient Light 부분은 Diffuse만 고려
38
39.
물리 기반 셰이더의구조
• PBS 역시 다음과 같은 식으로 구성 됩니다.
– (Directional Light) + (Ambient Light)
• Directional Light는 다음과 같이 구성 됩니다.
– (디퓨즈 부분) + (스페큘러 부분) + (반사 부분)
• 디퓨즈 부분
– (디퓨즈 맵) * (디퓨즈 셰이딩) * (노멀라이징 식)
• 스페큘러 부분
– (Normalizing Term) * (Specular Term) * (Fresnel Term) * (Visibility Term)
• 반사 부분
– 큐브맵을 사용해서 표면 거칠기에 따른 표현 정도를 결정합니다.
39
Lazarov의 PBS (1)
•2011년 Siggraph에서 발표된, Call of Duty - Black ops에서 쓰인
셰이더 입니다.
46
47.
Lazarov의 PBS (2)
•Distribution Term
– Beckmann Specular (m = 거칠기)
– Blinn - Phong Sepcular in logarithmic encoding of the specular
power (n = Specular Power)
47
48.
Lazarov의 PBS (2)
•Distribution Term
– Beckmann Specular (m = 거칠기)
– Blinn - Phong Sepcular in logarithmic encoding of the specular
power (n = Specular Power)
48
49.
Lazarov의 PBS (3)
•Fresnel Term
- 원래 Schlick의 식에서 Cspec은 F0로 옆의 식을 사용한 Fresnel
계수
- n = IOR. Lazarov의 Fresnel에선 Specular Color로 간략화
• Visibility Term
49
다른 PBS들
• Farcry3 에서 사용된 PBS는 Lazarov의 PBS에 Diffuse 부분에 대한
normalizing과 Visibility Term의 간략화가 이뤄진 PBS입니다.
• Sébastien Lagarde의 PBS는 Lazarov의 PBS에 좀더 정밀한 IBL과
이를 위해 새로운 normalizing 식을 도출 해 낸 것입니다.
51
𝜋 or Not𝜋
• Diffuse Term에서
1
𝜋
이 없는 이유
–
1
𝜋
은 Lambertian BRDF 식에 원래 포함되어 있는 부분
– 실제 세계에서 빛을 계산 할때 radiometric하게 빛을 측정
– 게임 라이트는 그렇지 않음!
• Specular Term에서
1
𝜋
이 없는 이유
– Blinn-Phong이나 Phong NDF BRDF모델은 SH기반
– 게임의 Specular는 빛을 받는 부분에서만 계산. 즉, SH 성분은 계산 하지 않음
• 요컨데, 게임에서 쓰이는 조명 시스템은 복사광을 계산하지 않기 때문에 실제
BRDF식에서 존재하는
1
𝜋
을 사용하지 않습니다!
55
PBS를 위한 전제
•PBS를 위해선 엔진이 3가지를 지원해야 합니다.
– Gamma-Correct Rendering
– High Dynamic Range Rendering
– Tone mapping
– UDK는 이 세가지를 모두 지원합니다.
• High Dynamic Range(HDR) Rendering
– UDK의 HDR 랜더링된 이미지는 포스트 프로세스 버퍼에서 접근
가능합니다.
– 어차피 톤 맵도 포스트 프로세스니 상관 없습니다.
– 문제는 Gamma-Correct Rendering인데...
57
UDK의 sRGB 옵션
•UDK는 기본적으로 임포트 되는 모든
텍스쳐가 리니어 컬러 스페이스에서
작업되어 저장된 것으로 상정합니다.
• 그렇기 때문에 외부 프로그램에서 그린
이미지와 똑같이 출력을 하려면 UDK로
임포트 하는 과정에서 역sRGB 보정을 해서
이미지를 밝게 만들어야 합니다.
62
63.
그럼 Specular map은?
•당연히 노멀맵처럼 Linear gamma space여야 합니다.
– 그런데 전 sRGB를 사용했습니다. 왜?
– 너무 어둡거든요!
• 옆의 그림을 보시면 이해가 빠르실겁니다.
– 아스팔트랑 알콜의 스페큘러가 구분이 되십니까?
63
64.
Gamma Correction에 대해정리 하자면…
• UDK에선 입력되는 텍스쳐의 색 공간이 어떻든 무조건 리니어 감마
스페이스에서 제작한 것으로 상정하고 저장한다!
• UDK에선 그래픽 버퍼에서 최종 랜더링을 그릴때 무조건 sRGB로
색공간 변화를 해준다!
• 그래서 입력된 텍스쳐와 같은 결과를 얻으려면 역sRGB를 취해 밝게
저장 해야 한다!
• 즉, 디퓨즈 맵은 그냥 보통 작업하듯이 작업 하면 되고, 스페큘러
맵은 IOR 컬러의 역sRGB로 색공간 변화 준 것으로 작업 한다!
64
일단 Normalmap부터 만들어봅시다.
• Blinn-Phong 모델을 사용하면
DXT1으로 압축된 Normalmap이
문제가 됩니다.
– UDK에선
TC_NormalmapUncommpressed
방식으로 압축 하면 됩니다만
해상도가 떨어집니다.
– 해상도를 유지하면서 블록 압축
현상을 피하고 싶었습니다.
66
Uncompressed DXT1
67.
그래서 약간의 처리를해줍니다.
67
• 6 instructions가 들긴 합니다만
노멀맵의 해상도도 유지하면서 DXT1
압축에 의한 노이즈도 없애 줍니다.
• 심지어 텍스쳐 메모리 차지하는 용량도
DXT1과 차이가 없습니다!
68.
그래서 약간의 처리를해줍니다.
68
• 6 instructions가 들긴 합니다만
노멀맵의 해상도도 유지하면서 DXT1
압축에 의한 노이즈도 없애 줍니다.
• 심지어 텍스쳐 메모리 차지하는 용량도
DXT1과 차이가 없습니다!
69.
큐브맵 LOD 접근하기(1)
• IBL과 표면 거칠기에 따른 반사를
큐브맵의 Mipmap을 통해
처리한다고 말씀 드렸습니다.
– 그런데 UDK에서 어찌 Mipmap에
접근 하누?
– UDK의 머테리얼 에디터도 결국은
HLSL코드 입니다.
– 한번 불러와진 텍스쳐는
HLSL변수로 선언되어 있습니다.
이런 식으로요!
69
SpecualrMap과 GlossinessMap
• -Specular Map
– 하이라이트의 색
– 하이라이트 강도
– 주변 환경(EnvCube)의 반사 세기
– Fresnel 효과 정도
– Diffuse Map의 밝기
• Glossiness Map
– 하이라이트가 맺히는 면적
– 하이라이트 강도
– 주변 환경의 반사 선명도
– 표면의 거칠기
77
78.
Specular 면적에 따른강도의 변화
• 하이라이트가 넓게 - Glossiness가
낮으면
– 맺히는 하이라이트의 강도는
자동으로 줄어듭니다.
• 하이라이트가 좁게 - Glossiness가
높으면
– 맺히는 하이라이트의 강도가
높아집니다.
78
PBS는 이런 겁니다.
•PBS는 실제 세계의 물리 효과들을 표현합니다.
– 모든 표면에 존재하는 Specular
– Fresnel
– 표면 거칠기에 따른 미세표면 Shadowing과 Masking
– IBL(Image Based Lighting)
– 에너지 보존 법칙
88.
PBS의 장점과 단점
•장점
– 적은 텍스처 리소스로 거의 모든
재질을 표현 할 수 있음
– 아티스트가 조절할 부분이 적음
– 다양한 조명 환경에서의 안정적
결과물
– 하나의 셰이더만 있으면 되므로
Differed Renderer에도 적합
– 적용하는데 특별한 신기술이 필요
없음
• 단점
– 아티스트에게 개념을
이해시키기 힘듦
– WYSWYG을 위한 별도의
장치가 필요
– 큐브맵을 자동으로 만들어줄
장치가 필요
– 리얼한 장면만 만들 수 있음