일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- URP
- Toon Shader
- 벡터
- VR
- URP로 변경
- 프로그래밍 기초
- 개인 바이트
- Private Bytes
- 3d
- OculusMotionVectorPass
- 가상 바이트
- ASW(Application SpaceWarp)
- 작업 집합
- Three(Two) Tone Shading
- AppSW
- Virtual Byte
- 메모리 누수
- ColorGradingLutPass
- working set
- Specular
- Cell Shader
- Cell Look
- 게임 수학
- Cartoon Rendering
- Rim Light
- Windows Build
- C언어
- Today
- Total
WinCNT
PBR(Physically Based Rendering) - BRDF 본문
PBR(Physically Based Rendering) - BRDF
WinCNT_SSS 2022. 7. 15. 20:21Bidirectional Reflectance Distribution Function(BRDF)
BRDF는 한국어로 양방향(쌍방향) 반사(율) 분포 함수라고 할 수 있다
위키피디아에서의 BRDF의 정의는 다음과 같다
BRDF란 불투명한 표면에서 빛이 반사되는 방법을 정의하는 네 가지 실수 변수의 함수
함수로 나타내면 다음과 같다
ω(오메가) = 파라미터, 함수의 입력 값
r = reflectance(반사)
i = incidence(입사),
즉 ωi 는 입사광 벡터(광원을 향하는 벡터)을, ωr 은 반사광 벡터(뷰를 향하는 벡터)를 의미함
위의 함수는 실제 식을 가지고 있지 않으며, 단순히 형태만을 정의한 것이다
즉 아래와 같은 조건을 만족하면 모두 BRDF라고 할 수 있다
(출처: https://lifeisforu.tistory.com/386?category=567143)
- Bidirectional - 빛과 관찰자의 위치가 변경되어도 관계만 같으면 결과가 동일
- Reflectance Distribution - 반사율 분포가 출력 값
- Function - 함수(같은 입력에는 항상 하나의 같은 결과가 나옴)여야 함
- 입력 파라미터 - 광원(을 향하는 벡터)과 시점(을 향하는 벡터)
실제 식에 대해서는 여러 모델이 존재한다
여기서 잠깐 PBR BRDF 관련 주제를 살펴보자
- 에너지 보존 법칙
- Diffuse를 좀 더 자세히 나타내기
- Legacy, 확산, 산란, 반사, 거칠기
- Diffuse와 Albedo, Base Color
- Specular - 모든 것은 반사한다
- Microfacet, Fresnel
- Roughness(Smoothness), Metallic(Dielectric)
위의 주제들은 모두 연관되어 있다
사실 레거시 모델에서도 BRDF는 있었다
확산광(Diffuse)를 정의하는 램버트 모델과
반사광(Specular)를 정의하는 블린 - 퐁 반사 모델이 대표적인 예이다
하지만 이는 BRDF의 한 모델일 뿐이다
BRDF 모델은 다음과 같이 여러 분파가 존재한다
여기서 대표적인 모델이 바로 Cook-Torrance 모델이다
Diffuse BRDF과 Specular BRDF
실제 물리 현상으로 보면 Diffuse든 Specular든 빛의 반사이지만
BRDF는 Diffuse BRDF 와 Specular BRDF 로 나뉜다
(Diffuse와 Specular를 모두 아우르는 모델은 현재 없는 것 같다, 아마?)
Diffuse BRDF
램버트 반사율 : N dot L
사실 Diffuse에도 여러 종류가 있는데 대부분 비슷해서...
보통 램버트 반사율을 사용한다
물론 Legacy 모델처럼 N dot L을 그대로 사용하면 에너지 보존 법칙을 위반하는 경우가 생긴다
왜냐하면 N dot L은 시점(관찰자)가 아닌 쪽으로 가는 빛을 고려하지 않으며
단순히 빛과 표면(의 노멀)의 관계만을 고려한 것이기 때문이다
따라서 나가는 빛의 양을 모두 합한 다음에 그것으로 나눠야 한다
그에 대한 밑은 다음과 같다
(자세한 증명은...미적분이 들어가므로 일단 스킵하자...)
이 외에도 금속, 비금속의 보정이 들어간다고 하는데 그것은 차차 알아봐야겠다
Specular BRDF
대표적인 것이 Cook-Torrance의 Specular BRDF
D, G, F가 필요하므로 추가 설명이 필요하다
Distribution - 미세면의 분포
에너지 보존 법칙
빛이 들어온 만큼 빛난다!
물체는 들어온 빛 이상으로 반사할 수 없다
따라서 Specular의 성분이 커지면 Diffuse의 성분은 작아져야 한다
이 모든 것이 BRDF에 포함되어 있다
(애초에 그것을 설명하기 위해 만들어진 함수이기 때문)
https://lifeisforu.tistory.com/386?category=567143
SSS
'게임 프로그래밍(학습 내용 정리) > 3D Graphic Engine' 카테고리의 다른 글
PBR(Physically Based Rendering) - 프레넬 반사(Fresnel Reflectance) (0) | 2022.07.22 |
---|---|
PBR(Physically Based Rendering) - 미세면과 거칠기, 금속성 (0) | 2022.07.18 |
PBR(Physically Based Rendering) 개론 (0) | 2022.07.13 |
PBR(Physically Based Rendering) - Regacy Model 복습 (0) | 2022.07.13 |
SSAO(Screen-Space Ambient Occlusion) (0) | 2022.06.29 |