3. 다룰 내용
• PBR과 레이트레이싱 반사
• 레이트레이싱 데모 제작 경험 공유
• 드래곤 하우드의 새 기능
다루지 않을 내용
• DirectX 12, DXR API
• 레이트레이싱 알고리즘
• RTShadow
• RTAO (raytraced ambient occlusion
• RTGI (raytraced global illumination)
4. Dragonhound: GeForce RTX Real-Time Ray Traced Reflections and Shadows - GDC 2019
https://www.youtube.com/watch?v=ncv5Oe5q5zs
5. 들어가기 전
언리얼 엔진 4를 기준으로 합니다.
언리얼 엔진 4와 드래곤 하운드의 레이트레이싱 구현은
아직 실험 기능입니다.
6. 들어가기 전
GDC 데모나 이 발표에 쓰인 리소스나 세팅은
현재 제작 단계이거나 임시 리소스로
출시 때 변경 될 수 있습니다
9. 레이트레이싱이란?
1. 레이와 가장 가까이 충돌하는 삼각형을 탐색
2. 그 삼각형의 무게중심좌표(barycentric coordinate)를 이용해서
쉐이딩에 필요한 정보를 얻음 (예, 보간된 버텍스 정보)
10. 레이트레이싱 반사의 역할
• 레이트레이싱으로 모든 것을 렌더링? 아니다
• 래스터라이제이션(rasterization)으로 G버퍼를 생성하고
• 반사 부분만 레이트레이싱으로 수행한다 (디퍼드 렌더링과 hybrid)
• 레이트레이싱 이전에 이 부분을 담당했던 기술 – IBL, SSR
11. 레이트레이싱 이전의 반사
• IBL (Image-Based Lighting)*
• 환경맵 형태로 구워둠 (Pre-Filtered Environment Map)
* Real Shading in Unreal Engine 4, Brian Karis (Epic Games), 2013
12. 레이트레이싱
이전의 반사
• SSR (Screen-Space Reflections)
• 이미 렌더링한 화면에서 가져옴
• 화면 안이라는 제약을 제외하면
매우 훌륭한 퀄리티
14. 렌더링 공식
2
( , ) ( , ) ( , )cosr r r i r i i i i
H
L x f x L x d = →
BRDF (물체의 반사 특성)
사방에서 들어오는 빛
반사되어 나가는 빛
(예, 눈으로 들어오는 빛)
빛의 각도에 따라
달라지는 빛의 양
모든 빛에 대해 계산 후 적분(더함)
15. 렌더링 공식
2
( , ) ( , ) ( , )cosr r r i r i i i i
H
L x f x L x d = →
사방에서 들어오는 빛
직접광
간접광
16. 렌더링 공식
2
( , ) ( , ) ( , )cosr r r i r i i i i
H
L x f x L x d = →
직접광
간접광
디렉셔널 라이트
포인트 라이트
17. 렌더링 공식
2
( , ) ( , ) ( , )cosr r r i r i i i i
H
L x f x L x d = →
직접광
간접광
디렉셔널 라이트
포인트 라이트
디퓨즈
스페큘러
18. 렌더링 공식
2
( , ) ( , ) ( , )cosr r r i r i i i i
H
L x f x L x d = →
직접광
간접광
디렉셔널 라이트
포인트 라이트
디퓨즈
SH
라이트맵
스페큘러
19. 렌더링 공식
2
( , ) ( , ) ( , )cosr r r i r i i i i
H
L x f x L x d = →
직접광
간접광
디렉셔널 라이트
포인트 라이트
IBL
SSR
디퓨즈
SH
라이트맵
스페큘러
레이트레이싱 반사
31. 레이트레이싱 글로시 - 디노이저
• 글로시는 수십, 수백개 이상의 레이가 필요
• 실시간에서는 1개 혹은 몇 개의 레이를 사용 후
디노이저로 보완
• SSR (Screen-Space Reflections)도 비슷*
* Stochastic Screen-Space Reflections, Tomasz Stachowiak (Electronic Arts/Frostbite), 2015
53. 해결/우회 방법
1. 넌유니폼 스케일링을 쓰지 않음
2. 넌유니폼의 노말 변환을 제대로 계산하도록 엔진을 수정*
3. 넌유니폼 스케일링 된 메시를 유니폼으로 바꾸어 저장
(드래곤 하운드 GTC/GDC 데모에서는 이 방법을 사용)
* Normal Transformations by Jason L. McKesson
54. (4) 금속의 베이스 컬러
• 물리적으로 올바른 베이스 컬러를 사용하는 것은 매우 중요
• 비금속에서 베이스 컬러 = 디퓨즈 반사율
금속에서 베이스 컬러 = 스페큘러 반사율
• 드래곤 하운드에서는 (여러 이유로)
전반적인 베이스 컬러가 낮게 되어 있어서
적절하게 상향 조절
* 이미지: 언리얼 엔진 4 문서 – 물리기반 머티리얼
55. 요약
• 레이트레이싱의 강점은 글로시와 동적 스페큘러
• 러프니스 0인 정반사는 주의가 필요하다
• 반사가 더 정확해지면서 노말의 중요도가 매우 높아졌다
56. 2.2 반사 성능 최적화
1. 응집성 (coherence)
2. 레이 적게 쏘기
3. 래스터라이제이션 최적화
57. 반사 성능 최적화
1. 응집성 (coherence)
2. 레이 적게 쏘기
3. 래스터라이제이션 최적화
59. 응집성 (coherence)
• 개념만 알아도 도움이 됩니다
• 응집성이 낮으면,
• 레이 탐색이 느려진다
• 다수의 텍스쳐를 읽어야한다
• 쉐도우는 응집성이 높고, 반사는 응집성이 낮은 편
60. 반사 성능 최적화
1. 응집성 (coherence)
2. 레이 적게 쏘기
3. 래스터라이제이션 최적화
61. 레이 적게 쏘기
• (ㅁ) 반사 스크린 퍼센티지 낮추기 (100%->50%)
• (ㅁ) 반사 계산시 지정된 러프니스 보다 높으면 IBL을 사용
• 기본값 0.6으로 성능과 씬에 따라 조절 가능
• (ㅁ) 최대 반사 바운스 조절
• 반사 바운스 비주얼라이저
• 적응형 최대 러프니스
62. 반사 바운스 비주얼라이저
• 러프니스가 바운스에 영향을 주고, 이건 성능으로 직결 된다
• 리플렉션이 되는 횟수를 색깔로 표현하는 비주얼라이저를 제작
• 필요 이상으로 트레이싱이 많이 되는 부분을 확인하여
러프니스를 조절
64. 적응형 최대 러프니스 (Adaptive Max Roughness)
• 첫번째 반사에서는 최대 러프니스(Max Roughness) 보다 초과일 경우 IBL을 사용
• 두번째 반사에서는 이 기준을 반으로 줄임
세번째 반사는 또 그의 절반
• 예, 최대 러프니스 값이 0.6이라면 두번째 반사는 0.3, 세번째는 0.15
• 두번째 반사부터 이전 반사가 비금속일 경우 레이트레이싱 반사 가능성을 줄임
• 레이가 (뎁스버퍼 대비) 먼 곳에서 날아 왔으면 그 다음 반사 가능성을 줄임
66. 적응형 최대 러프니스 (Adaptive Max Roughness)
• 적게 쏘니 당연히 성능 향상이 크다
많게는 3 ms ~10 ms
• 하지만 퀄리티 차이도 없을 순 없다
(차이를 최소화하기 위해 공식을 개선 중)
• 퀄리티보다 성능을 원할 때 사용
(아직은 대부분 성능이 더 필요하다)
9 ms 향상
67. 적응형 최대 러프니스 (Adaptive Max Roughness)
• 전반적으로는 비슷하지만
암부의 디테일이 떨어진다
• 성능은 9 ms 향상
• 반사 대신 스페큘러 AO를
사용하면 비용을
줄일 수 있지 않을까?
적용 전 적용 후
68. 반사 성능 최적화
1. 응집성 (coherence)
2. 레이 적게 쏘기
3. 래스터라이제이션 최적화
69. 래스터라이제이션의 최적화
• 레이트레이싱이라고 래스터라이제이션의 최적화가 필요 없지 않다
• 반사 후 머티리얼/라이팅 계산은 포워드 쉐이딩과 같다
• 머티리얼 평가 비용(쉐이더 비용) 줄이기
• 텍스쳐 사용 줄이기
• LOD 적극 사용하기
• 레이트레이싱이 적용된 거리는 눈에 보이는 것보다 길다
70. 요약
• 응집성(coherence)이 낮으면 성능 하락이 크다
• 그림자에 비해 반사의 응집성은 많이 낮은 편
• 반사 바운스가 높으면 응집성이 떨어지고 크게 성능이 하락한다
• 씬의 구성에 따라, 최대 러프니스, 최대 바운스, 반사 해상도 등을
조절하여 성능 향상을 얻을 수 있다
71. 2.3 드래곤 하운드의 새 구현
1. 드래곤 하운드의 반투명 및 굴절
2. 스크린 스페이스 포톤 매핑
72. 드래곤 하운드의
반투명 및 굴절
• 드래곤 하운드의 용은
몸에 용석이 달려 있다
• 용석은 크리스탈과 비슷
• 드래곤 하운드의
핵심 비주얼 중 하나
발표/시연을 위한 임시 리소스입니다
73. 래스터라이제이션의 반투명
• 불투명만 G버퍼에 그림
• 반투명한 물체는 카메라 기준으로 정렬 후 드로우
• 스켈레탈 메시로 있는 용석은 전부 나누지 않는 이상 정렬 불가
• 다른 방법: Order-Independent Transparency
• OIT는 픽셀 안에서 정렬
• 툼 레이더의 헤어, 어센던트 원*
* 프로젝트 A1의 AAA급 캐릭터 렌더링 기술, 기현우, 2016
74. 레이트레이싱 반투명 – 에픽의 방법
• 래스터라이제이션과 같은 형태로 반투명 물체를 제외한
불투명 물체만 G버퍼에 렌더링
• 레이트레이싱을 이용해서 순차적으로 드로우
84. 성능
• 한 단계를 줄인 만큼은 당연히 빨라지고
• 한 단계 줄인거 이상으로 약간의 추가 이득이 있음
(불필요한 첫번째 레이를 쏘지 않기 때문)
• 플레이 뷰에서는 충분히 사용 가능. 근접 성능은 개선 중
에픽 드래곤 하운드 성능 향상
가까이 볼 때 8.2 ms 3.2 ms 5 ms
플레이 뷰 2.2 ms 1.2 ms 1 ms
85. 스크린 스페이스 포톤 매핑 (SSPM)
• 커스틱을 위한 스크린 스페이스 포톤 매핑
(screen-space photon mapping)
• 커스틱은
굴절이나 반사로 빛이 모여서
주변보다 밝게 보이는 현상
커스틱의 예시 렌더링 이미지 (오프라인 렌더링)
86. 구현 설명은 시간 관계로 생략
• Ray Tracing Gems 에 수록* (E북(킨들, PDF)은 무료)
1. 포톤(photon, 광자, 빛 알갱이)을 월드에 뿌리고
2. 스크린 스페이스안에 들어갈 포톤만 저장
3. 포톤 맵 텍스쳐 디노이징
• 저장된 포톤이 반사와 비슷하다는 것에서 착안
• NVIDIA GameWorks Denoiser 로 시범 구현
* Caustics using Screen-Space Photon Mapping, 김혁 (넥슨 코리아), 2019
92. 결론
• 반사 레이트레이싱은 스페큘러의 퀄리티를 극적으로 향상 시킨다
• IBL과 SSR을 넘어서 동적 글로시 스페큘러
• 성공의 주요 포인트는 디노이저 (성능, 퀄리티)
• 굴절, 커스틱, GI 등 반사를 넘어서 다양하게 활용 가능
93. 이후 작업 (다 하겠다는건 아닙니다)
* Physically-Based Shading at Disney, Brent Burley, SIGGRAPH 2012
• 스페큘러 AO
• 스페큘러에 이어 디퓨즈 개선하기 (Burley(디즈니) 디퓨즈?)*
• 반투명 근접 성능 개선
• 반사 시 계산할 라이트 선정 (포워드 쉐이딩 개선)
• 무지개빛/회절 (iridescence/diffraction)
• 반사 안정화 후 GI 적용을 고려
94. 레퍼런스
• Physics and Math of Shading , Naty Hoffman (2K), SIGGRAPH 2015
• Real Shading in Unreal Engine 4, Brian Karis (Epic Games), SIGGRAPH 2013
• Stochastic Screen-Space Reflections, Tomasz Stachowiak (Electronic Arts/Frostbite), SIGGRAPH
2015
• Exploring the Ray Traced Future in 'Metro Exodus', Oles Shyshkovtsov et al., GDC 2019
• Normal Transformations by Jason L. McKesson
https://paroj.github.io/gltut/Illumination/Tut09 Normal Transformation.html
• 언리얼 엔진 4 물리기반 머티리얼
https://api.unrealengine.com/KOR/Engine/Rendering/Materials/PhysicallyBased/index.html
• 프로젝트 A1의 AAA급 캐릭터 렌더링 기술, 기현우 (넥슨 코리아), NDC 2016
• Caustics using Screen-Space Photon Mapping (Ray Tracing Gems), Hyuk Kim (NEXON Korea),
2019
• Physically-Based Shading at Disney, Brent Burley, SIGGRAPH 2012
95. 이미지 출처
• 호수 사진
https://www.fhwa.dot.gov/byways/byways/2302/photos
• “Reflections” – A Star Wars UE4 Real-Time Ray Tracing Cinematic Demo
https://www.youtube.com/watch?v=lMSuGoYcT3s
• J-type 327 Nubian royal starship
https://starwars.fandom.com/wiki/J-type_327_Nubian_royal_starship
• Mental Ray - Caustics Asset Scene
https://www.youtube.com/watch?v=KatVWgFCyS0