Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[NDC 2019] 드래곤 하운드의 PBR과 레이트레이싱 렌더링 기법

Hyuk Kim
April 26, 2019

[NDC 2019] 드래곤 하운드의 PBR과 레이트레이싱 렌더링 기법

언리얼 엔진 4를 이용한 드래곤 하운드의 레이트레이싱 기법을 소개합니다

Hyuk Kim

April 26, 2019
Tweet

Other Decks in Technology

Transcript

  1. 목차 1. 파트 1 – 언리얼 엔진 4의 PBR과 레이트레이싱

    2. 파트 2 – 드래곤 하운드의 PBR과 레이트레이싱
  2. 다룰 내용 • PBR과 레이트레이싱 반사 • 레이트레이싱 데모 제작

    경험 공유 • 드래곤 하우드의 새 기능 다루지 않을 내용 • DirectX 12, DXR API • 레이트레이싱 알고리즘 • RTShadow • RTAO (raytraced ambient occlusion • RTGI (raytraced global illumination)
  3. Dragonhound: GeForce RTX Real-Time Ray Traced Reflections and Shadows -

    GDC 2019 https://www.youtube.com/watch?v=ncv5Oe5q5zs
  4. 들어가기 전 언리얼 엔진 4를 기준으로 합니다. 언리얼 엔진 4와

    드래곤 하운드의 레이트레이싱 구현은 아직 실험 기능입니다.
  5. 들어가기 전 GDC 데모나 이 발표에 쓰인 리소스나 세팅은 현재

    제작 단계이거나 임시 리소스로 출시 때 변경 될 수 있습니다
  6. 파트 1 – 언리얼 엔진4의 PBR과 레이트레이싱 1. 레이트레이싱이란? 2.

    디퓨즈와 스페큘러 3. 스페큘러와 레이트레이싱
  7. 레이트레이싱이란? 1. 레이와 가장 가까이 충돌하는 삼각형을 탐색 2. 그

    삼각형의 무게중심좌표(barycentric coordinate)를 이용해서 쉐이딩에 필요한 정보를 얻음 (예, 보간된 버텍스 정보)
  8. 레이트레이싱 반사의 역할 • 레이트레이싱으로 모든 것을 렌더링? 아니다 •

    래스터라이제이션(rasterization)으로 G버퍼를 생성하고 • 반사 부분만 레이트레이싱으로 수행한다 (디퍼드 렌더링과 hybrid) • 레이트레이싱 이전에 이 부분을 담당했던 기술 – IBL, SSR
  9. 레이트레이싱 이전의 반사 • IBL (Image-Based Lighting)* • 환경맵 형태로

    구워둠 (Pre-Filtered Environment Map) * Real Shading in Unreal Engine 4, Brian Karis (Epic Games), 2013
  10. 레이트레이싱 이전의 반사 • SSR (Screen-Space Reflections) • 이미 렌더링한

    화면에서 가져옴 • 화면 안이라는 제약을 제외하면 매우 훌륭한 퀄리티
  11. 렌더링 공식 2 ( , ) ( , ) (

    , )cos r r r i r i i i i H L x f x L x d       = →  BRDF (물체의 반사 특성) 사방에서 들어오는 빛 반사되어 나가는 빛 (예, 눈으로 들어오는 빛) 빛의 각도에 따라 달라지는 빛의 양 모든 빛에 대해 계산 후 적분(더함)
  12. 렌더링 공식 2 ( , ) ( , ) (

    , )cos r r r i r i i i i H L x f x L x d       = →  사방에서 들어오는 빛 직접광 간접광
  13. 렌더링 공식 2 ( , ) ( , ) (

    , )cos r r r i r i i i i H L x f x L x d       = →  직접광 간접광 디렉셔널 라이트 포인트 라이트
  14. 렌더링 공식 2 ( , ) ( , ) (

    , )cos r r r i r i i i i H L x f x L x d       = →  직접광 간접광 디렉셔널 라이트 포인트 라이트 디퓨즈 스페큘러
  15. 렌더링 공식 2 ( , ) ( , ) (

    , )cos r r r i r i i i i H L x f x L x d       = →  직접광 간접광 디렉셔널 라이트 포인트 라이트 디퓨즈 SH 라이트맵 스페큘러
  16. 렌더링 공식 2 ( , ) ( , ) (

    , )cos r r r i r i i i i H L x f x L x d       = →  직접광 간접광 디렉셔널 라이트 포인트 라이트 IBL SSR 디퓨즈 SH 라이트맵 스페큘러 레이트레이싱 반사
  17. • 비금속 (메탈릭 0) • 디퓨즈 – 베이스 컬러 •

    스페큘러 - 흰색 0%~4%~8% • 금속 (메탈릭 1) • 디퓨즈 없음 • 스페큘러 - 베이스 컬러 (0%~100%)
  18. 레이트레이싱 글로시 - 디노이저 • 글로시는 수십, 수백개 이상의 레이가

    필요 • 실시간에서는 1개 혹은 몇 개의 레이를 사용 후 디노이저로 보완 • SSR (Screen-Space Reflections)도 비슷* * Stochastic Screen-Space Reflections, Tomasz Stachowiak (Electronic Arts/Frostbite), 2015
  19. 요약 • 레이트레이싱 반사는 스페큘러만 다룬다 • 메탈릭(금속/비금속)은 반사율에 큰

    영향을 준다 • 러프니스가 반사의 모양을 결정 • 중요한 요소는 글로시와 디노이저
  20. 파트 2 – 드래곤 하운드의 PBR과 레이트레이싱 1. 리소스 제작

    팁 2. 반사 성능 최적화 3. 드래곤 하운드의 새 구현
  21. 2.1 리소스 제작 팁 1. 반사 표현 2. 노말 3.

    넌유니폼 스케일링 (non-uniform scaling) 4. 금속의 베이스 컬러
  22. (1) 반사 표현 • 정반사(러프니스 0)인 물체는 별로 없다 •

    거울, 크롬 • 자동차는 클리어 코트 (clear coat) • 자연스러운 것은 글로시 스타워즈 스타워즈 Nubian royal starship
  23. (1) 반사 표현 • 억지스러움은 테크 데모로 충분 • 자연스러우면

    티가 안나고, • 티가 나면 억지스럽다 • 반사상을 식별하게 하는 건 어려움 • 평면이 아닌 볼록이나 오목은 반사상이 잘 식별 되지 않는다
  24. (1) 반사 표현 • IBL과 SSR은 사실 매우 훌륭한 기술

    • 단순한 반사의 느낌을 위해서는 사실 레이트레이싱은 필요 없다 • 레이트레싱의 강점은 동적인 표현
  25. (2) 노말 • 러프니스가 0인 재질은 노말 텍스쳐가 매우 중요하고

    가장 까다로움 • IBL/SSR과 달리 노말의 문제가 레이트레이싱에서 크게 나타남
  26. 노말맵 평면화를 사용하지 않으면 되나? 128, 128, 255 127, 127,

    255 • 맥스에서 구운 평면 노말맵도 심하진 않지만 비슷한 문제 발생 • 하이폴리곤에서 만든 노말맵에 오차가 섞여 있다
  27. 해결 방법 • 노말맵의 의존도를 낮춘다 • 오차 없이 버텍스

    노말만 사용 • FlattenNormal으로 노말맵의 의존도를 낮춤 • 필요하면 스무딩 그룹의 분리후 노말 텍스쳐를 수동으로 밀어줌
  28. (3) 넌유니폼 스케일링 (non-uniform scaling) • 넌유니폼 문제는 그래픽스에서 잘

    알려진 문제 • 잘못된 노말로 반사 방향이 물체 뒤로 넘어간다 • 노말의 변환 행렬 계산을 제대로 해줘야한다 • 넌유니폼의 변환 행렬은 위치 버텍스의 계산과 다름
  29. 해결/우회 방법 1. 넌유니폼 스케일링을 쓰지 않음 2. 넌유니폼의 노말

    변환을 제대로 계산하도록 엔진을 수정* 3. 넌유니폼 스케일링 된 메시를 유니폼으로 바꾸어 저장 (드래곤 하운드 GTC/GDC 데모에서는 이 방법을 사용) * Normal Transformations by Jason L. McKesson
  30. (4) 금속의 베이스 컬러 • 물리적으로 올바른 베이스 컬러를 사용하는

    것은 매우 중요 • 비금속에서 베이스 컬러 = 디퓨즈 반사율 금속에서 베이스 컬러 = 스페큘러 반사율 • 드래곤 하운드에서는 (여러 이유로) 전반적인 베이스 컬러가 낮게 되어 있어서 적절하게 상향 조절 * 이미지: 언리얼 엔진 4 문서 – 물리기반 머티리얼
  31. 요약 • 레이트레이싱의 강점은 글로시와 동적 스페큘러 • 러프니스 0인

    정반사는 주의가 필요하다 • 반사가 더 정확해지면서 노말의 중요도가 매우 높아졌다
  32. 2.2 반사 성능 최적화 1. 응집성 (coherence) 2. 레이 적게

    쏘기 3. 래스터라이제이션 최적화
  33. 응집성 (coherence) • 개념만 알아도 도움이 됩니다 • 응집성이 낮으면,

    • 레이 탐색이 느려진다 • 다수의 텍스쳐를 읽어야한다 • 쉐도우는 응집성이 높고, 반사는 응집성이 낮은 편
  34. 레이 적게 쏘기 • (ㅁ) 반사 스크린 퍼센티지 낮추기 (100%->50%)

    • (ㅁ) 반사 계산시 지정된 러프니스 보다 높으면 IBL을 사용 • 기본값 0.6으로 성능과 씬에 따라 조절 가능 • (ㅁ) 최대 반사 바운스 조절 • 반사 바운스 비주얼라이저 • 적응형 최대 러프니스
  35. 반사 바운스 비주얼라이저 • 러프니스가 바운스에 영향을 주고, 이건 성능으로

    직결 된다 • 리플렉션이 되는 횟수를 색깔로 표현하는 비주얼라이저를 제작 • 필요 이상으로 트레이싱이 많이 되는 부분을 확인하여 러프니스를 조절
  36. 적응형 최대 러프니스 (Adaptive Max Roughness) • 첫번째 반사에서는 최대

    러프니스(Max Roughness) 보다 초과일 경우 IBL을 사용 • 두번째 반사에서는 이 기준을 반으로 줄임 세번째 반사는 또 그의 절반 • 예, 최대 러프니스 값이 0.6이라면 두번째 반사는 0.3, 세번째는 0.15 • 두번째 반사부터 이전 반사가 비금속일 경우 레이트레이싱 반사 가능성을 줄임 • 레이가 (뎁스버퍼 대비) 먼 곳에서 날아 왔으면 그 다음 반사 가능성을 줄임
  37. 적응형 최대 러프니스 (Adaptive Max Roughness) • 적게 쏘니 당연히

    성능 향상이 크다 많게는 3 ms ~10 ms • 하지만 퀄리티 차이도 없을 순 없다 (차이를 최소화하기 위해 공식을 개선 중) • 퀄리티보다 성능을 원할 때 사용 (아직은 대부분 성능이 더 필요하다) 9 ms 향상
  38. 적응형 최대 러프니스 (Adaptive Max Roughness) • 전반적으로는 비슷하지만 암부의

    디테일이 떨어진다 • 성능은 9 ms 향상 • 반사 대신 스페큘러 AO를 사용하면 비용을 줄일 수 있지 않을까? 적용 전 적용 후
  39. 래스터라이제이션의 최적화 • 레이트레이싱이라고 래스터라이제이션의 최적화가 필요 없지 않다 •

    반사 후 머티리얼/라이팅 계산은 포워드 쉐이딩과 같다 • 머티리얼 평가 비용(쉐이더 비용) 줄이기 • 텍스쳐 사용 줄이기 • LOD 적극 사용하기 • 레이트레이싱이 적용된 거리는 눈에 보이는 것보다 길다
  40. 요약 • 응집성(coherence)이 낮으면 성능 하락이 크다 • 그림자에 비해

    반사의 응집성은 많이 낮은 편 • 반사 바운스가 높으면 응집성이 떨어지고 크게 성능이 하락한다 • 씬의 구성에 따라, 최대 러프니스, 최대 바운스, 반사 해상도 등을 조절하여 성능 향상을 얻을 수 있다
  41. 드래곤 하운드의 반투명 및 굴절 • 드래곤 하운드의 용은 몸에

    용석이 달려 있다 • 용석은 크리스탈과 비슷 • 드래곤 하운드의 핵심 비주얼 중 하나 발표/시연을 위한 임시 리소스입니다
  42. 래스터라이제이션의 반투명 • 불투명만 G버퍼에 그림 • 반투명한 물체는 카메라

    기준으로 정렬 후 드로우 • 스켈레탈 메시로 있는 용석은 전부 나누지 않는 이상 정렬 불가 • 다른 방법: Order-Independent Transparency • OIT는 픽셀 안에서 정렬 • 툼 레이더의 헤어, 어센던트 원* * 프로젝트 A1의 AAA급 캐릭터 렌더링 기술, 기현우, 2016
  43. 레이트레이싱 반투명 – 에픽의 방법 • 래스터라이제이션과 같은 형태로 반투명

    물체를 제외한 불투명 물체만 G버퍼에 렌더링 • 레이트레이싱을 이용해서 순차적으로 드로우
  44. 드래곤 하운드의 방법 • 에픽의 구현은 범용적이고 일반적인 구현 •

    드래곤 하운드에서는 속도를 위해서 모양이 명확한 물체에 특화 된 구현으로 변형
  45. 성능 • 한 단계를 줄인 만큼은 당연히 빨라지고 • 한

    단계 줄인거 이상으로 약간의 추가 이득이 있음 (불필요한 첫번째 레이를 쏘지 않기 때문) • 플레이 뷰에서는 충분히 사용 가능. 근접 성능은 개선 중 에픽 드래곤 하운드 성능 향상 가까이 볼 때 8.2 ms 3.2 ms 5 ms 플레이 뷰 2.2 ms 1.2 ms 1 ms
  46. 스크린 스페이스 포톤 매핑 (SSPM) • 커스틱을 위한 스크린 스페이스

    포톤 매핑 (screen-space photon mapping) • 커스틱은 굴절이나 반사로 빛이 모여서 주변보다 밝게 보이는 현상 커스틱의 예시 렌더링 이미지 (오프라인 렌더링)
  47. 구현 설명은 시간 관계로 생략 • Ray Tracing Gems 에

    수록* (E북(킨들, PDF)은 무료) 1. 포톤(photon, 광자, 빛 알갱이)을 월드에 뿌리고 2. 스크린 스페이스안에 들어갈 포톤만 저장 3. 포톤 맵 텍스쳐 디노이징 • 저장된 포톤이 반사와 비슷하다는 것에서 착안 • NVIDIA GameWorks Denoiser 로 시범 구현 * Caustics using Screen-Space Photon Mapping, 김혁 (넥슨 코리아), 2019
  48. 결론 • 응집성이 높아서 레이트레이싱 성능은 좋다 • 디노이저의 성능과

    퀄리티가 관건 • 자체 SSPM 전용 디노이저를 제작 중 • 성능 데이터 및 게임 적용은 다음 기회에 공개
  49. 결론 • 반사 레이트레이싱은 스페큘러의 퀄리티를 극적으로 향상 시킨다 •

    IBL과 SSR을 넘어서 동적 글로시 스페큘러 • 성공의 주요 포인트는 디노이저 (성능, 퀄리티) • 굴절, 커스틱, GI 등 반사를 넘어서 다양하게 활용 가능
  50. 이후 작업 (다 하겠다는건 아닙니다) * Physically-Based Shading at Disney,

    Brent Burley, SIGGRAPH 2012 • 스페큘러 AO • 스페큘러에 이어 디퓨즈 개선하기 (Burley(디즈니) 디퓨즈?)* • 반투명 근접 성능 개선 • 반사 시 계산할 라이트 선정 (포워드 쉐이딩 개선) • 무지개빛/회절 (iridescence/diffraction) • 반사 안정화 후 GI 적용을 고려
  51. 레퍼런스 • 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
  52. 이미지 출처 • 호수 사진 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