Unity 검색

공유

Is this article helpful for you?

Thank you for your feedback!

이 데모에서는 유니티의 고해상도 렌더 파이프라인(High Definition Render Pipeline, 이하 HDRP)을 사용하여 렌더링할 씬을 제작하는 방법을 보여드리겠습니다. 1) 새로운 HDRP 프로젝트를 시작하고, 2) 임포트한 에셋의 머티리얼을 업그레이드하고, 3) 머티리얼 인스펙터(Material Inspector)에서 새 파라미터를 사용하여 실제와 비슷한 유리 머티리얼을 만드는 방법을 소개합니다. 또한 빌트인 파이프라인(built-in pipeline)과 HDRP의 차이점에 대해서도 설명해드리겠습니다.

 

Unity 버전 2018.1에는 스크립터블 렌더 파이프라인(Scriptable Render Pipeline, 이하 SRP)이라는 새로운 시스템이 도입되어 프로젝트에 맞는 렌더링 파이프라인을 만들 수 있게 되었습니다. SRP에는 LWRP(경량, Lightweight) 및 HDRP(고해상도, High Definition)라는 두 가지 파이프라인이 제공됩니다. 그 중 HDRP는 시각적으로 높은 수준의 정확도 제공을 목표로 하며, PC 또는 콘솔 플랫폼 용도로 사용하길 권장합니다.

이 콘텐츠는 Targeting Cookies 카테고리를 수락해야만 동영상을 시청할 수 있도록 허용하는 타사 제공업체에서 호스팅합니다. 이러한 제공업체의 비디오를 보려면 쿠키 환경 설정에서 Targeting Cookies 카테고리를 수락하시기 바랍니다.

HDRP 설정하기

아직 Unity를 설치하지 않았다면 Unity Hub를 설치할 것을 권장드립니다. 현재 설치한 Unity 버전과 사용 중인 프로젝트에 대한 업데이트 소식을 받을 수 있습니다. Unity Hub에서 새 프로젝트를 만들 때 Template 드롭다운에서 High-Definition RP (Preview)를 선택할 수 있습니다.

HDRP는 아직 프리뷰 버전이므로 프러덕션 중에 HDRP로 전환하는 것은 좋지 않습니다. 대신 새로 선보이는 Package Manager로 이동하여 설치하면 현재 프로젝트를 HDRP로 업그레이드해볼 수 있습니다. 단, 프로젝트를 HDRP로 업그레이드한 후에는 되돌릴 수 없으니 주의해주세요. 업그레이드하기 전에는 프로젝트의 백업본을 만들어 두어야 합니다.

위에서 말씀드린 대로 HDRP는 아직 프리뷰 버전이므로 향후 변경될 수 있습니다. 프로젝트를 빌트인 렌더 파이프라인에서 HDRP로 업그레이드하려면 Window> Package Manager로 이동하면 됩니다. Package Manager에는 Unity 프로젝트에 현재 설치되어 있는 패키지가 모두 표시됩니다. 아래 그림과 같이 All에서 "HD 렌더 파이프라인"(Render-pipelines.high)을 찾아 최신 버전을 설치하세요. 이 파이프라인을 설치하면 렌더 파이프라인, 셰이더 그래프 및 포스트 프로세싱 패키지도 통합 설치됩니다.

HDRP 패키지를 설치하고 나면Edit > Project Settings > Graphics로 이동하여 HDRP에 맞는 스크립터블 렌더 파이프라인 에셋을 지정해야 합니다.

현재 설치된 렌더 파이프라인 에셋은 Inspector의 "Scriptable Render Pipeline Settings" 필드 아래에 나타납니다. 파이프라인을 Unity Hub에서 설치하는 경우 HDRP 렌더 파이프라인 에셋이 지정됩니다. 빌트인 파이프라인에서 프로젝트를 업그레이드하는 경우 이 필드는 "None"으로 설정됩니다. 에셋 선택 상자 옆에 있는 버튼을 클릭하거나 Settings 폴더에서 에셋을 드래그하여 파이프라인 에셋 을 지정할 수 있습니다.

HDRP에는 C# Scriptable Render Pipeline API가 사용됩니다. 여기에는 프로젝트 렌더링을 커스터마이즈하기 위해 설정할 수 있는 다양한 기본 설정이 제공됩니다. 렌더 파이프라인 에셋에 렌더링 설정이 저장되고 나면 이 필드에 새로운 렌더 파이프라인 에셋을 지정하여 렌더 설정을 변경할 수 있게 됩니다.

새로운 렌더 파이프라인 에셋을 생성하려면 Setting에서 마우스 오른쪽 버튼을 클릭하고 Create> Rendering> High Definition Render Pipeline Asset을 선택하세요.

머티리얼 업그레이드하기

HDRP 프로젝트를 사용할 때 Unity 빌트인, 스탠다드, 언릿(Unlit) 머티리얼은 렌더링되지 않습니다. 따라서 셰이더가 손상될 경우 기본 분홍색 언릿 셰이더를 사용하여 표시됩니다. 이러한 문제는 기존 프로젝트를 업그레이드하거나, HDRP와 호환되는 셰이더를 사용하지 않는 에셋 스토어 에셋과 같은 레거시 콘텐츠를 통합할 때 발생할 수 있습니다. 그래서 HDRP로 렌더링하려면 머티리얼을 업그레이드해야 합니다.

Unity 2018.1에는 빌트인 머티리얼 변환 툴이 제공됩니다. 이 툴에서는 Unity 표준 셰이더의 머티리얼 프로퍼티를 사용하여 새로운 HDRP 머티리얼로 변환할 수 있습니다. HDRP용으로 다시 제작해야 하는 커스텀 셰이더에서는 이 기능이 사용되지 않습니다.

머티리얼 변환 툴에 액세스하려면 Edit> Render Pipeline으로 이동합니다.

Unity는 Render Pipeline 메뉴에서 몇 가지 업그레이드 옵션을 제공합니다. 여기서 처음 두 가지 옵션에 대해 살펴보겠습니다. "Upgrade Project Materials to High Definition Materials"를 선택하면 프로젝트에서 업그레이드 가능한 머티리얼이 모두 업그레이드됩니다. "Upgrade Selected Materials to High Definition Materials"는 Project 창에서 업그레이드할 머티리얼을 선택할 수 있습니다.

이 시점에서 프로젝트의 백업본을 별도로 만들어 두는 것이 좋습니다.

머티리얼이 변환되면 머티리얼 셰이더는 이제 "HDRenderPipeline/Lit"라고 지정되어 이제 Material Inspector에서 새로운 HDRP Lit 셰이더 기능을 사용할 수 있게 됩니다.

또한 "HDRenderPipeline"에 포함된 여러 머티리얼 셰이더 옵션으로 LitTesseleation 또는 Unlit과 같은 다양한 셰이더 유형을 선택하여 적용할 수 있습니다.

이후 섹션에서는 HDRP에 새로 추가된 기능 중 몇 가지를 소개합니다. 여기서는 새로운 기능을 사용하여 주방 씬을 개선해 보겠습니다.

HDRP 조명

HDRP에서 조명은 Physical Light Units(PLU)라는 시스템이 사용됩니다. 즉 광원 단위는 스토어에서 전구를 검색하거나 노출 측정기로 광원을 측정할 때 표시되는 값처럼 실제 측정 가능한 값을 기반으로 합니다.

방향 광원은 실제로 햇빛의 강도 측정에 활용되는 값이므로 LUX 측정기를 사용하여 쉽게 측정할 수 있습니다. 다른 실제 광원은 루멘(Lumens)으로 강도를 측정하여 씬에서 작은 광원 이미터에 대한 참조로 사용할 수 있습니다.

실시간 선 광원 (Realtime Line Light)

실시간 선 광원은 사용자가 길이를 정의할 수 있는 선에서 발산되는 매끄럽고 일정한 광원 출력을 유지합니다. 일반적으로 이 광원은 사실적인 조명 묘사를 위해 애니메이션 필름에서 많이 사용됩니다. 이 기능을 통해 영화 기법의 씬 조명이 더해집니다. 선 광원은 씬에서 광원을 배치한 후 Inspector에서 셰이더 유형을 선택하여 연출할 수 있습니다.

대다수 모던한 분위기의 주방에서는 선 광원 스타일을 사용하여 공간 조명을 연출합니다. 따라서 선 광원은 리얼한 조명을 제작할 뿐 아니라 실제 주방에서 볼 수 있는 조명과 비교했을 때도 정확합니다.

또한 광원 인스펙터(Light Inspector)는 온도 값을 조정하여 자체 광원의 색상을 정할 수 있습니다. 범위는 1000~20000kv(kelvins)이며, 값이 낮을수록 발열량이 적으므로 광원이 더 빨갛게 보입니다. 반대로 온도 값을 높이면 파란색으로 변합니다.

광원 모양이 직사각일 경우에는 이와 유사하게 커스텀 X, Y축 값을 기반으로 빛을 방출합니다.

참고: 선 또는 직사각 광원 모양에서는 현재 그림자가 지원되지 않습니다.

Light Explorer

광원 탐색기를 사용하면 프로젝트에서 어떤 광원 유형이든지 쉽게 관리할 수 있습니다. 씬에서 일일이 찾지 않고도 값을 수정하고 광원 유형을 변경하고 그림자 유형을 조작할 수도 있습니다. Reflection Probes, Light Probes 및 Static Emissives도 이 창에서 관리할 수 있습니다.

광원 탐색기에 액세스하려면 Window> General> Light Explorer로 이동합니다.

볼륨 설정(Volume Settings)

볼륨 설정을 사용하면 Visual Environment, Procedural Sky, HD Shadow Settings 과 같은 요소를 수정하면서 환경 설정을 시각적으로 조정할 수 있습니다. 또한 커스텀 볼륨 프로필을 만들고, 프로필을 변경할 수도 있습니다.

볼륨 설정은 게임 오브젝트를 만들고 볼륨 컴포넌트를 추가하여 관리됩니다. 이 워크플로는 Post-Processing Stack v2 볼륨을 생성하는 데 적용되는 것과 유사합니다. HDRP에서는 기본적으로 Hierarchy에 하나씩 표시됩니다.

HD Shadow Settings

HD Shadow Settings를 사용하면 볼륨 그림자에 대한 전반적인 품질을 정할 수 있습니다. Max Distance 필드는 그림자와 카메라의 거리를 기반으로 그림자의 품질을 산정합니다.

Visual Environment

Visual Environment에는 두 개의 드롭다운 메뉴가 있습니다.

Sky Type은 Procedural Sky, Gradient Sky 및 HDRI Sky 세 가지 옵션을 제공합니다.

Procedural Sky는 컴포넌트에서 선택한 값을 기반으로 환경을 생성합니다.

HDRI Sky는 컴포넌트 내에 설정된 이미지를 기반으로 환경 맵을 구성합니다. HDRISky 컴포넌트는 볼륨 설정에 기본적으로 지정되어 있지 않으므로 Inspector 탭 하단의 "Add component overrides ..."를 클릭하고 "HDRI Sky"를 선택해야 컴포넌트를 사용할 수 있게 됩니다.

이제 HDRI Sky 큐브맵을 지정하여 실제와 같이 정확한 조명을 설정할 수 있도록 값을 변경할 수 있습니다.

Unity HDRI Pack은 Unity Technologies의 에셋 스토어에서 무료로 제공되며, 프로젝트에서 바로 사용할 수 있도록 미리 변환된(해상도: 1024×2014) 7개의 HDR 큐브맵을 제공합니다.

이 씬에서 유니티 HDRI Pack의 "TreasureIslandWhiteBalancedNoSun"은 충분한 광원을 제공하여 주방을 밝게 비추되 너무 밝아 사물이 흐릿해지지 않도록 하여 가장 효과적이었습니다. 물론 Exposure 및 Multiplier와 같이 컴포넌트 내에서 제공되는 조절기를 사용하여 밝기를 변경하고 조정할 수 있지만, 씬을 보완하는 HDRI 맵을 선택하는 것도 매우 중요합니다.

마지막으로 Fog Type은 Linear, Exponential 및 Volumetric 세 가지 옵션을 제공합니다. 값을 결정하려면 이전 컴포넌트 단계를 반복하세요("Add Component Override" - 관련된 컴포넌트를 Inspector에 적용).

Material Inspector(머티리얼 인스펙터)

HDRP가 도입되기 전까지는 유리 머티리얼 제작을 위해 많은 노력이 필요했습니다. 사실적인 유리 머티리얼을 만들 수 있도록 많은 연구와 셰이더 프로그래밍이 필요했고, 에셋 스토어에 의존하여 커스텀 셰이더를 사용하고 있었습니다.

머티리얼 인스펙터에서 제공되는 새로운 HDRP 릿(Lit) 셰이더 기능을 사용하면 품질이 우수하면서도 지정된 설정에 맞게 빛을 굴절시키는 유리를 만들 수 있습니다.

작업을 시작하려면 먼저 새로운 HDRenderPipeline/Lit 머티리얼을 만들어야 합니다. 이 머티리얼은 HDRP로 생성된 새로운 머티리얼에 적용할 기본 머티리얼 셰이더가 됩니다.

새 머티리얼을 만들려면 기본 폴더에서 마우스 오른쪽 버튼을 클릭하고 Create -> Material을 선택합니다. 이제 머티리얼 인스펙터에 새로운 HDRP Material Inspector가 표시됩니다. 여기에는 몇 가지 눈에 띄는 변경 사항이 표시되는데 지금부터 한번 살펴보겠습니다.

Surface Options(표면 옵션)

이 옵션을 사용하면 머티리얼의 표면을 설정할 수 있습니다.

Surface Type

표면 유형의 옵션은 Opaque와 Transparent 두 가지로, Opaque로 설정하면 빛이 전혀 투과되지 않는 완전한 솔리드 머티리얼을 시뮬레이션합니다.

이와 반대로 Transparent는 알파 블렌드로, 반투명 표면을 시뮬레이션합니다. 이 옵션은 유용하긴 하지만 렌더링하는 데 시간이 더 많이 듭니다.

이와 같이 HDRP는 투명 오브젝트와 불투명 오브젝트 모두에 적용되는 통합 조명 기능입니다.

이 예제에서는 Transparent로 설정해 보겠습니다. 그러면 아래에서 설명할 파라미터가 표시됩니다.

Double Sided

이 설정을 사용하면 머티리얼 양면을 렌더링할 수 있습니다. Normal Mode는 기본적으로 Mirror로 설정되지만 드롭다운에서 Flip 또는 None을 선택할 수도 있습니다.

Double Sided가 활성화되어 있지 않으면 카메라 방향을 향하고 있는 머티리얼 쪽만 렌더링됩니다.

Material Type

머티리얼 유형 옵션을 사용하면 훨씬 더 사실적인 머티리얼 묘사를 고려하는 새로운 동작을 만들 수 있습니다. 각 옵션이 활성화되면 Inspector에 옵션별로 별도의 파라미터가 표시됩니다.

Standard

이 유형은 기본값으로 설정되어 있으며 기본적인 파라미터가 사용됩니다.

Subsurface Scattering (SSS)

SSS는 광원이 식물과 같은 반투명 오브젝트를 통과하고 인터랙션하는 방식을 시뮬레이션하는 기능을 수행합니다. 또한 스킨 렌더링에도 사용됩니다. 예를 들어 손가락 끝에 빛을 비추면 빛이 표면 아래로 흩어져서 색이 변하는 것을 볼 수 있는데, SSS를 사용하면 이러한 동작을 정확하게 따라해볼 수 있습니다.

SSS가 활성화되면 Transmission 파라미터가 나타납니다. 이 파라미터를 사용하면 Thickness Map을 이용하여 오브젝트의 반투명 레벨을 정할 수 있습니다.

이 두 가지 기능은 Diffusion Profile을 사용하여 조작할 수 있습니다. Skin 및 Foliage라고 하는 두 개의 기본 프로파일이 제공되며, SSS 머티리얼 유형에 대한 베이스로 사용할 수 있습니다. 그리고 아래 화면에 표시되는 프로필 설정을 사용하여 13개의 프로필을 추가로 커스터마이즈할 수 있습니다.

SSS에 대한 Unity 팁에서 짧은 동영상 데모를 확인해 보세요.

I have always shied away from Subsurface Scattering (SSS) as it always sounded complicated!! ?

With HD RP, SSS has 2 preset profiles, as well as 13 other profiles which can be customised and add additional depth to any Material.

See below for a simple video demo ?#unitytips pic.twitter.com/NM4Z03l1U1

— Kieran Colenutt Unity (@kierancolenutt) August 28, 2018

Anisotropy(비등방성, 이방성) 

* Anisotropy(이방성 혹은 비등방성) - 오브젝트의 물리적 성질이 방향에 따라 다른 성질

비등방성은 방향에 따라 특성이 바뀌는 표면 머티리얼을 시뮬레이션합니다(예: 브러시 처리된 알루미늄 모양을 제작할 경우). 탄젠트 및 비등방성 맵을 둘 다 사용하여 깨끗하고 반사율이 깔끔한 메탈릭 표면을 만드는 대신 방향과 반사 강도를 변경해 표현할 수 있습니다.

Iridescence(무지개 효과)

바닥에 쏟아진 기름에 빛이 나타나는 것과 비슷하게 머티리얼 표면에 무지개 빛깔의 효과를 만드는 파라미터를 제공합니다. 설정 값은 Iridescence Map과 Iridescence Layer Thickness Map에 의해 결정됩니다.

Specular Color(스페큘러 컬러)

스페큘러 컬러는 머티리얼의 스페큘러 반사 색상과 강도를 조정하는 데 사용됩니다. 이렇게 하면 디퓨즈 반사 외에도 색상이 다른 스페큘러 반사를 설정할 수 있습니다.

Translucent(반투명)

반투명 옵션은 식물의 광원 인터랙션을 시뮬레이션할 때 매우 효과적입니다. 이 머티리얼 유형은 SSS와 유사한 프로파일을 사용합니다. 이 경우 Thickness Map은 광원 전송 방식을 결정하는 데 사용됩니다.

Enable Decals(데칼 사용)

이 파라미터를 사용하면 머티리얼이 데칼 머티리얼에 쉽게 반응할 수 있습니다. 데칼 프로젝터(Decal Projector) 또는 오브젝트 컴포넌트 워크플로에서 모두 사용됩니다.

Inputs(입력)

Base Color + Opacity

아직까지는 유리 머티리얼이 아직 불투명하게 보입니다. 여기서 빛이 통과할 수 있도록 Inputs 내의 불투명도 값을 변경해야 합니다.

이렇게 하려면 "Base Color + Opacity"옆에 있는 컬러 견본 창을 엽니다.

기본 색상으로 RGB(빨강, 녹색 및 파랑) 채널이 사용되며, 알파 채널로 불투명도가 결정됩니다. 현재 머티리얼 불투명도는 0에서 255 사이의 값으로 설정됩니다. 255는 완전히 불투명하고 0은 완전히 투명한 상태를 의미합니다. 이 예제에서는 머티리얼 색을 밝은 녹색으로 설정해 보겠습니다.

불투명도를 30으로 설정하겠습니다. 이렇게 하면 머티리얼이 대부분 투명하게 변경됩니다.

사용된 색상 값은 다음과 같습니다.

 

RGB 값:

R – 201

G – 255

B – 211

 

16진수 값 – C9FFD3

Hexadecimal Value – C9FFD3

머티리얼의 알파를 낮은 값으로 설정했지만 Surface Type은 Opaque로 유지할 경우 머티리얼은 투명해지지 않고 불투명도가 그대로 유지된다는 점을 기억해 두어야 합니다.

Metallic 및 Smoothness

이 옵션은 슬라이더에서 0에서 1 사이의 값으로 변경할 수 있습니다. 값과 입력 결과는 모두 Inspector의 아래 Mask Maps Alpha와 Red Channel에 생성됩니다. Mask Map이 지정되면 슬라이더는 나중에 최소값과 최대값을 다시 매핑하는 데 사용됩니다.

Normal Map

Normal Map을 적용하면 파라미터 슬라이더를 조정할 때 0~2 범위에서 강도를 수정할 수 있습니다.

Normal을 적용하면 자국이나 긁힘과 같이 유리 머티리얼에 디테일과 입체감을 더할 수 있습니다.

Mask Map

HDRP에서 마스크 맵의 조합은 다음과 같습니다.

Red Channel – Metallic(범위: 0 ~ 1)
Green Channel – Ambient Occlusion
Blue Channel – Detail Map Mask
Alpha Channel – Smoothness

기본적으로 Unity로 가져온 텍스처에는 sRGB가 사용됩니다. Texture Inspector에서 "sRGB (Color Texture)"를 선택 해제하면 텍스처가 리니어 형식 사용으로 변환됩니다. 마스크 맵에서는 출력 생성에 수학 식이 사용되므로 이 텍스처는 리니어여야 합니다.

Coat Mask

Coat Mask는 머티리얼에서 클리어 코트 효과를 시뮬레이션하여 매끄러움 효과도 함께 증가시킵니다. 기본적으로 코트 마스크 값은 0으로 설정되지만 슬라이더로 0~1 범위에서 파라미터를 조정할 수 있습니다. 클리어 코트 마스크는 자동차 페인트 또는 플라스틱과 같은 머티리얼을 제작하는 데 사용할 수 있습니다.

Detail Inputs

Detail Map은 HDRP에 도입된 새로운 맵이며 머티리얼에 미세한 디테일을 추가하는 맵을 추가로 합쳐 놓았습니다. Detail Map에서 사용하는 채널은 다음과 같습니다.

Red: Grayscale (오버레이 블렌딩 사용)
Green: Normal Map Y channel
Blue: Smoothness
Alpha: Normal Map X channel

Transparency Inputs(투명도 입력)

셰이더의Transparency Inputs 프로퍼티를 수정하면 전반적으로 투명한 효과를 설정할 수 있습니다. Transparency Inputs는 Surface Type이 Transparent 로 설정된 경우에만 사용할 수 있습니다.

이 예제에서는 유리 머티리얼에 대한 굴절을 생성해 보겠습니다.

Refraction Model

Refraction Model은 머티리얼을 통과하는 빛의 구부러짐을 시뮬레이션하는 방법을 정의합니다. Plane과 Sphere의 두 가지 옵션이 있습니다.

Refraction Model은 머티리얼이 적용되는 오브젝트의 모양과 크기에 따라 다르게 선택할 수 있습니다.

Sphere(구): 채워진 오브젝트의 경우 머티리얼이 배치된 오브젝트의 크기와 비교하여 굴절 두께가 설정된 구형 모델을 사용합니다.

Plane(평면): 빈 오브젝트의 경우 굴절 두께가 작은 평면 모드를 사용합니다.

Index of Refraction과 Refraction Thickness 옵션을 사용하면 굴절 모델의 동작을 제어할 수 있습니다.

Index of Refraction

1에서 2.5까지의 범위에서 파라미터를 조정하여 굴절 강도를 다양하게 설정할 수 있습니다. 기본값은 1이며, 굴절이 발생하지 않습니다.

1.1~1.2 사이로 설정하면 굴절이 반전되어 머티리얼을 통해 보이는 환경이 거꾸로 표시됩니다.

이제 유리 머티리얼의 베이스를 만들어 보았습니다. 원하는 머티리얼에 맞게 커스텀 값을 추가해 보세요.

결론

지금까지 보여드린 내용을 통해 프로젝트에 실제로 HDRP를 적용하는 방법을 이해하는 데 도움이 되었기를 바랍니다. 아직 프리뷰 단계이긴 하지만 HDRP를 시작하기 위해 읽어 볼만한 문서들을 GitHub에 올려 놓았습니다(확인해 보세요!).

HDRP는 여러분들의 고품질 프로젝트 제작을 지원하는 새로운 툴로 계속 업그레이드되고 있습니다. 많은 분들이 이 기능으로 어떤 것을 만들어낼지 매우 기대됩니다. 문의 사항이 있으면 언제든지 연락주세요. 어떻게 사용하고 있는지 매우 궁금합니다. 꼭 알려주세요!

* HDRP 및 SRP 개발 소식을 팔로우하고 논의하기를 원하신다면 그래픽 포럼에 참여하세요.

2018년 9월 24일 엔진 & 플랫폼 | 15 분 소요

Is this article helpful for you?

Thank you for your feedback!