일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 프로그래밍 기초
- Private Bytes
- Cartoon Rendering
- VR
- 게임 수학
- ColorGradingLutPass
- OculusMotionVectorPass
- URP
- Cell Shader
- Specular
- Three(Two) Tone Shading
- AppSW
- Windows Build
- 메모리 누수
- Cell Look
- URP로 변경
- 가상 바이트
- 작업 집합
- ASW(Application SpaceWarp)
- Rim Light
- C언어
- working set
- 3d
- Virtual Byte
- Toon Shader
- 개인 바이트
- 벡터
- Today
- Total
WinCNT
PBR(Physically Based Rendering) - 미세면과 거칠기, 금속성 본문
PBR(Physically Based Rendering) - 미세면과 거칠기, 금속성
WinCNT_SSS 2022. 7. 18. 15:08레거시 모델에서는 거칠기나 금속성에 대해서 팩터로서 고려하지 않았다
그래서 거칠기나 금속성을 표현하기 위해서는
텍스처나 노멀맵에 해당 정보들을 포함시켜서 구현했을 것이다
하지만 PBR에는 미세면과 거칠기, 금속성을 팩터로서 고려한다
Microfacet and Roughness
미세면(Microfacet, 혹은 Microface)
PBR에서는, 계산의 대상이 되는 한 지점(Face, Vertext, Pixel 등등)에
무수히 많은 미세면이 존재하고, 그곳에서 빛이 반사한다는 모델을 채용하고 있다
(레거시 모델에서는 그저 N dot L 등의 처리를 하고 끝났을 것이다)
물론 미세면 또한 어디까지나 모델이며 근사(통계적으로 구한 비율)이며
(Cook-Torrance의)BRDF의 미세면 분포 함수(D)와 기하 감쇠율(G)의 항과 관련되어 있다
미세면 분포 함수 D(Normal Distribution)항에 대해서
참고로 Normal Distribution이지만 정규 분포란 뜻이 아니다
미세면의 기울기(Normal로 추론)에 대한 분포(Distribution) 함수란 의미이다
PBR에서는 계산의 대상이 되는 한 지점, 즉 표면에는 무수히 많은 미세면이 존재한다고 가정한다
각 미세면은 서로 다른 노멀을 가지고 있고, 정반사가 발생한다
하지만 실제로 미세면을 구현한 것은 아니기 때문에,
미세면의 노멀 벡터(표면의 노멀와 구별하기 위해 주로 m이라고 함)의 정확한 값을 알 수는 없다
그렇지만 빛 벡터(l)와 시점 벡터(v)의 하프 앵글 벡터(h)와 미세면의 노멀 벡터(m)로
표면에서 시점 벡터에게 정반사를 보여주는 미세면이 얼마나 분포하는지에 대해서는 알아볼 수 있다
(이것이 D의 값의 본질이기도 하다)
정반사는 입사각과 반사각이 일치하는 반사이며,
하프 앵글 벡터(h)와 미세면의 노멀 벡터(m)이 일치하면 정반사가 발생한다
미세면이 거칠다면 정반사보다는 난반사가 많이 발생할 것이고,
부드럽다면 (표면과 미세면의 노멀이 비슷하다는 뜻이므로) 정반사가 커질 것이다
즉 미세변 분포 함수의 목적은 다음과 같다고 할 수 있다
빛(을 향하는 )벡터(l)와 시점(을 향하는 )벡터(v)가 있을 때, 그 하프 벡터(h)와 동일한 미세면의 노멀(m)은 얼마나 존재하는가
G(Geometry Attenuation)항에 대해서
Geometry Attenuation는 한국어로 기하 감쇄 계수를 뜻한다
미세면 분포 함수에서 발생한 미세면에서의 정반사가 모두 가시 광선에 기여하지는 않는다
일부는 Shadowing과 Masking에 의해서 기여하지 못하는 경우도 존재한다
(현실 세계에서는 Shadowing과 Masking된 빛도 기여할 수는 있지만 미세한 값이라고 가정해 무시한다)
G는 미세면에 입사한 빛이 다른 미세면에 의해 감쇠되는 이러한 현상을 고려하는 항이다
Metallicity(Metalic / Non-Metalic)
PBR에서는 금속성과 비금속성의 재질을 나눈다
왜냐하면 금속성은 특별한 재질이기 때문이다
특히 금속은 빛을 반사할 뿐 흡수하지 않는다
따라서 Diffuse(레거시의 Diffuse 아님)가 발생하지 않으며,
Specular 반사 성분 또한 고유한 색을 띈다
반면 비금속인 경우는 Diffuse가 고유한 재질의 색을 띄며
Specular는 흰색(회색)을 띈다
보통은 금속이냐 아니냐라는 이진 값을 가져야 하는데
금속과 비금속이 섞여 있는 물체도 근사하기 위해 0~1의 값을 갖는다
(금속과 비금속의 융합이 아닌 섞여 있는 상태를 의미함)
좀 더 자세히 알아야 할 것들
Diffuse의 의미
표면이 거칠어서 난반사해서 Diffuse가 생긴다? PBR에서는 말도 안 되는 소리
그럼 유전체를 연마하면 금속처럼 되는가? 물론 그럴리 없지
Specular의 의미
Everything is shining
모든 것은 빛나며 스펙큘러를 가짐
Legacy에서 정반사되서 눈에 들어오는 빛을 스펙큘러라고 하지만 PBR에서는 완전히 다른 개념이다
주의점
용어의 사용이 점점 변화하고 있기 때문에 주의해야 한다
예를 들어 예전에는 Diffuse라고 쓰였던 부분이 Albedo로 변하거나,
Albedo가 애매함을 부를 수 있다고 Base Color란 단어로 대체하는 경우도 있다
일반적으로 Albedo는 물질의 고유한 색, 빛의 영향을 전부 배제한 색을 의미한다
본래의 의미의 Diffuse는 빛이 물체에 흡수되서 내부에서 산란되고 나오는 빛을 의미한다
참고 사이트
https://lifeisforu.tistory.com/351?category=567143
SSS
'게임 프로그래밍(학습 내용 정리) > 3D Graphic Engine' 카테고리의 다른 글
PBR(Physically Based Rendering) - Global Illumination 1 (0) | 2022.07.25 |
---|---|
PBR(Physically Based Rendering) - 프레넬 반사(Fresnel Reflectance) (0) | 2022.07.22 |
PBR(Physically Based Rendering) - BRDF (0) | 2022.07.15 |
PBR(Physically Based Rendering) 개론 (0) | 2022.07.13 |
PBR(Physically Based Rendering) - Regacy Model 복습 (0) | 2022.07.13 |