8. 물리 기반 라이팅을 채용
• 퀄리티가 높은 사실적인 랜더링
• HDR 라이팅 환경에서도 외형 일관성이 있다
• 실제 재질관련의 변수들을 사용하기 쉽다
– 아티스트가 사용하는 머트리얼 매개 변수를 단순
화하기 쉽다.
• 현실 세계에서의 물리 법칙이라는 분명한 척
도가 있기 때문에 문제 해결이 쉽거나 확장도
쉽다.
9. 게임 물체의 표면에 빛이 닿으면 반사행동을 균일하게 반사함
디퓨즈 반사는 지향성있고 스펙큘라는 외형에 의존해 근사
10. 비금속의 경우 아래 그림과 같이 확산 디퓨즈(파란 선)와 스펙큘라 반사 (노란선) 모두가 일어남
13. F (l, h) : 프레넬에 의해 빛 벡터와 하프 벡터가 이루는 각도에 따라 스펙큘라의
반사율이 달라짐
14. D (h) : Roughness(거칠기)는 마이크로 패싯이 반사하는 스펙큘라의 확산 정
도 (노말상태)을 변경
15. 기하 감쇠율 G (l, v, h) : 마이크로 패싯 자신에 의해 차폐되는 조명의 양을 구함
16. 적은 재료에서 사실적으로 표현
• 세 가지 매개 변수를 사용
– Albedo (RGB8)
– Roughness (R8)
– Specular Reflectance
(RGB8)
• 디퓨즈 라이팅과 스펙큘라
라이팅(반사율)을 따로 계산
• 스펙큘라 라이팅에서는
Roughness , Specular
Reflectance 이것만을 가지
고 계산
17. Roughness(거칠기) 를 변화 시켰을 때의 스펙큘라라이팅의 외형 변화에
서 거칠기가 거친(0.0)때 노말 반사되고 거칠기가 매끄럽게 (1.0)의 경우
선명한 반사
19. roughness 을 변화 시켰을 때의 각 금속 재료의 외형 변화에서 값이 낮으면 굵고 까칠
까칠한 외형되고 값이 높으면 매끄러운 외형
20. 재질의 물리학적 값 사용
• 재질중에는 실제 측정 된 데이터 값을 사용함
– EX) Diffuse, Specular Reflectance 실제 값 이용
• 디자이너는 실제 값(물리학적으로 계산된 값)
을 이용하여 텍스쳐를 만듬
– Diffuse같은 경우는 사진촬영으로 수정할수 있음
– Specular Reflectance는 BRDF값을 참조
27. Cook Torrance BRDF
• 디퓨즈 라이팅 계산은 k_d * R_d되고 있고,
매우 간단
• 스펙큘라라이팅은 Roughness에 값에 따
라 변화하는 마이크로 패싯과 프레넬과 연
동
• 마이크로 패싯 기하 감쇠
– Smith Schlick Visiblity Function 를 사용
28.
29. •
•
•
Shadow Fall BRDF
Based on Cook-Torrance
– Fresnel
– Smith Schlick Visiblity Function
– Normalization based on Specula
r Reflectance
– Roughness as Specular Importan
ce Cone Angle
Approximate translucency
– Density maps
– Translucency diffusion maps
30. Based on Cook-Torrance
• Fresnel – Schlick Approximation
– inSpecularReflectance + (1.0 - inSpecularReflectance)
* pow(1.0 - inX,5.0)
• Geometric Attenuation Factor – Smith Schlick
Visiblity Function
– (inNdotL * inNdotE) / ( (inNdotL * (1.0 - a) + a) *
(inNdotE * (1.0 - a) + a) )
• Normalization based on Specular Reflectance
– ( 1.0 - inSpecularReflectance ) * saturate(inNdotL)
31. IBL을 사용한 라이팅 방법
• IBL을 계산시 Roughness 값을 가지고만 원하
는 결과를 뽑을 수 없어서 Ambient BRDF 사
용를 사용한거
• Ambient BRDF 사용
– 시점과 법선의 각도, Roughness , Specular
Reflectance 3 개의 값을 BRDF의 평균치를 계산
(라이트를 계산 무시) 반구 적분하여 사전에
Mathematica로 계산하고 3D 텍스쳐로 저장