이는 개발자와 기술 아티스트가 Unity에서 HDRP(고화질 렌더 파이프라인)를 설정하고 사용하여 고급 그래픽 현실감을 구현하는 방법을 설명하는 일련의 기사 중 세 번째입니다. HDRP는 Unity 실시간 렌더링의 기술적 도약을 의미하므로 실제 세계에서 작동하는 것처럼 조명을 사용하여 작업할 수 있습니다.
고급 조명에 대한 방법 시리즈의 다른 기사를 읽어보세요.
HDRP에는 장면의 조명을 제어하는 데 도움이 되는 다양한 조명 유형과 모양이 포함되어 있습니다.
조명 유형
Unity의 다른 렌더 파이프라인과 유사하게 사용 가능한 조명 유형은 다음과 같습니다.
- 방향: 이는 강도가 감소하지 않는 완벽하게 평행한 광선을 사용하여 무한히 먼 광원에서 나오는 빛처럼 동작합니다. 방향 조명은 종종 햇빛을 대신합니다. 외부 장면에서는 이것이 주요 조명이 되는 경우가 많습니다.
- 점: 이는 원뿔, 피라미드 또는 상자 모양을 취할 수 있는 실제 스포트라이트와 유사합니다. 점은 원뿔/피라미드 모양의 가장자리를 향해 뿐만 아니라 전방 z축을 따라 떨어집니다.
- 가리키다: 이것은 공간의 한 지점에서 모든 방향을 비추는 전방향성 조명입니다. 램프나 양초와 같이 빛나는 광원에 유용합니다.
- 영역: 이는 특정 모양(직사각형, 튜브 또는 디스크)의 표면에서 빛을 투사합니다. 면광은 창이나 형광등처럼 중앙에서 균일한 강도를 갖는 넓은 광원과 같은 기능을 합니다.
범위를사용하여 스폿, 포인트 및 영역 조명이 떨어지는 방식을 수정합니다. 많은 HDRP 조명은 현실 세계의 광원처럼역제곱 법칙을사용하여 감소합니다.
스폿 및 영역 조명에는 다음 섹션에서 설명하는 것처럼 각 조명이 떨어지는 방식을 제어하기 위한 추가 모양이 있습니다.
HDRP 스포트라이트는 세 가지 모양을 취할 수 있습니다.
- 콘: 단일 지점에서 원형 베이스로 빛을 투사합니다. 외부 각도(도)와내부 각도(백분율)를 조정하여 원뿔 모양을 만들고 각도 감쇠를 수정합니다.
- 피라미드: 단일 지점에서 정사각형 베이스로 빛을 투사합니다. Spot Angle및Aspect Ratio 를사용하여 피라미드 모양을 조정합니다.
- 상자: 직사각형 볼륨 전체에 빛을 균일하게 투사합니다. X 및 Y 크기는 기본 직사각형을 결정하고 범위는 Y 치수를 제어합니다. 상자 경계 내에서 햇빛을 시뮬레이션하는 데 사용할 수 있는범위 감쇠를선택하지 않으면 이 조명에는 감쇠가 없습니다.
HDRP 영역 조명은 세 가지 모양을 취할 수 있습니다.
- 직사각형: 정의된 범위 밖으로 로컬 양의 Z 방향으로 직사각형 모양의 빛을 투사합니다.
- 튜브: 정의된 범위까지 모든 방향으로 단일 선에서 빛을 투사합니다. 이 조명은실시간 모드에서만 작동합니다.
- 디스크: 정의된 범위 밖으로 로컬 양의 Z 방향으로 디스크 모양의 빛을 투사합니다. 이 조명은베이킹 모드에서만 작동합니다.
HDRP에는 검사기 오른쪽 상단에 있는추가 항목 메뉴(⋮)에 몇 가지 고급 컨트롤이 포함되어 있습니다. 추가 옵션을 보려면추가 속성 표시를선택합니다.
여기에는Affect Diffuse및Affect Specular토글이 포함됩니다. 예를 들어, 컷씬이나 영화 조명에서는 더 부드러운 확산광을 생성하는 조명과 독립적으로 밝게 빛나는 하이라이트를 제어하는 조명을 분리할 수 있습니다.
Intensity Multiplier를사용하여 원래 강도 값을 실제로 변경하지 않고 조명의 전체 강도를 조정할 수도 있습니다. 이는 여러 조명을 동시에 밝게 하거나 어둡게 하는 데 유용합니다.
HDRP를 사용하면조명 레이어를사용하여 조명이 장면의 특정 메시에만 영향을 미치도록 할 수 있습니다. 이는 Light 구성 요소 및 MeshRenderer와 연결할 수 있는LayerMask입니다.
조명 속성에서추가 옵션 버튼을 클릭하여일반아래의조명 레이어 드롭다운을 확인하세요. 조명과 연결할 LayerMask를 선택하세요. 추가 항목 메뉴(☰)에서추가 속성 표시를선택할 수도 있습니다. 마찬가지로 일반 아래에 조명 레이어 드롭다운이 표시됩니다. 조명과 연결하려는 LayerMask를 선택합니다.
다음으로렌더링 레이어 마스크를사용하여MeshRenderers를설정합니다. 일치하는 LayerMask의 조명만 메시에 영향을 미칩니다. 이 기능은 빛 누출 문제를 해결하는 데 매우 중요하며 빛이 의도한 대상에만 도달하도록 보장합니다. 또한 캐릭터만 전용 영화 조명을 받을 수 있도록 컷씬 조명을 설정하는 작업 흐름의 일부일 수도 있습니다.
예를 들어 건물 내부의 조명이 실수로 외부 벽을 관통하는 것을 방지하려면 내부와 외부에 특정 조명 레이어를 설정할 수 있습니다. 이를 통해 조명 설정을 세밀하게 제어할 수 있습니다.
조명 레이어를설정하려면HDRP 기본 설정으로 이동하세요. 레이어 이름 섹션에서는조명 레이어 0~7의 문자열 이름을 설정할 수 있습니다.
Light 속성의 전체 목록을 포함한 자세한 내용은Light 구성 요소 설명서를참조하세요.
Unity 2021 LTS 이상에는 카메라와 피사체 사이의 각도와 거리를 제어하여 조명을 빠르게 설정하는 데 도움이 되는 Light Anchor 시스템이 포함되어 있습니다. 또한 9가지 사전 설정을 통해 일반적인 조명 각도를 선택할 수도 있습니다.
캐릭터나 소품 주위에 여러 개의 조명을 사용하여 영화 장면, 제품 또는 장면을 조명해야 하는 경우 Light Anchor 구성 요소는 앵커 대상 주변의 화면 공간에서 빠르고 효율적인 조명 조작을 제공합니다.
먼저 카메라에 MainCamera 태그가 지정되어 있는지 확인한 다음 제어하려는 스포트라이트에Light Anchor구성 요소를 추가하세요. 빛과 피사체를 정렬합니다. 이제 이 위치가 스포트라이트의 앵커 포인트가 됩니다. 앵커 포인트와 스포트라이트 사이의거리를늘리거나 게임 뷰 내에서 조명의 궤도, 고도 및 롤을 조정하여 앵커 포인트 주위의 조명 위치를 조정할 수도 있습니다. 장면 뷰의 조명.
자세한 내용은라이트 앵커에 대한 소개 프레젠테이션을 확인하세요.
HDRP는 빛의 강도를 측정하기 위해PLU(물리적 조명 단위)를사용합니다. 이는 칸델라, 루멘, 럭스, 니트 등 조도에 대한 실제SI측정값과 일치합니다. PLU는 Unity의 한 단위가 정확성을 위해 1미터와 동일할 것으로 기대합니다.
단위
물리적 조명 단위에는 광속과 조도 단위가 모두 포함될 수 있습니다. 광속은 광원에서 방출되는 빛의 총량을 나타내는 반면, 조도는 물체가 받는 빛의 총량을 나타냅니다(종종 단위 면적당 광속으로 표시됨).
상업용 조명과 사진은 애플리케이션에 따라 단위를 다르게 표현할 수 있으므로 Unity는 호환성을 위해 여러물리적 조명 단위를지원합니다.
- 칸델라: 1단위는 양초의 광속과 동일합니다. 이것을 흔히 캔들파워라고도 합니다.
- 루멘: 이는 입체각(스테라디안)에 대한 1칸델라로 정의되는 광속의 SI 단위입니다. 상업용 전구 사양에서는 일반적으로 루멘을 볼 수 있습니다. Unity Spot, Point 또는 Area 조명과 함께 사용하세요.
- 럭스: 1제곱미터의 면적에 1루멘을 방출하는 광원의 조도는 1룩스입니다. 실제 조도계는 일반적으로 럭스를 읽습니다. Unity에서 방향성 조명과 함께 이 장치를 자주 사용하게 될 것입니다.
- 니트: 이는 제곱미터당 1칸델라에 해당하는 휘도 단위입니다. 디스플레이 장치 및 LED 패널(예: 텔레비전 또는 모니터)은 밝기를 니트 단위로 측정하는 경우가 많습니다.
- EV100: EV100에 해당하는 강도에는 ISO 필름 100의 노출 값이 있습니다(이 페이지의 노출 값 공식 섹션 참조). 노출을 늘리면 로그 동작으로 인해 조명이 두 배로 늘어납니다.
실제 광원을 재현하려면 기술 사양에 나열된 장치로 전환하고 올바른 광속 또는 휘도를 연결하십시오. HDRP는 물리적 조명 단위와 일치하므로 강도를 설정할 때 추측할 필요가 거의 없습니다.
아이콘을클릭하여외부,내부,장식및양초에 대한 사전 설정을 선택합니다. 특정 값과 명시적으로 일치하지 않는 경우 이러한 설정은 좋은 시작점이 됩니다.
일반적인 조명 및 노출 값
여기에 표시된 치트 시트에는 일반적인 실제광원의 색온도 및 조명 강도가 포함되어 있습니다. 또한 다양한 조명 시나리오에 대한노출 값도 포함되어 있습니다.
물리적 조명 단위 문서에서 전체 조명 값 표를 찾을 수 있습니다.
IES 프로필을사용하여 포인트, 스폿 및 영역 조명이 실제 조명의 밝기 감소를 밀접하게 모방하도록 만듭니다. 이는 특정 제조업체 사양을 조명 패턴에 적용하는라이트 쿠키처럼 작동합니다. IES 프로파일은조명에 사실감을 더욱 높여줍니다.
자산 > 새 자산 가져오기에서IES 프로필을가져옵니다. 임포터는 올바른 강도의Light Prefab을자동으로 생성합니다. 그런 다음 Prefab을Scene 뷰나 Hierarchy로 드래그하고색 온도를조정하면 됩니다.
현실 세계에서는 빛이 반사되어 우리 주변으로 흩어집니다. 하늘과 땅은 무작위 광자가 대기와 지구 사이, 그리고 궁극적으로 관찰자 사이에서 반사되면서 환경 조명에 기여합니다.
HDRP에서는시각적 환경 재정의를사용하여 장면의 하늘과 일반적인 분위기를 정의할 수 있습니다.
예를 들어 대기 모드: 동적하늘 조명을 시각적 환경의하늘 > 유형에 나타나는 현재 재정의로 설정합니다.
그렇지 않으면, 대기 모드: 공전 조명 창의 환경 탭에 있는 하늘 설정이 기본값입니다.
다른 광원이 비활성화된 경우에도 시각적 환경은 샘플 장면에 일반적인 주변 조명을 제공합니다.
태양의 주광을 추가하면 장면의 전반적인 조명이 완성됩니다. 환경 조명은 그림자 영역을 채워 부자연스럽게 어둡게 나타나지 않도록 도와줍니다.
HDRP에는 하늘을 생성하는 세 가지 기술이 포함되어 있습니다. 하늘 유형을 HDRI Sky,Gradient Sky또는Physically Based Sky로 설정합니다. 그런 다음하늘 메뉴에서 적절한 재정의를 추가합니다.
시각적 환경 하늘을 적용하는 것은 전체 가상 세계를 거대한 조명 구체로 감싸는 것과 유사합니다. 구의 색상이 지정된 다각형은 하늘, 수평선 및 땅에서 일반적인 빛을 제공합니다.
HDRI Sky를사용하면 HDRI(High Dynamic Range) 사진으로 만든 큐브맵으로 하늘을 표현할 수 있습니다. 온라인에서 수많은 무료 및 저가 HDRI 소스를 찾을 수 있습니다. 좋은 출발점은 Asset Store의Unity HDRI Pack입니다. 모험을 즐기고 싶다면 자신만의 HDRI를 촬영하는 방법에 대한가이드도 있습니다.
HDRI 자산을 가져온 후HDRI Sky Override를 추가하여HDRI Sky Asset을로드합니다. 또한왜곡,회전및업데이트 모드에 대한 옵션을 조정할 수도 있습니다.
하늘은 조명 소스이므로강도 모드 를지정한 다음 해당노출/승수/럭스 값을선택하여 환경 조명의 강도를 제어합니다. 강도 및 노출 값의 예는 위의 조명 및 노출 치트 시트를 참조하세요.
클라우드 레이어 애니메이션
HDRI 하늘에 애니메이션을 적용하고 절차적으로 또는 플로우맵을 사용하여 HDRI 맵을 왜곡할 수 있습니다. 이를 통해 정적 HDRI에 바람 효과를 가짜로 만들거나 다른 특정 VFX를 만들 수 있습니다.
색상 램프를 사용하여 배경 하늘을 대략적으로 표현하려면시각적 환경에서그라데이션 하늘을선택합니다. 그런 다음Gradient Sky Override 를추가합니다. Top,Middle및Bottom 을사용하여 그라데이션 색상을 결정합니다.
Gradient Diffusion으로 색상 램프를 혼합하고 조명 강도에 맞게Intensity(강도)를조절합니다.
그라디언트보다 훨씬 더 사실적인 효과를 얻으려면물리적 기반 하늘 재정의 를사용하세요.
이는 대기를 통해 분산되는 빛을 시뮬레이션하는Mie 산란및Rayleigh 산란과 같은 현상을 통합하여 자연 하늘의 색상을 재현하는 하늘을 절차적으로 생성합니다. 물리적 기반 스카이에는 정확한 시뮬레이션을 위한 방향성 조명이 필요합니다.
연기, 안개, 아지랑이는 영화 촬영의 전통적인 도구입니다. 무대 조명에 깊이와 입체감을 더하거나 분위기 있는 분위기를 조성하는 데 도움이 될 수 있습니다.
HDRP에서 비슷한 이점을 얻으려면Fog를사용하세요. 불투명도는 카메라에서 객체까지의 거리에 따라 달라집니다. 안개는 카메라의 원거리 클리핑 평면을 숨겨 멀리 있는 형상을 장면에 다시 혼합할 수도 있습니다.
HDRP는 안개 재정의(Fog Override)로 전역 안개(Global Fog)를 구현합니다. 여기서 안개는 카메라와의 거리와 월드 공간 높이로 인해 기하급수적으로 흐려집니다.
장면의볼륨에안개 재정의를설정합니다. 기본 높이는일정하고 두꺼운 안개가 얇아지기 시작하여 위쪽으로 이동하는 경계를 결정합니다. 안개 밀도는최대 높이 에도달할 때까지 기하급수적으로 계속 감소합니다.
마찬가지로안개 감쇠 거리(Fog Attenuation Distance)와최대 안개 거리(Max Fog Distance)는카메라로부터의 거리가 멀어질수록 안개가 사라지는 방식을 제어합니다. 고정 색상과 기존하늘 색상간에색상 모드를전환합니다.
대기 산란을 시뮬레이션하려면 체적 안개를 활성화하세요. 조명 > 프레임 설정(카메라아래 또는HDRP 기본 설정)에서안개및체적 측정을확인하세요. 또한HDRP 파이프라인 자산에서볼류메트릭 포그를활성화합니다.
볼류메트릭 안개 거리(Volumetric Fog Distance)는 카메라의 가까운 클리핑 평면에서 볼류메트릭 조명 버퍼 뒤쪽까지의 거리(미터 단위)를 설정합니다. 이렇게 하면 공기 중 물질로 대기가 채워지고 범위 내의 게임 개체가 부분적으로 가려집니다.
체적 조명은일몰 시 구름 뒤의 어두컴컴한 광선이나 나뭇잎을 통과하는 극적인 태양 광선의 렌더링을 시뮬레이션할 수 있습니다.
각 조명 구성요소(영역 조명 제외)에는체적 그룹 이있습니다. Enable 을선택한 다음Multiplier및Shadow Dimmer 를설정하십시오. 실시간 또는 혼합 모드 조명은 볼류메트릭 포그 내에서 '신의 광선'을 생성합니다. Multiplier는 강도를 조정하고 Shadow Dimmer는 그림자 투사 표면이 빛을 자르는 방식을 제어합니다.
샘플 장면의 Room 2에는 채광창과 체적 안개가 있습니다. 유리 케이스의 프레임은 천장에서 나오는 햇빛으로 체적 그림자를 새깁니다. Shadow Dimmer를 높이고 Multiplier를 과장하여 효과를 강화하십시오.
Fog Override가 제공할 수 있는 것보다 더 자세한 안개 효과를 원하는 경우 HDRP는Local Volumetric Fog(HDRP 12 이전에는 Density Volume 구성 요소라고 함)도 제공합니다.
이는 볼륨 시스템 외부의 별도 구성 요소입니다. 메뉴(GameObject > Rendering > Local Volumetric Fog)에서로컬 볼륨 안개 게임 오브젝트를생성하거나계층 구조(렌더링 > 로컬 볼륨 안개)를 마우스 오른쪽 버튼으로 클릭하세요.
그러면 안개가 가득한 경계 상자가 생성됩니다. 크기, 축 제어, 혼합/페이드 옵션을 조정합니다. 기본적으로 안개는 균일하지만밀도 마스크 텍스처하위 섹션 아래의텍스처 필드에3D 텍스처를적용할 수 있습니다. 이는 사용자에게 안개 모양에 대한 더 많은 유연성을 제공합니다.
패키지 관리자 > 로컬 볼륨 3D 텍스처 샘플에서 예제를 다운로드하거나문서화 절차에 따라 자신만의 밀도 마스크를 생성하세요.
애니메이션에스크롤 속도를추가하고타일링을조정합니다. 그러면 볼류메트릭 포그(Volumetric Fog)가 장면 전체를 부드럽게 굴러갈 수 있습니다.
HDRP는 성능을 향상하기 위해 Local Volumetric Fog를 복셀화하지만 복셀화는 거칠게 나타날 수 있습니다. 앨리어싱을 줄이려면밀도 마스크 텍스처를 사용하고혼합 거리를늘려 안개의 가장자리를 부드럽게 만드세요.
HDRP 버전 12 이상에서는 HDRP 파이프라인 자산에서 로컬 볼륨 해상도를 최대 256x256x256까지 활성화할 수 있습니다. 이를 통해 보다 정확하고 대규모의 효과를 얻을 수 있습니다.
구름이 없으면 하늘이 완전해 보이지 않을 것입니다. HDRP 12 이상에서는클라우드 레이어를사용하여 하늘 및 시각적 환경 재정의를 보완하는 자연스러운 구름을 생성합니다.
체적 구름(Volumetric Cloud)은조명과 바람에 반응하는 실제 두께로 사실적인 구름을 생성합니다.
클라우드 레이어는벡터 변위를 제어하기 위해 빨간색과 녹색 채널이 있는플로우맵을사용하여 애니메이션을 적용할 수 있는 2D 텍스처입니다. 하늘 앞에 위치하며 땅에 그림자를 드리울 수 있는 옵션을 제공합니다.
플레이 모드에서 클라우드 레이어를 사용하여 하늘에 약간의 움직임을 추가하여 배경을 더욱 역동적으로 만듭니다.
로컬 또는 글로벌 볼륨의 시각적 환경에서배경 클라우드를활성화합니다. 그런 다음Cloud Layer Override 를추가합니다.
클라우드 맵 자체는 RGBA 채널이 모두 서로 다른 구름 텍스처(각각 적운, 층운, 권운 및 묶은 구름)를 포함하는원통형 투영을사용하는 텍스처입니다. 그런 다음 Cloud Layer 컨트롤을 사용하여 각 채널을 혼합하고 원하는 구름 형성을 구축할 수 있습니다.. 최대 8개의 구름 풍경을 시뮬레이션하고 혼합할 수 있는 4개의 채널이 있는 2개의 레이어가 있습니다. 구름의 애니메이션, 조명, 색상, 그림자를 원하는 대로 수정하세요.
구름이 빛과 상호 작용해야 하는 경우체적 구름 을사용하십시오. 이는 그림자를 렌더링하고, 안개를 받고, 빛의 체적 축을 생성할 수 있습니다. 이를 Cloud Layer 클라우드와 결합하거나 별도로 추가하세요.
볼륨 측정 클라우드를 활성화하려면:
- HDRP 자산: 조명 > 체적 구름 > 체적 구름으로 이동합니다.
- 로컬 또는 글로벌 볼륨: 체적 구름 재정의 를추가합니다.
고급 및 수동 클라우드 제어 옵션을 사용하면 각 클라우드 유형에 대한 맵을 정의할 수 있습니다.
클라우드 계층및볼륨 클라우드재정의에 대한 자세한 내용은HDRP의 클라우드 문서를참조하세요. 체적 구름에 대한 자세한 내용은Unity 2021.2의 새로운 조명 기능을참조하세요.
우리는 어둠 없이는 빛을 인식할 수 없습니다. 잘 배치된 그림자는 장면에 깊이와 입체감을 더해 조명 자체만큼 개성을 더할 수 있습니다. HDRP에는 그림자를 미세 조정하고 렌더링이 밋밋해 보이는 것을 방지하는 다양한 기능이 포함되어 있습니다.
그림자 지도
그림자는 텍스처가 빛의 관점에서 깊이 정보를 저장하는그림자 매핑이라는 기술을 사용하여 렌더링됩니다.
그림자 맵의업데이트 모드와해상도를수정하려면Light 구성 요소의Shadows 하위 섹션을 찾으세요. 해상도와 업데이트 빈도 설정이 높을수록 비용이 더 많이 듭니다.
방향성 조명의 경우 그림자 맵이 장면의 많은 부분을 덮으므로 원근 앨리어싱이라는 문제가 발생할 수 있습니다. 카메라에 가까이 위치한 그림자 맵 픽셀은 멀리 있는 픽셀에 비해 들쭉날쭉하고 고르지 않게 보입니다.
Unity는 다음 섹션에서 설명하는 것처럼Cascaded Shadow Maps로 이 문제를 해결합니다.
계단식 그림자 맵은 카메라 절두체를 각각 고유한 그림자 맵이 있는 영역으로 분할합니다. 이렇게 하면 원근 앨리어싱의 효과가 줄어듭니다.
HDRP를 사용하면Shadows Override를통해Shadow Cascades를추가로 제어할 수 있습니다. 각 볼륨의캐스케이드 설정을사용하여 해당 캐스케이드가 시작되고 끝나는 위치를 나타냅니다.
계단식 분할 표시를더 잘 시각화하려면계단식 배열 표시버튼을 전환하세요. 약간의 조정을 통해 원근 앨리어싱을 최소한으로 유지할 수 있습니다.
섀도우 맵은 특히 두 개의 메시 표면이 연결되는 식별 가능한 가장자리에서 작은 세부 사항을 캡처하지 못하는 경우가 많습니다. HDRP는Contact Shadows Override 를사용하여 이러한 Contact Shadows를 생성할 수 있습니다.
컨택트 섀도우(Contact Shadows)는 계산을 위해 프레임 내의 정보에 의존하는 화면 공간 효과입니다. 프레임 외부의 개체는 접촉 그림자에 영향을 주지 않습니다. 주로 화면상 공간이 작은 그림자 세부 묘사에 효과적입니다.
프레임 설정에서접촉 그림자를활성화했는지 확인하세요. 조명 품질 설정의접촉 그림자 재정의 아래파이프라인 자산에서샘플 수를조정할 수도 있습니다.
2021 LTS 및 최신 버전에서는 이 기능이 Terrain 및 SpeedTree 와 잘 작동하도록 개선되었습니다. 블로그에서 자세한 내용을 읽어보세요.
HDRP는 사소한 그림자 디테일까지 머티리얼로 확장할 수 있습니다. Micro Shadows는 Normal 및 Ambient Occlusion Maps를 사용하여 메쉬 형상 자체를 사용하지 않고도 매우 미세한 표면 그림자를 렌더링합니다.
장면의볼륨에Micro Shadows Override를추가하고불투명도를조정합니다. 그러나 Micro Shadows는 방향성 조명에서만 작동합니다.