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

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

Avatar for Hyuk Kim Hyuk Kim
April 26, 2019

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

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

Avatar for Hyuk Kim

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