Search Unity

HDRP(High-Definition Render Pipeline, 고해상도 렌더 파이프라인) 패키지 7.2.0 버전과 함께 실시간 레이트레이싱의 프리뷰 버전이 제공됩니다.

HDRP는 고화질의 사실적인 결과물을 만드는 데 적합하며, Unity 2019.3의 패키지 7.2.0 버전 및 Unity 2019.3.2f1 버전(실시간 레이트레이싱 기능 요구사항)부터 프리뷰 단계가 종료됩니다. HDRP에 대한 자세한 내용은 여기에서 보실 수 있습니다. 이번 블로그 포스팅에서는 HDRP가 제공하는 레이트레이싱 기능을 중점적으로 소개합니다.

HDRP는 물리 기반 렌더링 규칙을 따르지만 래스터화 파이프라인의 특성으로 인해 조명 처리가 제한적입니다. 실시간 레이트레이싱을 사용하면 HDRP에서의 스크린 공간 근사치 사용과 관련된 가시성 문제가 없기 때문에 시각적 정확도를 높일 수 있습니다. 또한 조명을 위한 프리베이크 단계에 의존하지 않아도 되므로 아티스트의 워크플로가 향상됩니다.

HDRP의 레이트레이싱은 두 가지 방법으로 사용할 수 있습니다.

  1. 실시간 레이트레이싱 기술과 래스터화를 함께 사용한 하이브리드 파이프라인
  2. 프로그레시브 패스 트레이서(progressive path tracer)

하이브리드 파이프라인

하이브리드 파이프라인은 실시간 애플리케이션 개발 시 유용합니다. 표준 래스터화 기술, 특히 HDRP 파이프라인에 의존하지만 다양한 효과를 레이트레이싱 버전으로 대체할 수 있습니다. 레이트레이싱에서는 스크린 공간 근사치 문제나 래스터화 방식에 따른 난해한 문제가 생기지 않기 때문에 최종 이미지 품질이 향상됩니다.

레이트레이싱을 지원하는 효과의 경우 HDRP에 해당 레이트레이싱 효과 설정이 있으며, 기존 효과에 대한 레이트레이싱 플래그 또는 새로운 전용 볼륨 설정으로 제어됩니다. 다음 섹션에서는 HDRP에서 사용할 수 있는 레이트레이싱 효과를 간략하게 설명합니다. 이 효과는 Lit.shader, Unlit.shader 및 LayeredLit.shader와 Unlit, Lit 및 Fabric의 셰이더 그래프 버전과 호환됩니다.

레이트레이싱 반사

HDRP는 스크린 공간 반사, 반사 프로브, 평면 반사 및 하늘 반사 옵션 등을 제공합니다. 레이트레이싱 반사는 더 높은 시각적 정확도를 구현하는 새로운 선택지를 제공하며, 스크린 공간 반사 볼륨 컴포넌트를 통해 액세스할 수 있습니다.

레이트레이싱 전역 조명

Unity의 라이트매퍼를 사용하면 씬에서 오브젝트에 생성되는 간접 산란광을 라이트맵 또는 라이트 프로브를 생성하여 저장할 수 있습니다. 결과물의 품질은 올라가지만, 베이크 단계가 필요하며 정적 조명을 만드는 데만 사용할 수 있습니다. 레이트레이싱 전역 조명은 베이크된 조명을 대체하기 위해 전역 조명 볼륨 컴포넌트와 함께 사용할 수 있는 새로운 옵션을 제공합니다.

레이트레이싱 앰비언트 오클루전

SSAO(Screen Space Ambient Occlusion, 스크린 공간 앰비언트 오클루전)는 씬에서 간접 조명의 복잡도를 시뮬레이션하는 효과적인 방법입니다. SSAO는 탁월한 결과를 제공하지만 화면에서 사용할 수 있는 데이터에 전적으로 의존하므로 가시적인 제한이 있을 수 있으며, 레이트레이싱 배리언트인 레이트레이싱 앰비언트 오클루전(Ray Traced Ambient Occlusion)을 사용하여 개선할 수 있습니다. 이 기능은 앰비언트 오클루전 볼륨 컴포넌트를 통해 사용 가능합니다.

레이트레이싱 그림자

레이트레이싱 그림자는 HDRP의 일반 그림자를 대체할 수 있으며, 몇 가지 장점이 있습니다. 섀도우 맵 해상도 및 편향과 관련된 문제를 방지할 수 있고, 레이트레이싱 그림자를 사용하면 그림자 반영(포인트, 스폿 및 방향광)을 제어할 수 있으며, 컬러 그림자(방향광) 또는 반투명 그림자(포인트 및 스폿)도 지원됩니다. 또한 직사각형 광원에 대한 시각 절두체(view frustum) 기준 그림자도 지원됩니다. 모든 옵션은 광원 자체에서 사용할 수 있습니다.

레이트레이싱 컨택트 그림자

섀도우 맵은 저해상도 렌더 타겟 또는 여러 편향 문제로 인해 오브젝트와 오클루더 간의 접촉과 같은 세부 정보를 캡처하는 데 문제가 있을 수 있습니다. HDRP는 섀도우 맵 해상도를 높이지 않고도 품질을 개선할 수 있는 컨택트 그림자(Contact Shadows) 옵션을 제공합니다. 컨택트 그림자는 뎁스 버퍼의 레이 마칭(ray marching)에 의존하므로 일부 스크린 공간에 결함이 표시될 수 있습니다. 하지만 레이트레이싱 컨택트 그림자를 사용하면 이러한 결함이 나타나지 않습니다. 이 옵션은 광원 자체에서 사용할 수 있습니다.

재귀적 렌더링

래스터화 파이프라인으로 빛을 굴절시키는 투명 머티리얼이 겹친 여러 레이어를 렌더링하기는 까다롭습니다. HDRP는 단일 굴절 인터페이스만 제공하며 레이트레이싱을 이용하여 정확하게 렌더링합니다. 재귀적 렌더링 볼륨 컴포넌트를 사용하면 투명한 오브젝트에 대해 여러 반사 및 굴절을 구현할 수 있습니다. 이 기능을 활용하려면 오브젝트의 머티리얼 설정에서 Rendering Pass를 레이트레이싱으로 선택해야 합니다.

레이트레이싱 피하 산란

반투명 표면 렌더링은 매우 복잡한 문제로 HDRP에서 부분적으로만 해결되었습니다. 볼륨 컴포넌트 피하 산란을 사용하면 레이트레이싱을 활성화하여 이 효과를 시뮬레이션할 수 있습니다.

성능

실시간 레이트레이싱은 GPU 사용량이 매우 높으며, 애플리케이션의 최종 프레임 속도에서 각 광선의 비용을 고려해야 합니다. 현재 하드웨어 수준에서는 모든 레이트레이싱 효과를 동시에 활성화하면 프레임 속도가 느려집니다. 따라서 효과를 주의하여 선택합니다. 특히 게임의 경우 프레임 시간이 과도하게 늘어나지 않도록 한 번에 한두 가지의 효과만 활성화하는 것이 좋습니다.

HDRP는 여러 레이트레이싱 효과에 대해 Quality와 Performance 모드를 제공합니다.

선택한 모드에 따라 추가 옵션이 제공됩니다. Quality는 일반적으로 조명 효과(예: 반사 또는 전역 조명)에 대한 여러 바운스 옵션을 허용하고 셰이딩 모델에서 근사치를 더 적게 사용하여 그래픽 정확도를 높일 수 있지만 GPU 사용량이 높습니다. 따라서 이 설정은 게임에 권장되지 않습니다. Performance는 게임의 프레임 속도를 높이기 위해 사용하는 모드로, 복잡한 최적화가 적용됩니다. SIGGRAPH 2019에서 진행된 ‘실시간 레이트레이싱을 활용한 하이브리드 게임 엔진 제작‘ 세션을 통해 최적화 성능에 대한 자세한 내용을 확인해보시기 바랍니다. 재귀적 렌더링 효과와 같은 일부 효과는 모드 설정에서 Quality 모드만 지원합니다.

레이트레이싱 전역 조명 및 재귀적 렌더링은 계산량이 많기 때문에 높은 프레임 레이트가 요구되는 경우에는 권장하지 않습니다. 레퍼런스 스크린샷을 생성해 두면 유용합니다. 또한 성능이 급격히 떨어질 수 있으므로 레이트레이싱 피하 산란 기능을 효율적으로 사용해야 합니다.

게임에서 그림자, 컨택트 그림자, 앰비언트 오클루전 및 반사에 레이트레이싱 효과를 사용할 때는 Performance 모드로 설정하는 것이 좋습니다. 게임을 제외한 인터랙티브 애플리케이션에는 Performance 모드가 제공되는 다른 효과를 사용할 수 있으며, Performance 모드 설정이 없는 효과는 필요한 부분에만 효율적으로 사용하여 실시간 성능을 유지해야 합니다.

성능을 향상시키기 위해 레이트레이싱 효과를 사용하는 동안 발생하는 작업량을 줄일 수 있습니다. 셰이더 그래프에는 레이트레이싱으로 렌더링할 때 머티리얼의 성능 사용량을 낮출 수 있는 레이트레이싱 전용 노드가 제공됩니다.

프로그레시브 패스 트레이서

프로그레시브 패스 트레이서 파이프라인은 인터랙티브 애플리케이션을 위한 고품질 이미지 렌더링에 유용합니다. 하이브리드 파이프라인과는 달리 셰이딩 처리 시 래스터화 파이프라인에 의존하지 않지만, 포스트 프로세싱의 경우에는 래스터화 파이프라인을 사용합니다. 이 모드의 조명은 영화 제작에 사용하는 조명만큼 매우 정확하지만, 처리하는 데 약간의 시간이 필요합니다. 따라서 이 방법은 이미지가 최종 결과로 수렴될 때까지 몇 개의 프레임에 노이즈가 있는 이미지를 생성합니다.

패스트레이싱(Path Tracing) 볼륨 컴포넌트를 사용할 수 있으며, 활성화되면 이 컴포넌트가 HDRP의 다른 레이트레이싱 또는 일반 파이프라인 효과를 대체합니다. 이는 또한 레퍼런스를 생성하는 데 유용할 수 있습니다.

패스 트레이서를 사용한 프레임의 프로그레시브 렌더링

이미지가 완전히 수렴된 최종 결과물

프리뷰 공개

현재 HDRP 7.2.0에서 레이트레이싱이 프리뷰로 제공됩니다. 레이트레이싱은 Unity 2019.3.2f1에서 프리뷰로 제공되는 DX12 및 DXR 저수준 API를 사용하므로 일부 기능이 제공되지 않습니다. 프리뷰로 제공되는 레이트레이싱에서는 일부 기능, 사용자 인터페이스, 성능, 툴 및 데이터 형식이 새로운 버전으로 업그레이드될 수 있으며 데이터 마이그레이션이 보장되지 않습니다. 정식 프로젝트 제작 시에는 프리뷰 기능을 사용하지 않도록 합니다.

Unity 2019.3의 HDRP 레이트레이싱에는 다음과 같은 제한이 있습니다.

  • D3D12_RAYTRACING_TIER 1.0만 지원되는 DX12 외 플랫폼에서는 레이트레이싱이 지원되지 않습니다.
  • 디포머(스킨, 버텍스 애니메이션)가 지원되지 않습니다.
  • VFX 및 터레인이 지원되지 않습니다.
  • Hair, StackLit, Eye 및 AxF 머티리얼을 포함한 여러 HDRP 머티리얼이 지원되지 않습니다.
  • 그림자에 대한 올바른 컬링이 없으며, 대신 절두체 컬링을 사용합니다.

하드웨어 요구사항

다음 GPU에서 완전한 레이트레이싱 하드웨어 가속 기능을 사용할 수 있습니다.

  • NVIDIA GeForce RTX 2060, RTX 2080 Super, RTX 2070, RTX 2070 Super, RTX 2080, RTX 2080 Super, RTX 2080 Ti
  • NVIDIA TITAN RTX
  • NVIDIA Quadro RTX 3000(노트북 전용), RTX 4000, RTX 5000, RTX 6000, RTX 8000

또한 NVIDIA는 일부 이전 세대 그래픽카드에 레이트레이싱 폴백을 제공합니다.

  • NVIDIA GeForce GTX 
    • 튜링(Turing) 세대: GTX 1650, GTX 1660 Super, GTX 1660 Ti
    • 파스칼(Pascal) 세대: GTX 1060, GTX 1070, GTX 1080, GTX 1080 Ti
  • NVIDIA TITAN V
  • NVIDIA Quadro:P4000, P5000, P6000, V100

컴퓨터에 상기 그래픽카드 중 하나가 설치되어 있으면 레이트레이싱을 사용할 수 있습니다. Unity를 실행하기에 앞서 NVIDIA 드라이버를 최신 버전으로 업데이트하세요. 최적의 제작 환경을 위해 NVIDIA Quadro 또는 Studio 드라이버를 사용하고 Windows 버전이 1809 이상인지 확인하세요.

HDRP 레이트레이싱 활용을 위한 준비

HDRP 레이트레이싱을 시작하려면 소개 기술 자료를 참고하시기 바랍니다. 이번 포스팅에서 언급한 모든 레이트레이싱 효과에 대한 자세한 설명이 나와 있습니다.

제공된 샘플 프로젝트(SmallOfficeRayTracing)를 참고하면 레이트레이싱을 가장 쉽고 간단하게 시작할 수 있습니다. 해당 프로젝트는 레이트레이싱을 곧바로 사용할 수 있도록 설정되어 있습니다. 

샘플 프로젝트에서는 세 가지 씬을 사용할 수 있으며 실시간 레이트레이싱의 세 가지 사용 사례를 확인할 수 있습니다.

Ray Tracing Performance Scene

이 씬은 우수한 성능을 염두에 두고(Nvidia 2080에서 최대 60fps) 여러 가지 레이트레이싱 효과를 사용하도록 설정되었습니다. 다음과 같은 효과가 활성화되어 있습니다.

  • 레이트레이싱 반사
  • 레이트레이싱 전역 조명
  • 레이트레이싱 방향광 그림자
  • 레이트레이싱 면 광원 확률적(stochastic) 그림자
  • 레이트레이싱 앰비언트 오클루전

Ray Tracing Quality Scene

이 씬에는 Performance 씬과 동일한 효과에 재귀적 렌더링이 추가되었습니다. 모든 효과는 Quality 모드(이 모드를 사용할 수 있는 경우)로 구성되며, 이에 따라 바운스 수가 증가합니다.

Ray Tracing Path Tracing Scene

이 씬은 프로그레시브 패스 트레이서를 사용하여 렌더링되도록 설정되었습니다.

새 프로젝트 시작하기

HDRP 마법사를 활용하면 원활하게 새 프로젝트를 만들고 레이트레이싱을 설정할 수 있습니다. 마법사는 HDRP + DXR 탭에서 설정을 확인하며, 설정이 올바르지 않은 경우 수정할 수도 있습니다.

마법사를 사용하지 않고 레이트레이싱 프로젝트를 직접 설정하려면 Unity 기술 자료를 참조하시기 바랍니다.

향후 계획

향후 실시간 레이트레이싱 기술에는 다음과 같은 기능이 추가될 예정됩니다.

  • HDRP 머티리얼(StackLit, Hair 등)
  • 지오메트리(터레인, 파티클 등)
  • 가상 현실
  • 설정 간 확장성을 높이는 더 나은 폴백 

Unity 2020.1에서는 스키닝, 블렌드 셰이프 및 알렘빅(Alembic) 변형이 지원됩니다.

HDRP 레이트레이싱 사용하기

지금 바로 프로젝트에서 HDRP 레이트레이싱을 사용할 수 있습니다. 다만, 아직 정식 제작에는 사용하지 않도록 합니다. 유나이트, SIGGRAPH, GDC에서 Unity 팀이 진행한 세션과 블로그 포스팅 현실과 가상의 만남레이트레이싱의 활용을 참고해 보세요. SIGGRAPH의 스타터 프레젠테이션에서 전반적인 내용을 확인한 후, HDRP 레이트레이싱의 아키텍처를 더 자세히 알아보려면 Unity 게임 엔진에서 레이트레이싱 하드웨어 가속 활용하기 세션을 시청하시기 바랍니다.

이번 프리뷰에 이어 앞으로도 꾸준히 레이트레이싱 기능을 개선할 예정입니다. HDRP 레이트레이싱 포럼에서 사용자 피드백을 공유해주세요!

7 replies on “HDRP 실시간 레이트레이싱 프리뷰 출시”

Great post. Personally I was wishing that Unity would wait for a while for Raytracing as a technology to mature enough and be widely adopted across multiple hardware and graphics libraries before Unity jumps on board. But I get that it’s got to compete with Unreal so sometimes, vanity features like this are a necessary evil. Nonetheless the results are pretty stunning.

Sadly, vanity features such as these are often the differentiator about what engine to use even when it makes no sense whatsoever. Your artists demand it, your designers demand it, sometimes even your investors demand it. So it is important not only to be current, but also be the one on top of the vanity feature list.

Thanks. That would be great news… Last year. In the mean time competitors using other engines are providing more advanced visualization solutions today. Please enable Raytrace in VR for 2020.1 and what would be great news today, would be that you are working on URP support too. I look forward to it!

Normally yes. That is one of the huge benefits Quadro cards had since their invention. If I am not mistaken, at least up to 4 Quadros can be used simultaneously. Whether DXR takes advantage of that or how you should structure your project in order to take advantage of them is a different matter.

I know Unity is vey big on multi-platform support. Are you planning on adding ray-tracing support to other platforms? (Metal, Vulcan, etc.)

Comments are closed.