레이트레이싱으로 시작하기
고해상도 렌더 파이프라인(HDRP)에는 Unity 2019.3의 미리보기 레이트레이싱 지원이 포함되어 있습니다. 레이트레이싱을 사용하여 화면에 없는 데이터에 접근할 수 있습니다. 예를 들어 레이트레이싱을 사용하여 포지션 데이터나 노멀 데이터, 조명 데이터를 요청한 다음 클래식 래스터화 기술을 사용하여 어림하기 어려운 양을 계산하기 위해 이 데이터를 사용할 수 있습니다.
이 문서에서는 다음의 내용을 다룹니다.
하드웨어 요구 사항
최대 레이트레이싱 하드웨어 가속도는 아래의 GPU 사양에서 사용할 수 있습니다.
- NVIDIA GeForce 20 시리즈
- RTX 2060
- RTX 2060 Super
- RTX 2070
- RTX 2070 Super
- RTX 2080
- RTX 2080 Super
- RTX 2080 Ti
- NVIDIA TITAN RTX
- NVIDIA GeForce 30 시리즈
- RTX 3060
- RTX 3060Ti
- RTX 3070
- RTX 3080
- RTX 3090
- NVIDIA Quadro
- RTX 3000 (노트북만 해당)
- RTX 4000
- RTX 5000
- RTX 6000
- RTX 8000
NVIDIA는 또한 일부 이전 세대인 그래픽 카드에 레이트레이싱 폴백을 제공합니다.
- NVIDIA GeForce GTX
- Turing 세대: GTX 1660 Super, GTX 1660 Ti
- Pascal 세대: GTX 1060 6GB, GTX 1070, GTX 1080, GTX 1080 Ti
- NVIDIA TITAN V
- NVIDIA Quadro: P4000, P5000, P6000, V100
컴퓨터에 이 그래픽 카드 중 하나가 설치되어 있다면 Unity에서 레이트레이싱을 실행할 수 있습니다.
Unity를 열기 전에 NVIDIA 드라이버가 최신으로 업데이트되어 있는지 확인하고 Windows 버전도 최소 1809 이상인지 확인해야 합니다.
HDRP 프로젝트로 레이트레이싱 통합
HDRP 프로젝트에서 레이트레이싱 기능을 사용하기 전에 레이트레이싱 지원을 위해 HDRP 프로젝트를 설정해야 합니다. HDRP는 DirectX 12 API를 사용하는 레이트레이싱만 지원하므로 DirectX 12로 렌더링하면 레이트레이싱은 Unity 에디터나 Windows Unity 플레이어에서만 작동합니다. HDRP 프로젝트의 기본 그래픽스 API를 DirectX 11에서 DirectX 12로 변경해야 합니다.
두 가지 방법으로 기본 그래픽스 API를 변경할 수 있습니다.
이 중 하나를 완료하고 나면 최종 설정으로 이동합니다.
렌더 파이프라인 마법사 설정
렌더 파이프라인 마법사를 사용하여 HDRP 프로젝트에서 레이트레이싱을 설정할 수 있습니다.
- 렌더 파이프라인 마법사를 열려면 Window > Render Pipeline으로 이동하여 HD Render Pipeline Wizard를 선택합니다.
- HDRP + DXR 탭을 선택합니다.
- Fix All 버튼을 클릭합니다.
- (선택) 레이트레이싱 효과에 필요한 HDRP 에셋 기능을 활성화합니다.
현재 HDRP 프로젝트는 레이트레이싱을 지원합니다. 씬을 위해 레이트레이싱을 설정하는 방법에 대한 자세한 내용은 최종 설정을 참조하십시오.
수동 설정
레이트레이싱을 수동으로 설정하려면 다음을 해야 합니다.
- HDRP 프로젝트가 DirectX 12를 사용하도록 설정
- HDRP 프로젝트에서 정적 배칭 비활성화
- HDRP 에셋에서 레이트레이싱 활성화 및 설정
- 레이트레이싱 리소스가 적절히 할당되었는지 확인
- (선택) HDRP 에셋에서 레이트레이싱 기반 효과 활성화
DirectX 12로 업그레이드
- Project Settings 창을 열고(메뉴: Edit > Project Setting) 플레이어 탭을 선택합니다.
- Other Settings 폴드아웃을 선택하여 Rendering 섹션에서 Windows용 Auto Graphics API를 비활성화합니다. 이렇게 하면 Windows 섹션용 그래픽스 API가 노출됩니다.
- Windows 섹션용 그래픽스 API에서 더하기(+) 버튼을 클릭하여 Direct3d12를 선택합니다.
- Unity는 기본적으로 Direct3d11를 사용합니다. Unity가 Direct3d12를 사용하도록 설정하려면 Direct3d12(실험적 기능)를 리스트의 제일 위로 이동합니다.
- 변경 사항을 적용하려면 Unity 에디터를 재시작해야 합니다. 에디터를 다시 시작하라는 창 프롬프트가 나타나면 창에서 RestartEditor를 클릭합니다.
Unity 에디터 창에는 다음과 같이 제목 표시줄에 <DX12> 태그가 포함됩니다.
정적 배칭 비활성화
HDRP가 Play Mode에서 레이트레이싱이 있는 이 기능을 지원하지 않기 때문에 다음으로는 정적 배칭을 비활성화해야 합니다. 이렇게 하려면 다음 단계를 따르십시오.
- Project Settings 창을 연 다음(메뉴: Edit > Project Settings) Player 탭을 선택합니다.
- Other Settings 폴드아웃을 선택한 다음 Rendering 섹션에서 Static Batching을 비활성화합니다.
HDRP 에셋 설정
Unity가 DirectX 12에서 실행되고 있고 정적 배칭을 비활성화했으므로 HDRP 에셋에서 레이트레이싱을 활성화하고 설정합니다. 이전 단계는 레이트레이싱을 지원하도록 Unity를 설정했습니다. 다음 단계를 통해 HDRP Unity 프로젝트에서 이를 활성화합니다.
- 프로젝트 창에서 HDRP 에셋을 클릭한 후 인스펙터에서 확인합니다.
- Rendering 섹션에서 Realtime Ray Tracing을 활성화합니다. 이렇게 하면 재컴파일을 트리거하여 HDRP 프로젝트에서 레이트레이싱을 사용할 수 있게 됩니다.
레이트레이싱 리소스
HDRP가 레이트레이싱 리소스를 적절히 할당했는지 확인하려면 다음 단계를 따르십시오.
- Project Settings 창을 연 다음(메뉴: Edit > Project Settings) HDRP Default Settings 탭을 선택합니다.
- Render Pipeline Resources 필드에 Render Pipeline Resources Asset이 할당되어 있는지 확인합니다.
(선택 사항) HDRP 에셋에서 레이트레이싱 기반 효과 활성화
HDRP는 레이트레이싱을 사용하여 특정 래스터화된 효과를 교체합니다. 프로젝트에서 레이트레이싱 효과를 사용하기 위해 먼저 래스터화된 버전의 효과를 활성화해야 합니다. HDRP 에셋을 수정해야 하는 네 가지 효과는 다음과 같습니다.
- Screen Space Shadows
- Screen Space Reflections
- Transparent Screen Space Reflections
- Screen Space Global Illumination
HDRP Unity 프로젝트에서 위의 효과를 활성화하려면 다음 단계를 따르십시오.
- 프로젝트 창에서 HDRP 에셋을 클릭한 후 인스펙터에서 확인합니다.
- Lighting > Reflections로 이동하여 Screen Space Reflection을 활성화합니다.
- Screen Space Reflections를 활성화한 후 Lighting > Reflections로 이동하여 Transparent Screen Space Reflection을 활성화합니다.
- Lighting > Shadows로 이동하여 Screen Space Shadows를 활성화합니다.
- Lighting > Lighting으로 이동하여 Screen Space Global Illumination을 활성화합니다.
현재 HDRP 프로젝트는 레이트레이싱을 완전히 지원합니다. 씬을 위해 레이트레이싱을 설정하는 방법에 대한 자세한 내용은 최종 설정을 참조하십시오.
최종 설정
HDRP 프로젝트가 레이트레이싱을 지원하므로 실제로 씬에서 사용하기 위해서 완료해야 할 단계가 몇 가지 있습니다.
프레임 설정
HDRP가 씬의 카메라에 대한 레이트레이싱 효과를 계산하려면 카메라가 활성화된 레이트레이싱이 있는 프레임 설정을 사용하는지 확인합니다. 모든 카메라에 대해 레이트레이싱을 기본값으로 활성화하거나 씬의 특정 카메라에 활성화할 수 있습니다.
기본값으로 레이트레이싱을 활성화하려면 다음 단계를 따르십시오.
- Project Settings 창을 연 다음(메뉴: Edit > Project Settings) HDRP Default Settings 탭을 선택합니다.
- Default Frame Settings For 드롭다운에서 Camera를 선택합니다.
- Rendering 섹션에서 Ray Tracing을 활성화합니다.
특정 카메라용으로 레이트레이싱을 활성화하려면 다음 단계를 따르십시오.
- Scene이나 Hierarchy에서 Camera를 클릭하여 인스펙터에서 확인합니다.
- General 섹션에서 Custom Frame Settings를 활성화합니다. 이렇게 하면 이 카메라에 대한 프레임 설정만 노출됩니다.
- Rendering 섹션에서 Ray Tracing을 활성화합니다.
빌드 설정
프로젝트를 Unity 플레이어로 빌드하려면 레이트레이싱에서 빌드는 64비트 아키텍처를 사용해야 합니다. 빌드가 64비트 아키텍처를 사용하도록 설정하려면 다음 단계를 따르십시오.
- Build Settings 창을 엽니다(메뉴: File > Build Settings).
- Architecture 드롭다운에서 x86_64를 선택합니다.
씬 확인
씬에서 레이트레이싱 사용 가능 여부를 확인하기 위해 HDRP에는 씬의 각 게임 오브젝트를 확인하는 메뉴 옵션이 포함되어 있습니다. 게임 오브젝트를 올바르게 설정하지 않으면 이 프로세스는 콘솔 창에 경고를 표시합니다. 이를 사용하려면 다음 단계를 따르십시오.
- Edit > Rendering > Check Scene Content for HDRP Ray Tracing을 클릭합니다.
- Console 창에서(메뉴: Window > General > Console) 경고가 표시되지 않는지 확인합니다.
레이트레이싱 및 메시
HDRP는 레이트레이싱 기반 효과를 프로젝트로 통합할 때 씬의 메시를 처리하는 방법을 변경합니다.
레이트레이싱을 활성화하면 HDRP는 레이트레이싱 가속도 구조체를 자동으로 생성합니다. 이 구조체를 사용하여 Unity는 실시간으로 씬에서 메시에 대한 레이트레이싱을 효율적으로 계산할 수 있습니다.
그 결과 레이트레이싱은 다음의 방법으로 씬에서 일부 메시가 나타나는 방법을 변경할 수 있습니다.
- 메시에 HDRenderPipeline 태그가 없는 머티리얼이 할당된 경우 HDRP는 이를 가속도 구조체에 추가하지 않고 결과적으로 메시에 레이트레이싱 기반 효과를 적용하지 않습니다.
- 메시에 할당된 데칼 머티리얼이 있는 경우 HDRP는 가속도 구조체에 이를 추가하지 않으며 해당 메시는 씬에 나타나지 않습니다.
- 메시에 단면과 양면 머티리얼의 조합이 있는 경우 HDRP는 이 메시에 할당한 모든 머티리얼을 양면으로 표시합니다.
레이트레이싱 효과 개요
HDRP는 레이트레이싱을 사용하여 일부 스크린 공간 효과와 그림자 기술, 메시 렌더링 기술을 교체합니다.
- 레이트레이싱된 앰비언트 오클루전은 스크린 공간 앰비언트 오클루전을 오프스크린 데이터를 사용할 수 있는 더 정확하고 레이트레이싱된 앰비언트 오클루전 기술로 교체합니다.
- 레이트레이싱된 컨택트 그림자는 컨택트 그림자를 오프스크린 데이터를 사용할 수 있는 더 정확하고 레이트레이싱된 컨택트 그림자 기술로 교체합니다.
- 레이트레이싱 기반 전역 조명은 HDRP의 광원 프로브와 라이트맵을 대체합니다.
- 레이트레이싱 기반 반사는 오프스크린 데이터를 사용할 수 있는 레이트레이싱된 반사 기술을 사용하는스크린 공간 반사를 대체합니다.
- 레이트레이싱 기반 그림자는 광원(예: 방향, 점, 면)에 대한 그림자 맵을 교체합니다.
- 재귀적 레이트레이싱은 메시에 대한 렌더링 파이프라인을 교체합니다. 이 기능에서 사용하는 메시는 굴절선과 반사선을 재귀적으로 캐스트합니다.
- 레이트레이싱 기반 피하 산란은 피하 산란을 오프스크린 데이터를 사용할 수 있는 더 정확한 레이트레이싱 기반 피하 산란과 교체합니다.
레이트레이싱 모드
HDRP에는 특정 레이트레이싱 기반 효과를 평가하는 방법을 정의하는 두 가지 레이트레이싱 모드가 포함되어 있습니다. 두 모드는 다음과 같습니다.
- Performance: 이 모드는 실시간 애플리케이션을 타겟으로 합니다. 이 모드를 선택하는 경우 레이트레이싱 기반 효과에는 성능과 품질의 균형을 맞추기 위해 변경할 수 있는 프리셋이 포함되어 있습니다.
- Quality: 이 모드는 최고의 품질 결과를 원하는 기술 데모와 애플리케이션을 타겟으로 합니다.
선택한 레이트레이싱 모드에 따라 HDRP는 일부 레이트레이싱 기반 효과에 대해 다른 프로퍼티를 노출할 수 있습니다.
HDRP가 프로젝트 수준이나 효과 수준에 사용하는 레이트레이싱 모드를 변경할 수 있습니다. 전체 프로젝트에 대해 이 모드를 변경하려면 다음 단계를 따르십시오.
- 프로젝트 창에서 HDRP 에셋을 클릭한 후 인스펙터에서 확인합니다.
- Rendering 섹션의 Supported Ray Tracing Mode 드롭다운에서 레이트레이싱 모드를 선택합니다.
Both를 선택한 경우 각 레이트레이싱 기반 효과용 레이트레이싱 모드를 변경할 수 있습니다. 이렇게 하려면 다음 단계를 따르십시오.
- 씬 또는 계층 구조 뷰에서 레이트레이싱 기반 효과가 포함된 Volume 컴포넌트가 들어있는 게임 오브젝트를 선택합니다.
- 레이트레이싱 기반 효과에 대한 인스펙터에서 Mode 프로퍼티를 변경하여 해당 효과에서 사용할 레이트레이싱 모드를 사용합니다. 이렇게 하면 인스펙터에서 사용할 수 있는 프로퍼티가 변경됩니다.
레이트레이싱 프로젝트
위에서 언급한 모든 효과를 포함하는 작은 레이트레이싱 프로젝트를 다음의 링크에서 찾을 수 있습니다. https://github.com/Unity-Technologies/SmallOfficeRayTracing 이 프로젝트는 이미 레이트레이싱 지원으로 설정되어 있습니다.
제한 사항
이 섹션에는 HDRP의 레이트레이싱 구현 제한 사항에 대한 정보가 포함되어 있습니다. 주로 HDRP가 레이트레이싱 기반 렌더 파이프라인이 아닌 래스터화된 렌더 파이프라인에서 지원하는 기능 리스트입니다.
레이트레이싱의 지원되지 않는 기능
현재 DX12 외의 플랫폼에서 레이트레이싱에 대한 지원은 하고 있지 않습니다.
Unity 2020.2의 HDRP 레이트레이싱에는 다음의 제한 사항이 있습니다.
- 버텍스 애니메이션을 지원하지 않습니다.
- 데칼을 지원하지 않습니다.
- 테셀레이션을 지원하지 않습니다.
- 픽셀당 변위(패럴랙스 오클루전 매핑, 하이트맵, 뎁스 오프셋)를 지원하지 않습니다.
- VFX와 터레인을 지원하지 않습니다.
- 그림자에 대한 정확한 컬링은 없으며 레이트레이싱 기반 효과에서 그림자 누락을 경험할 수 있습니다.
- MSAA를 지원하지 않습니다.
- LOD가 있는 렌더러의 경우 레이트레이싱 가속도 구조체는 최고 수준 LOD만 포함하고 있으며 낮은 LOD는 무시합니다.
- Graphics.DrawMesh를 지원하지 않습니다.
- 반사 프로브를 렌더링할 때 레이트레이싱은 지원되지 않습니다.
- HDRP는 직교 투사를 지원하지 않습니다. 직교 투사 모드를 활성화하는 경우 투명 머티리얼, 볼류메트릭 효과, 평면 반사에 대한 렌더링 문제가 발생할 수 있습니다.
레이트레이싱에 대해 지원되지 않는 셰이더 그래프 노드
셰이더 그래프를 사용하여 커스텀 셰이더를 빌드할 때 일부 노드는 레이트레이싱과 호환되지 않습니다. 이러한 노드 사용을 피하거나 레이트레이싱 셰이더 노드를 사용하여 대체 동작을 제공해야 합니다. 호환할 수 없는 노드 리스트는 다음과 같습니다.
- DDX 노드, DDY 노드, DDXY 노드
- View Space 모드의 Inputs > Geometry (포지션, 뷰 방향, 노멀 등) 아래의 모든 노드
- 체커보드 노드
지원되지 않는 패스트레이싱 기능
지원되지 않는 패스트레이싱 기능에 대한 자세한 내용은 패스트레이싱 제한 사항을 참조하십시오.