PC 및 콘솔 게임용 Unity에서 라이팅 시작하기
이 글은 개발자와 테크니컬 아티스트가 Unity에서 고해상도 렌더 파이프라인(HDRP)을 설정하고 사용하여 하이엔드 그래픽 사실성을 구현하는 방법을 설명하는 시리즈 중 첫 번째 글입니다. HDRP는 현실 세계에서 빛이 작동하는 것처럼 작업할 수 있도록 Unity의 실시간 렌더링 기술을 획기적으로 발전시킨 기술입니다.
하이엔드 조명을 위한 방법 시리즈의 다른 글도 꼭 읽어보세요:
HDRP는 다양한 기능으로 Unity의 기존 라이팅 시스템을 확장하여 씬을 실제 조명과 더욱 가깝게 렌더링할 수 있습니다:
- 물리적 조명 단위 및 노출: HDRP는 실제 조명 강도와 단위를 사용합니다. 알려진 광원의 사양과 일치하고 실제 카메라를 사용하여 노출을 설정합니다.
- 고급 조명: 스폿 및 영역 조명에 대한 추가 모양 옵션을 사용하여 조명 배치를 제어할 수 있습니다. 라이트 레이어를 사용하여 특정 메시에 대한 라이트의 영향을 제한할 수 있습니다. 화면 공간 전역 조명(SSGI) 및 화면 공간 굴절과 같은 실시간 효과를 적용하세요.
- 스카이스케이프: 다양한 기법으로 자연스러운 하늘을 생성하세요. 물리 기반 스카이 시스템을 사용하여 행성 대기를 절차적으로 시뮬레이션하고 볼류메트릭 클라우드, 클라우드 레이어를 추가하거나 HDRI를 적용하여 정적 하늘을 시뮬레이션할 수 있습니다.
- Fog: 안개로 장면에 깊이와 입체감을 더하세요. 볼류메트릭을 활성화하여 포그라운드 오브젝트에 안개 효과를 통합하고 시네마틱한 빛줄기를 렌더링할 수 있습니다. 볼류메트릭 라이트와 섀도의 라이트별 제어를 유지하고 로컬 볼류메트릭 포그 컴포넌트를 사용하여 3D 마스크 텍스처로 포그 밀도를 미세하게 제어할 수 있습니다.
- 볼륨 시스템: HDRP는 카메라 위치 또는 우선순위에 따라 다양한 조명 효과와 설정을 차단할 수 있는 직관적인 시스템을 갖추고 있습니다. 볼륨을 레이어링하고 블렌딩하여 씬의 모든 평방미터를 전문가 수준으로 제어할 수 있습니다.
- 포스트 프로세싱 HDRP 포스트 프로세싱은 기존 볼륨 시스템 위에 있는 일련의 볼륨 오버라이드로 제어됩니다. 앤티 앨리어싱, 톤 매핑, 컬러 그레이딩, 블룸, 피사계 심도 및 기타 여러 효과를 추가하세요.
- 고급 그림자: HDRP는 그림자에 대한 고급 예술적 및 성능 제어 기능을 제공합니다. 색조, 필터링, 해상도, 메모리 예산 및 업데이트 모드를 수정합니다. 컨택트 섀도우와 마이크로 섀도우로 작은 디테일을 강조하고 깊이를 더하세요.
- 고급 반사: 반사 표면은 여러 가지 기법을 사용하여 렌더링할 수 있습니다. 반사 프로브는 전통적인 반사 매핑 방식을 제공하며 평면 반사 프로브는 평평한 표면에 대한 고급 옵션을 제공하며, 스크린 공간 반사(SSR)는 깊이 버퍼를 사용하는 실시간 기술을 추가합니다.
Unity 2021 LTS 이상 버전에는 설치 시 HDRP 패키지가 포함되어 있어 항상 검증된 최신 그래픽 코드로 실행할 수 있습니다. 최신 Unity 릴리스를 설치하면 해당 버전의 HDRP도 함께 설치됩니다.
HDRP 패키지 버전 호환 가능한 Unity 버전 13.x 2022.1 12.x 2021 LTS(이 가이드에서 사용됨)
HDRP 그래픽 패키지를 특정 Unity 릴리스에 연결하면 호환성을 유지하는 데 도움이 됩니다. 그러나 매니페스트 파일을 재정의하여 사용자 지정 버전의 HDRP로 전환할 수도 있습니다.
시스템 요구 사항
HRDP는 현재 다음 대상 플랫폼과 호환됩니다:
- Windows 및 Windows 스토어, DirectX 11 또는 DirectX 12 및 셰이더 모델 5.0 지원
- 최신 콘솔(최소 소니 플레이스테이션 4 또는 마이크로소프트 엑스박스 원)
- Metal 그래픽을 사용하는 MacOS(최소 버전 10.13)
- 벌칸을 사용하는 Linux 및 Windows 플랫폼
HDRP는 컴퓨팅 셰이더를 지원하는 콘솔 및 데스크톱 플랫폼에서만 작동합니다. OpenGL 또는 OpenGL ES 장치는 지원하지 않습니다. 요구 사항 및 호환성에 대한 자세한 내용은 설명서를 참조하세요.
지원되는 VR 플랫폼과 디바이스에 대해 알아보려면 고화질 렌더 파이프라인의 가상 현실을 참조하세요.
HDRP 프로젝트를 설정하려면 Unity Hub에서 시작하세요:
먼저 새 프로젝트를 생성하고 나열된 사용 가능한 템플릿(이전 버전의 허브에서는 고해상도 RP라고 함)에서 3D(HDRP ) 빈 템플릿 또는 3D 샘플 씬(HDRP )을 선택합니다. 몇 가지 예제 프리셋이 포함된 HDRP 패키지를 가져오려면 최신 템플릿을 선택합니다.
3D 코어템플릿으로 프로젝트를 생성하는 경우 Unity는 이전 빌트인 렌더 파이프라인을 사용합니다. 패키지 관리자(창 > 렌더링 > HDRP 마법사)에서 프로젝트를 HDRP로 수동으로 마이그레이션할 수 있습니다.
Unity 레지스트리에서 고해상도 RP 패키지를 찾거나 검색 필드를 사용하여 패키지를 찾아 설치합니다.
현재 프로젝트 설정과 충돌이 있는 경우 문제를 해결하는 데 도움이 되는 HDRP 렌더 파이프라인 마법사가 나타납니다( 창 > 렌더 파이프라인 > HDRP 마법사에서도 찾을 수 있습니다). Unity 2021.2/HDRP 12에서는 창 > 렌더링 > HDRP 마법사 아래에 있습니다.
구성 확인으로 이동하여 모두 수정을 클릭하거나 각 문제에 대해 수정을 클릭하여 개별적으로 수정합니다. 이 체크리스트는 스크립터블 렌더 파이프라인(SRP) 프로젝트가 아닌 프로젝트에서 마이그레이션하는 데 도움이 될 수 있습니다.
마법사가 완료되면 새 파이프라인 에셋을 생성할지 묻는 메시지가 표시됩니다. 특정 파이프라인 설정을 저장하는 디스크의 파일입니다. 생성하기를 선택하여 새 렌더 파이프라인 에셋을 추가하고 여기에 파일을 할당합니다.
HDRP가 제대로 작동하면 구성 확인의 모든 확인란이 녹색으로 표시되는지 확인합니다. 배경 환경 색상이 변경되는 것을 확인할 수 있습니다.
빈 프로젝트에서 수동으로 설치하면 3D 샘플 씬(HDRP)이 자동으로 임포트되지 않는다는 점을 기억하세요. 이 가이드에 표시된 예제 에셋에 액세스하려면 3D 샘플 씬 템플릿을 사용하세요.
Unity 허브의 3D 샘플 씬은 HDRP 및 물리 기반 조명을 시작하는 데 도움이 되는 템플릿 프로젝트입니다. 이 경량 프로젝트는 100메가바이트 미만으로, 참고용으로 빠르게 로드할 수 있는 HDRP의 좋은 작업 예시를 제공합니다.
소규모 멀티룸 환경은 서로 다른 조명 설정이 적용된 세 개의 공간을 보여줍니다. 태양을 나타내는 방향광은 실제 100,000룩스의 강도를 가지며, 각 위치에서 조명 환경에 맞게 카메라의 노출을 보정합니다.
WASD 키와 마우스를 사용하여 레벨을 돌아다니며 FPS 컨트롤러를 움직입니다.
- 1호실은 머리 위 햇빛이 비추는 둥근 플랫폼입니다. 데칼은 콘크리트 바닥에 때와 물웅덩이를 더합니다.
- 2번 방은 채광창에서 나오는 빛의 볼륨감 있는 축과 유리 케이스 내부의 나무를 위한 고급 소재를 추가했습니다.
- 3호실에서는 실내 인공 조명과 발광 소재를 전시합니다.
자세한 내용은 Unity 테크니컬 아티스트 피에르 이브 돈잘라즈가 작성한 블로그 게시물에서 HDRP 3D 샘플 씬에 대해 자세히 설명합니다.
더 많은 HDRP 샘플 콘텐츠
HDRP 3D 샘플 씬을 살펴보고 나면 다른 프로젝트에도 도움이 될 수 있습니다.
원래 게임용은 아니었지만 자동차 쇼룸 프로젝트 는 사실적인 라이팅으로 매우 디테일한 차량을 보여줍니다. Unity Hub를 통해 제공되는 이 인터랙티브 데모에서 무대 조명, 자동차 페인트, 텍스처, 배경을 변경해 보세요.
한편 우주선 데모 은 공상 과학 환경에서 시각 효과 그래프와 다른 HDRP 기능을 선보입니다. 유니티의 GitHub 저장소에서 다운로드하거나 Steam에서 액세스할 수 있습니다.
VR에 HDRP를 사용하는 경우라면 VR 연금술사 연구소. 이 프로젝트는 중세의 작은 실험실에서 인터랙티브 효과를 선보입니다.
시네마틱 콘텐츠 또는 애니메이션 영화를 제작하는 방법을 알아보려면 Unity 허브에서 시네마틱 스튜디오 템플릿을 설치하세요. 이 템플릿은 Mich-L이라는 재미있는 단편 영화의 샷을 설정하고 라이팅하는 방법을 설명하며 스타일라이즈드 렌더링과 포토리얼 렌더링을 혼합합니다.
프로젝트 설정(편집 > 프로젝트 설정)에는 그래픽, HDRP 글로벌 설정, 화질 등 몇 가지 필수 설정이 있습니다.
이제 Unity 2021.2/HDRP 12 이상에서는 HDRP 기본 세팅을 HDRP 글로벌 세팅이라고 합니다.
그래픽 설정
이미지 상단의 스크립터블 렌더 파이프라인 설정은 모든 HDRP 설정이 저장된 디스크의 파일을 나타냅니다. 프로젝트당 이러한 파이프라인 에셋을 여러 개 가질 수 있습니다.
각각을 별도의 구성 파일로 생각하세요. 예를 들어, 다양한 대상 플랫폼(Xbox, PlayStation 등)에 대한 특수 설정을 저장하거나 플레이어가 런타임에 바꿀 수 있는 다양한 비주얼 품질 수준을 나타내는 데 사용할 수 있습니다.
3D 샘플 씬은 설정 폴더에 있는 여러 파이프라인 에셋으로 시작됩니다: HDRPHighQuality, HDRPLowQuality, HDRPMediumQuality. DefaultHDRPAsset이 포함된 HDRPDefaultResources 폴더도 있습니다.
품질 설정을 사용하면 파이프라인 에셋 중 하나를 미리 정의된 품질 레벨에 연결할 수 있습니다.
렌더링 옵션에서 특정 렌더 파이프라인 에셋을 활성화하려면 상단에서 품질 수준을 선택합니다. 기본값을 사용자 지정하거나 추가 파이프라인 에셋과 짝을 이루는 추가 품질 레벨을 만들 수 있습니다.
품질 수준은 파이프라인에서 활성화된 특정 시각적 기능 세트를 나타냅니다. 예를 들어 애플리케이션 내에서 그래픽을 위한 여러 계층을 만들 수 있습니다. 런타임에 플레이어는 하드웨어에 따라 활성화된 품질 수준을 선택할 수 있습니다.
실제 파이프라인 설정을 편집하려면 품질/HDRP 하위 섹션으로 이동합니다. 그렇지 않으면 프로젝트 보기로 이동하여 파이프라인 에셋을 선택하고 인스펙터에서 해당 설정을 편집합니다.
파이프라인 에셋에서 더 많은 기능을 활성화하면 더 많은 리소스가 소모된다는 점에 유의하세요. 일반적으로 의도한 효과를 얻기 위해 꼭 필요한 것만 사용하도록 프로젝트를 최적화하세요. 특정 기능이 필요하지 않은 경우 해당 기능을 해제하여 리소스를 절약하고 성능을 개선할 수 있습니다.
사용하지 않을 필요가 없는 경우 비활성화할 수 있는 몇 가지 기능은 다음과 같습니다:
- HDRP 에셋에서: 데칼, 저해상도 투명도, 투명 백페이스/뎁스 프리패스/포스트패스, SSAO, SSR, 접촉 그림자, 볼류메트릭, 서브서피스 스캐터링, 디스토션
- 카메라의 프레임 설정(메인 카메라)에서 반사 같은 통합 효과에 사용되는 카메라 또는 사용자 지정 효과에 사용되는 추가 카메라를 설정할 수 있습니다: 굴절, 후처리, 후처리 후, 투과, 반사 프로브, 평면 반사 프로브 및 빅 타일 프리패스
이 블로그 게시물을 읽고 성능 향상을 위한 HDRP 기능에 대해 알아보세요.
HDRP 글로벌 설정
HDRP 기본 설정 (HDRP 버전 12 이전)이라고도 하는 HDRP 글로벌 설정 섹션에서는 프로젝트의 기본 구성을 결정합니다. 카메라 위치에 따라 로컬 또는 글로벌 볼륨 컴포넌트를 통해 씬에서 이러한 설정을 오버라이드할 수 있습니다.
글로벌 설정은 상단 필드에 정의된 별도의 파이프라인 에셋에 저장되며, 여기서 기본 렌더링 및 포스트 프로세싱 옵션을 설정할 수 있습니다.
프로젝트를 개발할 때 특정 기능을 켜거나 끄기 위해 HDRP 글로벌 설정으로 돌아가야 할 수도 있습니다. 일부 기능은 글로벌 설정에서 해당 확인란이 활성화되어 있지 않으면 렌더링되지 않습니다.
렌더링 성능과 메모리 사용량에 부정적인 영향을 미칠 수 있으므로 필요한 기능만 사용하도록 설정하세요. 특정 설정은 볼륨 프로필에 표시되는 반면, 다른 기능은 프레임 설정에 있습니다(사용법에 따라 다름).
HDRP의 기능 세트에 익숙해지는 동안 프로젝트 설정의 오른쪽 상단에 있는 검색 필드를 활용하세요. 이렇게 하면 검색어가 강조 표시된 관련 패널만 표시됩니다.
HDRP 글로벌 설정에서 기능을 활성화한다고 해서 언제든 모든 카메라에서 렌더링할 수 있다는 보장은 없습니다. 프로젝트 설정 > 퀄리티에서 지정한 퀄리티 레벨이 있는 렌더 파이프라인 에셋이 해당 기능도 지원하는지 확인해야 합니다. 예를 들어 카메라가 볼류메트릭 클라우드를 렌더링할 수 있도록 하려면 HDRP 글로벌 설정 > 프레임 설정 > 카메라 > 라이팅과 활성 렌더 파이프라인 에셋의 라이팅 > 볼류메트릭 아래에서 토글해야 합니다.
CPU에 구속되지 않는 경우 해상도는 성능에 큰 영향을 미칠 수 있습니다. 동적 해상도는 렌더링 해상도를 낮추고 결과물을 출력 화면 해상도에 맞게 조정합니다. 이 업스케일을 수행하는 필터는 2021 LTS에서 크게 개선되어 품질 손실을 최소화하면서 70% 이하의 해상도로 렌더링할 수 있습니다.
Unity 2021 LTS에서 HDRP는 최신 슈퍼 샘플링 기술이 적용된 다양한 솔루션을 제공합니다:
- 이를 지원하는 GPU용 NVIDIA DLSS(딥 러닝 슈퍼 샘플링)
- 플랫폼 전반의 AMD FSR(FidelityX 슈퍼 해상도)
- 플랫폼 전반의 TAA 업스케일(템포럴 앤티 앨리어싱)
HDRP 에셋에서 강제로 스케일을 조정하거나 자체 로직을 코딩하여 스케일을 조정할 수 있습니다.
프로젝트에서 동적 해상도를 설정하고 필요에 가장 적합한 알고리즘을 선택하는 방법에 대한 지침을 얻으려면 설명서에서 이 페이지를 참조하세요.
파이프라인 에셋에서 HDRP 설정을 구성할 때는 일반적으로 렌더링 아래의 라이팅 셰이더 모드로 시작하며, 여기서 디퍼드, 포워드 또는 둘 다 중에서 선택할 수 있습니다. 이는 선택할 수 있는 렌더링 경로를 나타내며, 각각 파이프라인이 지오메트리를 렌더링하고 라이팅하는 방법을 알려주는 특정 일련의 작업이 포함되어 있습니다. 렌더링 경로를 사용자 지정하는 방법은 위의 방법을 참조하세요.
기본 렌더링 경로를 설정하려면 라이팅 셰이더 모드로 이동하여 포워드 또는 디퍼드를 선택합니다. HDRP는 유연하며 두 가지를 모두 선택할 수도 있습니다. 이 옵션을 사용하면 대부분의 렌더링에 하나의 렌더링 경로를 사용한 다음 각 카메라에 대해 렌더링 경로를 재정의할 수 있습니다. 하지만 GPU 메모리를 더 많이 사용하므로 일반적으로 포워드 또는 디퍼드 중 하나를 선택하는 것이 좋습니다.
모든 카메라에 기본적으로 적용하려면 HDRP 기본 설정으로 이동하여 기본 프레임 설정을 찾습니다. 렌더링 경로는 카메라, 구운 또는 커스텀 리플렉션, 실시간 리플렉션에 적용할 수 있습니다. 렌더링 그룹에서 조명 셰이더 모드에서 렌더링 경로를 설정합니다.
특정 카메라에 영향을 주려면 해당 카메라의 사용자 지정 프레임 설정을 확인합니다. 그런 다음 렌더링 그룹에서 조명 셰이더 모드의 렌더링 경로를 오버라이드하고 변경합니다.
포워드 렌더링에서는 그래픽 카드가 화면의 지오메트리를 정점으로 분할합니다. 이러한 정점은 다시 조각 또는 픽셀로 세분화되어 화면에 렌더링되어 최종 이미지를 생성합니다.
각 객체는 한 번에 하나씩 그래픽 API로 전달됩니다. 포워드 렌더링에는 각 라이트에 대한 비용이 발생합니다. 씬에 조명이 많을수록 렌더링 시간이 더 오래 걸립니다.
포워드 렌더링은 별도의 패스로 조명을 그립니다. 동일한 게임 오브젝트에 여러 개의 라이트가 닿는 경우, 많은 라이트와 오브젝트가 존재할 때 상당한 오버드로가 발생하고 속도가 느려질 수 있습니다.
기존의 포워드 렌더링과 달리 HDRP는 오브젝트 머티리얼당 단일 패스로 여러 개의 조명을 컬링하고 렌더링하는 등 새로운 기능을 추가했습니다. 하지만 여전히 비교적 비용이 많이 드는 프로세스입니다. 성능이 문제가 되는 경우 디퍼드 셰이딩을 대신 사용할 수 있습니다.
HDRP는 오브젝트별로 조명을 계산하지 않는 디퍼드 셰이딩을 활용할 수도 있습니다. 대신 디퍼드 셰이딩은 무거운 렌더링을 나중 단계로 연기하고 두 개의 패스를 사용합니다.
첫 번째 패스, 즉 G-버퍼 지오메트리 패스 동안 Unity는 게임 오브젝트를 렌더링합니다. 이 패스는 여러 유형의 지오메트리 프로퍼티를 검색하여 텍스처 세트에 저장합니다(예: 디퓨즈 및 스페큘러 컬러, 표면 평활도, 오클루전, 노멀 등).
두 번째 패스, 즉 라이팅 패스에서 Unity는 G-버퍼가 완료된 후 씬의 조명을 렌더링하여 셰이딩을 지연시킵니다. 디퍼드 셰이딩 경로는 각 픽셀을 반복하고 개별 오브젝트가 아닌 버퍼를 기반으로 조명 정보를 계산합니다.
렌더링 경로 간의 기술적 차이점에 대한 자세한 내용은 HDRP 문서에서 포워드 렌더링과 디퍼드 렌더링을 참조하세요.