이미 인터넷 상에는 디즈니 BRDF 나 BSDF 에 관한 기술자료들이 넘칠텐데요… 3년 전쯤에 중국인 테크아티스트가 정리 해 논 토픽을 한글화 해 봤습니다.
PBR-White-Paper/content/part 3/README.md at master · QianMo/PBR-White-Paper (github.com)
위 링크는 원문.
물리 기반 렌더링 (PBR) 기술은 Disney가 SIGGRAPH 2012에서 유명한 "Disney Principled BRDF"를 제안한 이래 높은 사용 편의성과 편리한 워크플로우로 인해 영화 및 게임 산업에서 널리 사용되며 차세대의 고품질 렌더링 기술과 동의어가 되었습니다.
이 기사의 주요 내용은이 물리 기반 렌더링 혁명을 촉진 한 "Disney Principled BRDF"와 2015 년에 제안 된 "Disney BSDF (Disney BSDF)"에 대한 심도있는 논의 및 요약입니다.
전문의 주요 내용은 다음과 같습니다.
- 디즈니와 물리 기반 렌더링의 개발
- Disney가 채택한 BRDF 시각화 솔루션 및 도구
- 측정 된 재료 데이터베이스에 대한 Disney의 관찰
- 확산의 관찰
- 스펙 큘러 D 관찰
- 스페 큘러 F 관측
- 스페 큘러 G 관찰
- 직물 재료의 관찰 결론
- 무지개 빛깔의 관찰 결론
- Disney Principled BRDF
- Disney Principled BRDF의 매개 변수
- Disney Principled BRDF의 색상 모델
- 핵심 BRDF 모델
- 확산 항목 (확산) : Disney Diffuse
- 정규 분포 조건 (정규 D) : GTR
- 프레 넬 항 (Specular F) : Schlick Fresnel
- 기하 아이템 (스페셜 G) : Smith-GGX
- 디즈니 프린세스 레이어 소재
- Disney Principled BRDF의 구현 코드
- Disney BSDF
이 기사의 시작 부분에서이 기사의 핵심 내용을 요약 한 두 가지 마인드 맵이 여전히 먼저 개시 됩니다.
1. 디즈니와 물리 기반 렌더링의 개발
이 시리즈의 앞부분에서 언급했듯이 실제 기반 렌더링은 실제로 20 세기 초에 그래픽 산업에서 약간의 진전을 보였으며 2010 년에는 이미 SIGGRAPH에 대한 "SIGGRAPH 2010 과정 : 물리적 기반 음영"과정에 대한 공개 토론이있었습니다. "영화 및 게임 제작의 모델"이며, 2012 ~ 2013 년이 되어서야 일반인의 시야에 공식적으로 진입했으며 점차 영화와 게임 산업에서 널리 사용되었습니다.
초기 물리 기반 렌더링 모델에는 복잡하고 모호한 물리적 매개 변수가 많이 포함되어있어 아티스트의 이해, 사용 및 빠른 출력에 도움이되지 않기 때문입니다.
디즈니는이 PBR 혁명의 중요한 발기인입니다.
영화 "Wreck-It Ralph"를 제작하는 동안 Disney Animation Studio는 물리 기반 렌더링에 대한 체계적인 연구를 수행하고 영화의 거의 모든 표면에 사용할 수있는 새로운 BRDF 모델을 개발했습니다. (Disney Principled BRDF.)
그 후 Disney Animation Studio의 Brent Burley는 SIGGRAPH 2012에서 유명한 "Disney에서 물리 기반 음영 처리"를 수행하고 Disney Principle BRDF 를 공식 제안했습니다. 물리적 특성은 매우 적은 수의 직관적 변수 (예 : 금속 및 거칠기)로 표현되어 영화 산업 및 게임 산업에서 많은 센세이션을 일으켰습니다. 그 이후로 물리 기반 렌더링은 공식적으로 대중의 시야에 들어 왔습니다.
그림 SIGGRAPH 2012 "Disney의 물리 기반 셰이딩"
2012 년 Disney Principled BRDF에서 영감을 얻은 주류 게임 엔진은 기존 렌더링 워크 플로우에서 물리 기반 렌더링 워크 플로우로 전환하기 시작했습니다.
다음은 주류 게임 엔진이 물리 기반 렌더링으로 이동하기위한 타임라인입니다.
- [SIGGRAPH 2013] UE4 : "언리얼 엔진 4의 리얼 쉐이딩"
- [SIGGRAPH 2014] 동상 (Frost) : "동상을 PBR로 이동"
- [GDC 2014] Unity : "Unity의 물리적 기반 음영"
아래에서는 SIGGRAPH 2012에서 Disney가 실시한 "Disney의 물리 기반 음영"대화를 공식적으로 분석, 수정 및 요약하여 게임 및 영화 산업에서 물리 기반 렌더링 기술 대중화의 원인에 대해 심층적으로 분석 하겠습니다.
- Disney가 채택한 BRDF 시각화 솔루션 및 도구
BRDF 시각화 측면에서 Disney는 다음과 같이 요약 할 수있는 세 가지 도구 및 리소스 공유를 제안했습니다.
- MERL 100 BRDF 텍스처 라이브러리 . Matusik et al. [Matusik et al. 2003]에 의해 포착 된 100 개의 등방성 BRDF 재료 샘플 라이브러리 세트. 페인트, 목재, 금속, 직물, 석재, 고무, 플라스틱 및 기타 합성 재료를 포함한 다양한 재료를 다룹니다. 학업 및 연구를위한 무료 라이센스.
- MERL BRDF 메인 스테이션 : http : // merl.com/brdf
- 데이터베이스 주소 : HTTPS : // people.csail.mit.edu/wo jciech / BRDFDatabase /
- BRDF 탐색기 . 분석, 비교 및 새로 개발 된 BRDF 모델을 위해 Disney에서 개발 한 시각화 도구입니다. 이 도구는 재료 분석 및 측정, 기존 모델 비교 및 새 모델 개발에 매우 유용한 가치를 제공합니다.
- 공식 홈페이지 : https : // www. disneyanimation.com/tec hnology / brdf.html
- GitHub 주소 : https : // github.com/wdas/brdf
- BRDF 이미지 슬라이스 . θh 및 θd를 수평 축 및 수직 축으로 사용하여 관찰 된 재료의 BRDF를 모델링하는 2D 이미지 슬라이스.
3. MERL 재료 데이터베이스에 대한 Disney의 관찰
Disney Principled BRDF가 제안되기 전에 Disney는 이미 많은 준비 작업을 수행했으며 그 중 주요 작업은 재료 데이터베이스를 관찰하고 이론적으로 분석하는 것이 었습니다. 다른 항목의 분류에 따르면 다음과 같이 6 가지 부분으로 요약 할 수 있습니다.
- 확산의 관찰
- 스펙 큘러 D 관찰
- 스페 큘러 F 관측
- 스페 큘러 G 관찰
- 직물 재료의 관찰 결론
- 무지개 빛깔의 관찰 결론
다음은 이들을 각각 요약합니다.
3.1 확산의 관찰
- 확산 (Diffuse)은 표면으로 굴절되어 흩어져 부분적으로 흡수되어 표면에서 방출 된 빛을 다시 방출 함을 의미합니다.
- 유색 비금속 재료의 모든 나가는 부분은 확산 반사로 간주 될 수 있습니다.
- 관찰 결과 소수의 재료의 확산 반사 성능은 Lambert 반사 모델과 일치합니다. 즉,보다 정확한 확산 반사 모델이 필요합니다.
- 관찰 결과, 재귀 반사를 방목하는 것은 명백한 착색 현상이 있음을 보여줍니다.
- 거칠기는 프레 넬 굴절에 영향을 미치며 Lambert와 같은 일반적인 확산 반사 모델은이 영향을 무시합니다.
- Oren-Nayar 모델 (1995)은 거친 확산 반사 표면에서의 역 반사 증가가 확산 반사 모양을 평평하게 할 것이라고 예측합니다. 그러나, 역 반사 피크는 측정 된 데이터만큼 강하지 않으며, 거칠게 측정 된 물질은 일반적으로 확산 반사의 평탄화를 나타내지 않습니다.
- 표면 아래 산란 이론에서 파생 된 Hanrahan-Krueger 모델 (1993)도 확산 반사 모양의 평탄화를 예측하지만 가장자리에는 충분한 피크가 없습니다. Oren-Nayar와 비교하여이 모델은 완벽하게 매끄러운 표면을 제공합니다. 다음 그림은 Oren-Nayar, Hanrahan-Krueger 및 Lambert 모델을 비교합니다.
3.2 거울 D 관측
- 미세 분포 함수 D (θh)는 측정 된 물질의 역 반사 반응으로부터 관찰 될 수 있습니다.
- 대부분의 MERL 재질에는 거울 로브가 있으며 꼬리는 기존의 거울 모델보다 훨씬 길다. 즉, 반사 분포 항목은 더 넓은 꼬리가 필요합니다.
- GGX는 다른 분포보다 꼬리가 길지만 여전히 크롬 샘플의 하이라이트를 포착 할 수 없습니다.
그림 MERL 여러 금속 분포와 비교 한 크롬 금속 (크롬). 왼쪽 : 미러 크레스트의 로그 스케일 플롯); 검은 색 곡선은 MERL 크롬을 나타내고, 빨간색 곡선은 GGX 분포 ( α = 0.006)를 나타내며 녹색 곡선은 Beckmann 분포 ( m = 0.013)를 나타내며 파란색 곡선은 Blinn Phong ( n = 12000), 여기서 녹색 곡선과 파란색 곡선은 기본적으로 일치합니다. 오른쪽 : 크롬, GGX 및 Beckmann 분포의 포인트 광원 반응.
3.3 거울 F의 관찰
- 프레 넬 반사 계수 F (θd)는 광 및 뷰 벡터가 분리 될 때 거울 반사의 증가를 나타낸다.
- 탄젠트가 입사 될 때 매끄러운 표면은 거의 100 % 정반사를 갖습니다.
- 거친 표면의 경우 100 % 정반사를 얻을 수 없지만 반사율은 여전히 더 높아집니다.
- 각 재료는 글 렌싱 각도 근처에서 반사율이 약간 증가합니다.
- glancing angle incidence 근처에있는 많은 곡선의 가파름은 이미 Fresnel 효과의 예상 값보다 큽니다.
3.4 반사 G 관측
- 기하학적 용어의 영향은 방향성 알베도에 대한 영향으로 간접적으로 볼 수 있습니다
- 대부분의 재료의 방향성 알베도는 처음 70도에 대해 비교적 평평하며, 접선 입사에서의 반사율은 표면 거칠기와 밀접한 관련이 있습니다.
- 기하 항목의 선택은 반사율에 영향을 미치며 결과적으로 표면의 모양에 영향을 미칩니다.
- "G 없음"모델이라고하는 G 항과 1 / cosθ1 cosθv 항을 완전히 생략 한 모델은 글 랜싱 각도에서 반응이 너무 어둡습니다.
여러 정반사 기하학적 모델의 반사도 모든 그림에서 동일한 D (GGX / TR) 및 F 항이 사용됩니다. 왼쪽 : 매끄러운 표면 (α = 0.02); 오른쪽 : 거친 표면 (α = 0.5). 그 중 "No G"모델은 G 및 1 / cosθ1 cosθv 항의 계산을 제거했습니다.
3.5 직물 재료의 관찰 결론
- 많은 직물 샘플은 글 랜싱 각도에서 정반사 색조를 나타내며, 또한 매우 거친 재료보다 강한 프레 넬 피크를가집니다.
- 천에는 색이 반사되는 반사가 있는데, 이는 외곽선 근처에서 재료의 색을 얻는 투과성 섬유로 인한 것으로 이해 될 수 있습니다.
- 글 렌싱 각도에서 천의 여분의 광택이 증가하며, 이는 일반적인 마이크로 평면 모델의 예측 범위를 벗어납니다.
3.6 무지개 빛깔의 관찰 결론
- 색상 변경 페인트는 (θh, θd) 공간에서 연속적인 색상 패치를 보여 주며 φd에 대한 컷의 의존성은 최소화됩니다.
- 거울 표면의 피크로부터 멀어지는 무지개 색의 반사율은 매우 작으므로, 무지개 색은 거울 반사 현상으로 이해 될 수있다.
- θh 및 θd의 함수로 미러 색조를 변조하고 작은 텍스처 맵으로 무지개 색을 모델링 할 수 있습니다.
4. 디즈니 원칙 BRDF (Disney Principled BRDF)
4.1 디즈니 원칙 BRDF
Disney Principles의 BRDF가 2012 년에 제안되기 전에 물리 기반 렌더링에는 많은 복잡하고 직관적이지 않은 매개 변수가 필요했지만 현재 PBR의 장점은 분명하지 않습니다.
2012 년, Disney는 그들의 채색 모델이 반드시 예술적 지시 (Art Directable)이며 물리적으로 정확할 필요는 없으며, 마이크로 플레인 BRDF에 대한 엄격한 조사를 수행했으며 명확하고 간단한 솔루션.
디즈니의 철학은 엄격한 물리적 모델이 아닌 "사용하기 쉬운"모델을 개발하는 것입니다. 이 예술 중심의 사용 편의성으로 인해 미술 반 친구는 매우 적은 수의 직관적 매개 변수와 매우 표준화 된 워크 플로를 사용하여 수많은 다른 재료의 사실적인 렌더링을 신속하게 실현할 수 있습니다. 전통적인 쉐이딩 모델에서는 불가능한 작업입니다.
Disney Principled BRDF (Disney Principled BRDF)의 핵심 원칙은 다음과 같습니다.
- 물리적 클래스의 모호한 파라미터 대신 직관적 인 파라미터를 사용해야합니다.
- 매개 변수는 가능한 한 적어야합니다.
- 적절한 범위 내에서 매개 변수는 0-1이어야합니다.
- 의미있는 경우 매개 변수가 정상적이고 합리적인 범위를 초과하도록 허용하십시오.
- 모든 매개 변수 조합은 가능한 강력하고 합리적이어야합니다.
본질적으로 Disney Principled BRDF 모델은 금속과 비금속의 하이브리드 모델이며, 그 결과는 금속을 기반으로 한 금속 BRDF와 비금속 BRDF 사이의 선형 보간입니다.
이 새로운 렌더링 개념 세트는 금속 및 비금속 재료의 표현을 통합하므로 몇 가지 매개 변수만으로 대부분의 재료를 자연스럽게 처리 할 수 있으며 매우 사실적인 렌더링 품질을 얻을 수 있습니다.
이러한 이유로 PBR의 금속 / 거칠기 워크 플로우에서 baseColor 맵에는 금속 및 비금속 재료 데이터가 모두 포함됩니다.
- 금속 반사율 값
- 비금속 확산 색상
4.2 Disney Principled BRDF의 매개 변수
위의 개념을 바탕으로 Disney Animation Studio는 각 추가 사항을 확인하고 마침내 아래 설명 된 색상 매개 변수 (baseColor)와 10 개의 스칼라 매개 변수를 얻었습니다.
- baseColor (고유 색상) : 일반적으로 텍스처 매핑에 의해 제공되는 표면 색상입니다.
- 서브 서피스 : 서브 서피스를 사용하여 확산 모양을 근사화합니다.
- 금속성 (금속성) : 금속성 (0 = 유전체, 1 = 금속). 이것은 서로 다른 두 모델 간의 선형 혼합입니다. 금속 모델에는 확산 반사 성분이 없으며 기본 색상과 동일한 유색 입사 정반사가 있습니다.
- 정반사 (정반사 강도) : 입사 정 반사량. 굴절률을 대체하는 데 사용됩니다.
- specularTint (정반사 색상) : 기본 색상 (기본 색상) 입사 거울 반사의 색상 제어에 사용되는 아트 컨트롤에 대한 양보입니다. 이 반사 반사는 여전히 무색입니다.
- 거칠기 : 표면의 거칠기, 확산 및 정반사 제어.
- 이방성 (anisotropic intensity) : 이방성의 정도. 반사 하이라이트의 종횡비를 제어하는 데 사용됩니다. (0 = 등방성, 1 = 최대 이방성)
- sheen (광택) : 주로 직물에 사용되는 추가 방목 구성 요소.
- sheenTint (광택 색상) : 광택 (광택)의 색상 제어.
- 클리어 코트 (클리어 바니시 강도) : 특수 목적을위한 두 번째 거울 로브.
- clearcoatGloss (투명 광택) : 투명 코팅의 광택을 제어합니다. 0 = "새틴"모양, 1 = "광택"모양.
4.3 Disney Principled BRDF의 채색 모델 4.3.1 핵심 BRDF 모델 핵심 BRDF 모델의 경우 Disney는 일반적인 마이크로 패싯 Cook-Torrance BRDF 음영 모델을 사용합니다.
그들 중 :
- 확산 확산
- 다음과 같은 반사 항목입니다.
- D는 미세 평면 분포 함수이며, 주로 정점 피크의 모양을 담당합니다.
- F는 프레 넬 반사 계수
- G는 기하학적 감쇠 / 그림자입니다.
이러한 각 항목은 아래에 설명되어 있습니다.
4.3.2 확산 항목 (확산) : Disney Diffuse
디즈니는 램버트 확산 반사 모델은 일반적으로 가장자리가 너무 어둡고 프레 넬 팩터를 추가하여 물리적으로 더 합리적으로 만들려고하지만 더 어둡게 만들 것이라고 말했다.
따라서 Merl 100 재질 라이브러리의 관찰을 바탕으로 Disney는 확산 반사에 대한 새로운 경험적 모델을 개발하여 부드러운 표면과 거친 표면의 확산 프레 넬 그림자 사이를 부드럽게 전환합니다.
사고 측면에서 Disney는 Schlick Fresnel 근사와 수정 된 재귀 반사 반사 반응을 사용하여 단순히 0이 아닌 거칠기 값으로 결정된 특정 값을 달성했습니다.
Disney Diffuse 모델의 공식은 다음과 같습니다.
그중에서도
위의 Disney Diffuse에 대한 Shader 구현 코드는 다음과 같습니다.
// [Burley 2012, "Physically-Based Shading at Disney"]
float3 Diffuse_Burley_Disney( float3 DiffuseColor, float Roughness, float NoV, float NoL, float VoH )
{
float FD90 = 0.5 + 2 * VoH * VoH * Roughness;
float FdV = 1 + (FD90 - 1) * Pow5( 1 - NoV );
float FdL = 1 + (FD90 - 1) * Pow5( 1 - NoL );
return DiffuseColor * ( (1 / PI) * FdV * FdL );
}
4.3.3 정규 분포 항 (정규 D) :
GTR 인기있는 모델에서 GGX는 가장 긴 꼬리를 가지고 있습니다.
GGX는 실제로 Blinn (1977)이 존경하는 Trowbridge-Reitz (TR) (1975) 배포판과 동일합니다. 그러나 많은 재료, 심지어 GGX 분포에서도 여전히 꼬리가 충분하지 않습니다. Trowbridge-Reitz (TR)의 공식은 다음과 같습니다.
그들 중 :
- c는 스케일링 상수
- α는 0과 1 사이의 값을 갖는 거칠기 매개 변수입니다 .α = 0 은 완전히 부드러운 분포 (예 : θh = 0 일 때 델타 함수)를 생성하고 α = 1은 완전히 거칠거나 균일 한 분포를 생성합니다.
Berry (1923)의 분포 함수는 Trowbridge-Reitz 분포와 매우 유사하지만 지수는 2 대신 1이므로 꼬리가 더 길어집니다.
Disney는 Trowbridge-Reitz와 Berry의 형태를 비교하여 비슷한 형태를 가지고 있지만 그 힘이 다르다는 것을 발견하여 Disney는 Trowbridge-Reitz를 N의 힘으로 승격시키고 Generalized-Trowbridge- Reitz 분포, GTR :
위의 공식에서 확인할 수 있습니다.
- γ = 1 인 경우 GTR은 베리 분포입니다.
- γ = 2 인 경우 GTR은 Trowbridge-Reitz 분포입니다.
다음은 다양한 γ 값과 θh의 GTR 분포 곡선 사이의 관계를 보여주는 그래프입니다.
다양한 γ 값과 θh 의 GTR 분포 곡선 간의 관계
또한 Disney Principled BRDF는 두 개의 고정 거울 로브 (specular lobe)를 사용하며 둘 다 다음과 같이 요약 할 수있는 GTR 모델을 사용합니다.
- 기본 로브
- γ = 2의 GTR 사용 (즉, GGX 분포)
- 기본 재료 (기본 재료)의 반사를 나타냅니다.
- 이방성 또는 등방성 금속 또는 비금속 일 수 있음
- 이차 로브
- γ = 1의 GTR 사용 (예 : 베리 분포)
- 기본 재료에 ClearCoat 레이어의 반사를 나타냅니다
- 일반적으로 등방성 비금속 재료, 즉 ClearCoat 레이어
다음은 γ = 1 및 γ = 2 인 경우 GTR 분포의 셰이더 구현 코드입니다.
// Generalized-Trowbridge-Reitz distribution
float D_GTR1(float alpha, float dotNH)
{
float a2 = alpha * alpha;
float cos2th = dotNH * dotNH;
float den = (1.0 + (a2 - 1.0) * cos2th);
return (a2 - 1.0) / (PI * log(a2) * den);
}
float D_GTR2(float alpha, float dotNH)
{
float a2 = alpha * alpha;
float cos2th = dotNH * dotNH;
float den = (1.0 + (a2 - 1.0) * cos2th);
return a2 / (PI * den * den);
}
그리고 비등방 버전 :
float D_GTR2_aniso(float dotHX, float dotHY, float dotNH, float ax, float ay)
{
float deno = dotHX * dotHX / (ax * ax) + dotHY * dotHY / (ay * ay) + dotNH * dotNH;
return 1.0 / (PI * ax * ay * deno * deno);
}
4.3.4 프레 넬 항 (Specular F) :
Schlick Fresnel Fresnel 항 (Specular F)의 관점에서 Disney는 Schlick Fresnel 근사값이 완전한 Fresnel 방정식보다 충분히 정확하고 훨씬 간단하다고 말했으며, 다른 요인으로 인해 Schlick Fresne 근사값에 의해 발생한 오차는 다른 요인으로 인한 오차보다 훨씬 작습니다. Schlick Fresnel 근사 공식은 다음과 같습니다.
그들 중 :
- 상수 F0은 수직 입사에서의 정 반사율을 나타냅니다.
- θd는 반 벡터 h와 사이트 벡터 v 사이의 각도입니다.
다음은 Schlick Fresnel의 Shader 구현 코드입니다.
// [Schlick 1994, "An Inexpensive BRDF Model for Physically-Based Rendering"]
float3 F_Schlick(float HdotV, float3 F0)
{
return F0 + (1 - F0) * pow(1 - HdotV , 5.0));
}
일반적으로 pow (xx, 5.0) 호출을 대체하여 pow 함수가 가져 오는 약간 비싼 성능 오버 헤드를 절약하기 위해 사용자 정의 Pow5 도구 함수를 구현하는 것이 좋습니다. Pow5 함수 구현은 다음과 같이 매우 간단합니다.
half Pow5(half v)
{
return v * v * v * v * v;
}
또한 Disney는 SIGGRAPH 2015에서이 항목을 수정하여 미디어 간의 상대 IOR이 1에 가까울 때 Schlick 근사 오차가 크다고 제안하면서 정확한 Fresnel 방정식을 직접 사용할 수 있습니다.
4.3.5 기하학적 항목 (스페셜 G) : Smith-GGX 기하 용어 (스페 큘러 G)의 경우, 1 차 스페 큘러 로브의 경우 Disney는 Walter 근사법을 참조하고 Smith GGX에서 파생 된 G 용어를 사용하고 거친 표면의 극한 게인을 줄이기 위해 거칠기 매개 변수를 다시 매핑합니다. 즉, α를 [0, 1]에서 [0.5, 1]로 다시 매핑하면 α의 값은 (0.5 + 거칠기 / 2) ^ 2입니다. 따라서 기하학적 항목의 거칠기가 더 부드럽게 변경되어 아티스트에게 더 편리합니다. 다음은 Smith GGX의 기하학적 항목에 대한 표현입니다.
또한, 바니시 레이어의 2 차 로브에 대해 Disney는 Smith G를 사용하여 파생하지 않고 0.25의 고정 거칠기로 GGX의 G 항을 직접 사용하므로 합리적이고 좋은 시각 효과를 얻을 수 있습니다. . 기하 항목의 셰이더 구현 코드는 다음과 같습니다.
// 스미스 GGX G 아이템, 다양한 동질 버전
float smithG_GGX(float NdotV, float alphaG)
{
float a = alphaG * alphaG;
float b = NdotV * NdotV;
return 1 / (NdotV + sqrt(a + b - a * b));
}
// 스미스 GGX G 아이템, 다양한 이방성 버전
// Derived G function for GGX
float smithG_GGX_aniso(float dotVN, float dotVX, float dotVY, float ax, float ay)
{
return 1.0 / (dotVN + sqrt(pow(dotVX * ax, 2.0) + pow(dotVY * ay, 2.0) + pow(dotVN, 2.0)));
}
// GGX 바니시 지오메트리
// G GGX function for clearcoat
float G_GGX(float dotVN, float alphag)
{
float a = alphag * alphag;
float b = dotVN * dotVN;
return 1.0 / (dotVN + sqrt(a + b - a * b));
}
마찬가지로 디즈니도 SIGGRAPH 2015에서 G 아이템을 수정했습니다. Heitz 분석 [Heitz 2014]에 기초하여 그들은 메인 미러 로브의 Smith G 거칠기의 특수한 리매핑을 제거하고 Heitz 이방성 G를 채택했습니다. 이 글은 나중에이 개정판에 대해 더 심도있게 논의 할 것입니다.
5. Disney Principled Layers 소재
Disney Principled Layers Material의 핵심 설계 원칙은 복잡한 머티리얼 모양을 달성하기 위해 텍스쳐 마스크를 기반으로 다른 머티리얼간에 선형 믹싱을 수행하기 위해 모든 파라미터를 적극적으로 보간해야한다는 것입니다. 이것의 장점은 모든 매개 변수가 정규화되고 최소한 지각 적으로 선형이며 재료는 일반적으로 매우 직관적 인 방식으로 보간된다는 것입니다. 아래와 같이 10 개의 파라미터가 모두 선형 보간됩니다.
그림은 Disney Principled Shading Model을 사용하여 반짝이는 금속성 금색과 파란색 고무를 선형으로 보간합니다. 창작 과정에서 아티스트는 일반적으로 재료 사전 설정 목록에서 선택한 다음 텍스처 마스크를 사용하여 단순히 혼합합니다. 실시간으로이 구성표가 매우 성공적이며 워크 플로우를 크게 단순화하고 재료의 일관성을 개선하며 셰이더 계산을 매우 효율적으로 수행 할 수 있습니다. Disney에서 사용하는 해당 레이어 셰이더의 UI는 다음과 같습니다.
그림은 머티리얼 레이어의 쉐이더 에디터 스크린 샷입니다. 마스크 표현식의 변수는 공간에서 변경되는 셰이더 모듈, 일반적으로 마스크 텍스처 맵을 나타냅니다.
6, Disney Principled BRDF 구현 코드
Disney Principled BRDF가 2012 년에 제안되었을 때 Disney는 GitHub에서 오픈 소스 BRDF 탐색기와 Disney Principled BRDF의 소스 코드를 공개했습니다. GitHub 링크는 다음과 같습니다.
::begin parameters
color baseColor .82 .67 .16
float metallic 0 1 0
float subsurface 0 1 0
float specular 0 1 .5
float roughness 0 1 .5
float specularTint 0 1 0
float anisotropic 0 1 0
float sheen 0 1 0
float sheenTint 0 1 .5
float clearcoat 0 1 0
float clearcoatGloss 0 1 1
::end parameters
::begin shader
const float PI = 3.14159265358979323846;
float sqr(float x) { return x*x; }
float SchlickFresnel(float u)
{
float m = clamp(1-u, 0, 1);
float m2 = m*m;
return m2*m2*m; // pow(m,5)
}
float GTR1(float NdotH, float a)
{
if (a >= 1) return 1/PI;
float a2 = a*a;
float t = 1 + (a2-1)*NdotH*NdotH;
return (a2-1) / (PI*log(a2)*t);
}
float GTR2(float NdotH, float a)
{
float a2 = a*a;
float t = 1 + (a2-1)*NdotH*NdotH;
return a2 / (PI * t*t);
}
float GTR2_aniso(float NdotH, float HdotX, float HdotY, float ax, float ay)
{
return 1 / (PI * ax*ay * sqr( sqr(HdotX/ax) + sqr(HdotY/ay) + NdotH*NdotH ));
}
float smithG_GGX(float NdotV, float alphaG)
{
float a = alphaG*alphaG;
float b = NdotV*NdotV;
return 1 / (NdotV + sqrt(a + b - a*b));
}
float smithG_GGX_aniso(float NdotV, float VdotX, float VdotY, float ax, float ay)
{
return 1 / (NdotV + sqrt( sqr(VdotX*ax) + sqr(VdotY*ay) + sqr(NdotV) ));
}
vec3 mon2lin(vec3 x)
{
return vec3(pow(x[0], 2.2), pow(x[1], 2.2), pow(x[2], 2.2));
}
vec3 BRDF( vec3 L, vec3 V, vec3 N, vec3 X, vec3 Y )
{
float NdotL = dot(N,L);
float NdotV = dot(N,V);
if (NdotL < 0 || NdotV < 0) return vec3(0);
vec3 H = normalize(L+V);
float NdotH = dot(N,H);
float LdotH = dot(L,H);
vec3 Cdlin = mon2lin(baseColor);
float Cdlum = .3*Cdlin[0] + .6*Cdlin[1] + .1*Cdlin[2]; // luminance approx.
vec3 Ctint = Cdlum > 0 ? Cdlin/Cdlum : vec3(1); // normalize lum. to isolate hue+sat
vec3 Cspec0 = mix(specular*.08*mix(vec3(1), Ctint, specularTint), Cdlin, metallic);
vec3 Csheen = mix(vec3(1), Ctint, sheenTint);
// Diffuse fresnel - go from 1 at normal incidence to .5 at grazing
// and mix in diffuse retro-reflection based on roughness
float FL = SchlickFresnel(NdotL), FV = SchlickFresnel(NdotV);
float Fd90 = 0.5 + 2 * LdotH*LdotH * roughness;
float Fd = mix(1.0, Fd90, FL) * mix(1.0, Fd90, FV);
// Based on Hanrahan-Krueger brdf approximation of isotropic bssrdf
// 1.25 scale is used to (roughly) preserve albedo
// Fss90 used to "flatten" retroreflection based on roughness
float Fss90 = LdotH*LdotH*roughness;
float Fss = mix(1.0, Fss90, FL) * mix(1.0, Fss90, FV);
float ss = 1.25 * (Fss * (1 / (NdotL + NdotV) - .5) + .5);
// specular
float aspect = sqrt(1-anisotropic*.9);
float ax = max(.001, sqr(roughness)/aspect);
float ay = max(.001, sqr(roughness)*aspect);
float Ds = GTR2_aniso(NdotH, dot(H, X), dot(H, Y), ax, ay);
float FH = SchlickFresnel(LdotH);
vec3 Fs = mix(Cspec0, vec3(1), FH);
float Gs;
Gs = smithG_GGX_aniso(NdotL, dot(L, X), dot(L, Y), ax, ay);
Gs *= smithG_GGX_aniso(NdotV, dot(V, X), dot(V, Y), ax, ay);
// sheen
vec3 Fsheen = FH * sheen * Csheen;
// clearcoat (ior = 1.5 -> F0 = 0.04)
float Dr = GTR1(NdotH, mix(.1,.001,clearcoatGloss));
float Fr = mix(.04, 1.0, FH);
float Gr = smithG_GGX(NdotL, .25) * smithG_GGX(NdotV, .25);
return ((1/PI) * mix(Fd, ss, subsurface)*Cdlin + Fsheen)
* (1-metallic)
+ Gs*Fs*Ds + .25*clearcoat*Gr*Fr*Dr;
}
::end shader
7. 디즈니 BSDF (Disney BSDF)
추신 : Disney BSDF는 본질적으로 오프라인 렌더러에 적합하기 때문에 게임 엔진 및 실시간 렌더링에 대한 참조의 중요성은 공간적인 이유와 더불어 상대적으로 제한적이므로 여기에는 Disney BSDF에 대한 대략적인 요약 만 있으며 나중에 추가 분석 할 수있는 기회가 있습니다.
2013 년에 출시 된 애니메이션 영화 "Frozen"에서 Disney는 이전에 개발 된 Disney Principled BRDF 물리 기반 쉐이딩 시스템을 계속 사용하지만 굴절 및 서브 서피스 스 캐터링과 같은 효과를 위해서는 BRDF와 별도로 간접적으로 계산해야합니다. 조명은 점 구름을 사용하여 근사됩니다. 2014 년 "Big Hero 6"이후 Disney는 경로 추적 전역 조명을 사용하여 새로운 영화를 만들기 시작했습니다. 따라서 원래 BRDF 모델은 더 이상 수요를 충족 할 수 없으므로 Disney는 이전 Disney Principled BRDF, 새로 개발 된 Disney BSDF 및 SIGGPRAPH 2015를 기반으로하여 "Disney BRDF를 "통합 지하 표면 산란"이 공식적으로 제안되었다.
앞에서 언급했듯이 Disney BRDF 모델은 본질적으로 금속과 비금속의 하이브리드 모델이지만 Disney BSDF의 경우 Disney는 혼합 접근법을 사용하고 기존 Disney BRDF 모델과 결합하여 이전 디자인 컨셉을 계속 유지합니다. 아래에 표시된 것처럼 Disney는 BRDF와 BSDF의 혼합을 제어하기 위해 specTrans (정반 투명도) 매개 변수를 추가했습니다. specTrans를 기반으로 블렌딩을 완료 한 후 Disney BRDF와 유사한 방법을 사용하고 금속을 기반으로 다시 혼합하십시오. Disney BRDF 모델의 본질은 금속 BRDF, 비금속 BRDF 및 Specular BSDF의 하이브리드 모델입니다.
매개 변수 측면에서 Disney BSDF는 일반 표면과 얇은 표면이 다릅니다.
- 일반 표면의 경우 Disney BSDF는 Disney BRDF를 기반으로 총 12 개의 매개 변수 인 specTrans (정반 투명도)와 scatterDistance (산란 거리)를 추가합니다.
- 얇은 표면의 경우 Disney BSDF는 Disney BRDF에 따라 specTrans (정반 투명도), scatterDistance (산란 거리) 및 평탄도 (평도)의 세 가지 매개 변수를 추가하여 총 13 개의 매개 변수를 추가합니다.
다음은 오픈 소스 3D 애니메이션 소프트웨어 Blender로 구현 한 Disney BSDF의 다이어그램입니다 (실제 용도에 따라 Blender는 Disney BSDF의 구현을 적절히 수정했습니다).
Disney는 새로 추가 된 Specular BSDF 모델 외에도 얇은 표면에 대한 새로운 서브 서피스 산란 모델 및 굴절 처리를 제안했으며 다음과 같이 요약 할 수 있습니다.
- Disney BRDF에 표면 아래 산란 모델을 추가합니다 . 구체적인 아이디어는 먼저 확산 로브를 방향성 미세 표면 효과 (반사 반사), 비 방향성 서브 표면 효과 (황갈색)의 두 부분으로 재구성하는 것입니다. 그런 다음 확산 반사 로브의 Lambert 부분을 확산 모델 또는 체적 산란 모델로 교체하십시오. 이러한 방식으로, 미세 표면 효과가 유지 될 수 있으며, 산란 거리가 작은 경우 산란 모델이 확산 반사 BRDF와 동일한 결과로 수렴 될 수있다.
- 2 개의 지수 항의 합에 기초한 표면 하 확산 시뮬레이션 모델이 제안된다. 지하 확산. Disney는 Monte Carlo 시뮬레이션을 통해 단일 산란의 확산 프로파일을 포함한 일반적인 산란 매개 변수에 대해 두 지수의 합을 사용하는 것이 좋습니다 시뮬레이션이 수행되었고, 쌍극자 확산보다 더 나은 렌더링 결과가 얻어졌다. 아래 그림과 같이.
- 얇은 표면 BSDF (Thin-surface BSDF) . 얇은 반투명 표면의 경우 Disney는 specTrans 및 diffTrans 매개 변수로 제어되는 정반사 및 확산 반사 전송의 조합으로 단일 음영 지점에서 입사 및 발신 산란 이벤트를 시뮬레이션하고 등방성 로브를 사용하여 얇은 표면 확산을 근사화합니다. 반사 전송. 아래 그림과 같이.
이 그림은 지수 적합 및 쌍극자 확산과 비교하여 그림자 경계에서 몬테 카를로 확산 렌더링을 참조로 사용합니다. 지수 피팅과 몬테 카를로 산란의 참조 사이에는 차이가 없으며 쌍극자 모델에는 명백한 흐림과 청록색 밴딩이 있습니다.이 두 현상은 종종 예술가들에 의해 불평됩니다.
8.이 기사의 요점 요약 텍스트가 여기 있습니다. 이 기사의 주요 내용에서 추출한 마인드 맵을 전체 텍스트 요약으로 사용하고자 할 수 있습니다.
일련의 기사를위한 GitHub Repo
또한 이 시리즈 기사와 함께 GitHub 리포지토리 [ PBR-White-Paper ]가 게시되어 있으며,이 시리즈 기사의 모음으로 후속 PDF도이 Repo에 게시됩니다.
이 기사의 GitHub 버전은 다음과 같습니다.
참고
[1] Burley B, Studios WD A. 디즈니의 물리 기반 음영 [C] // ACM SIGGRAPH 2012, 2012 : 1-7. [2] Burley B. Disney BRDF를 지하 표면 산란이 통합 된 BSDF로 확장 [J] 물리 기반 음영 이론 및 실습 SIGGRAPH 코스, 2015. Matusik W, Pfister H, Brand M 등 효율적인 등방성 BRDF 측정 [J] .2003. Heitz E. 미세면 기반 BRDF에서의 마스킹-섀도 잉 기능 이해 [J] Journal of Computer Graphics Techniques, 2014, 3 (2) : 32-91. [5] 타이틀 사진은 디즈니 영화 "Invincible Destruction King 2 : The Internet"에서 발췌 한 것입니다.
'TECH.ART.FLOW.IO' 카테고리의 다른 글
[번역] Unity6에서 RenderGraph를 활용해보자!응용 구현편 2 '데이터 전달' (2) | 2024.10.21 |
---|---|
[번역] Advanced Shading Techniques with Pixel Local Storage (4) | 2024.10.21 |
[소식] ARM 정확도 슈퍼 해상도 소개 (1) | 2024.10.07 |
[번역] URP 17, RenderGraph Invalid version: 20 (2) | 2024.10.06 |
[번역] Unity6에서 RenderGraph를 활용해보자 - 구현 응용편 1편 (0) | 2024.10.06 |