#아드리

[DEMO] Unity 아티스트를 위한 HDRP 안내서 본문

Unity /Graphics

[DEMO] Unity 아티스트를 위한 HDRP 안내서

아두리두리 2018. 9. 27. 10:59


이 데모에서는 유니티의 High Definition Render Pipeline (HDRP)를 사용하여 장면을 제작하는 방법을 살펴 보겠습니다. 1) 새로운 HDRP 프로젝트를 시작하고, 2) 가지고 있는 Asset의 Material을 업그레이드 하고, 3) Material Inspector에서 새 Parameter(매개 변수)를 사용하여 실제 유리 재질을 만드는 방법을 보여드리겠습니다. 또한 내장 파이프라인(built-in pipeline)과 HDRP의 차이점을 알아보겠습니다.


>> 영문 버전 읽기


Unity는 2018.1에서 SRP (Scriptable Render Pipeline)라는 새로운 시스템을 도입하여 프로젝트의 필요에 따라 렌더링 파이프 라인을 만들 수 있게 되었습니다. SRP에는 LWRP (Lightweight) 및 HDRP (High Definition)라는 두 가지 파이프 라인이 있습니다. HDRP는 높은 시각적 퀄리티를 목표로하며 PC 또는 콘솔 플랫폼에 사용하길 권장합니다.



Setting Up HDRP


아직 Unity Hub를 설치하지 않았다면 설치해 보세요! 설치된 Unity 버전뿐만 아니라 다른 버전으로 만든 프로젝트를 정리하는 데 도움이 됩니다. 새 프로젝트를 만들 때 Template 창에서 HDRP (Preview)를 선택할 수있는 옵션이 나타납니다.



HDRP는 여전히 Preview 상태이므로 프로젝트 제작 중에 HDRP로 전환하는 것은 좋지 않습니다. 그러나 새 패키지 관리자로 이동하여 설치하면 프로젝트를 HDRP로 업그레이드 할 수 있습니다. 다만, 프로젝트를 HDRP로 업그레이드 한 후에는 되돌릴 수 없으니 주의 해주세요. * 업그레이드하기 전에 프로젝트의 백업을 만들길 권장드립니다.


위에서 언급했듯이 HDRP는 아직 Preview이므로 향후 변경 될 수 있습니다. 프로젝트를 Built-in Pipeline에서 HDRP로 업그레이드하려면 Window> Package Manager로 이동하세요. Package Manager에서 Unity 프로젝트 내에 설치된 모든 패키지를 볼 수 있습니다. All에서 "HD Render Pipeline"(Render-pipelines.high)을 찾아 최신 버전을 설치하세요. 파이프 라인을 설치하면 Render-pipeline, Shader Graph 및 Post Processing 패키지도 통합됩니다.



HDRP 패키지를 설치 한 후 Edit > Project Settings > Graphics 으로 이동하여 HDRP에 Scriptable Render Pipeline Asset을 지정 해야합니다.



Inspector를 보시면 현재 설치된 Render Pipeline Asset을 "Scriptable Render Pipeline Settings"필드 아래에 표시하고 있는걸 확인하실 수 있습니다. Unity Hub에서 파이프 라인을 설치하는 경우 HDRP Render Pipeline Asset이 지정됩니다. Built-in Pipeline에서 프로젝트를 업그레이드하는 경우, 이 필드는 "없음"으로 설정됩니다. Asset Selection 상자 옆에있는 버튼을 클릭하거나 Settings 폴더에서 Asset을 드래그하여 Pipeline Asset을 지정 할 수 있습니다.


HDRP는 C# Scriptable Render Pipeline API를 사용합니다. 이를 통해 프로젝트의 렌더링을 다양하게 커스터마이즈 하실 수 있습니다 . 렌더링 설정이 Render Pipeline Asset에 저장된다는 뜻은 이 필드에 새로운 Render Pipeline Asset을지정하여 렌더 설정을 변경할 수 있음을 의미합니다.


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



 






Upgrading Materials


HDRP 프로젝트를 사용할 때 Unity Built-in, Standard 또는 Unlit Material은 렌더링되지 않습니다. 셰이더가 깨졌을 때는 메테리얼이 핑크색으로 표시됩니다. 이러한 문제는 기존 프로젝트를 업그레이드하거나 HDRP 호환 셰이더를 사용하지 않는 Asset Store 에셋을 사용할 때 발생할 수 있습니다. 그래서 HDRP로 렌더링하려면 Material을 업그레이드해야합니다.


Unity 2018.1에는 Material Conversion Tool이 내장되어 있습니다. 이것은 Unity의 Standard Shader에서 Material Properties(재질 속성)을 가져와 새로운 HDRP Materials로 변환할 수 있는 툴 입니다. HDRP 용으로 다시 작성해야하는 커스텀 셰이더에서는이 기능이 작동하지 않습니다.


Material Conversion Tool에 액세스하려면 Edit> Render Pipeline으로 이동하세요.



Unity는 Render Pipeline 메뉴에서 몇 가지 업그레이드 옵션을 제공합니다. 우리는 여기서 처음 두 가지에 초점을 맞출 것입니다. "Upgrade Project Materials to High Definition Materials"를 선택하면 프로젝트의 모든 업그레이드 가능한 메테리얼들이 업그레이드됩니다. "Upgrade Selected Materials to High Definition Materials"는 프로젝트 창에서 업그레이드 할 메테리얼를 선택할 수 있게 해줍니다.


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


머티리얼이 변환되면 머티리얼의 쉐이더는 이제 "HDRenderPipeline / Lit"라고 합니다. 이제 우리는 Material Inspector에서 새로운 기능이 추가된 HDRP Lit Shader의 액세스를 얻었습니다.


또한 Materials Shader 옵션의 "HDRenderPipeline"에서 LitTesseleation 또는 Unlit과 같은 다양한 셰이더 유형을 선택하고 적용 할 수 있으니 체크해 보세요.



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


HDRP Lighting


HDRP의 조명은 Physical Light Units (PLU)라는 시스템을 사용합니다. PLU는 상점에서 전구를 검색하거나 사진 표시 등 미터로 빛을 측정 할 때 볼 수있는 것과 같이 실제 측정 가능한 값을 기반으로 한 단위를 의미합니다.


현실 세계에서 LUX는 햇빛의 강도를 측정하는 데 사용되는 값입니다 그래서 우리도 LUX를 Directional Light으로 사용합니다. *햇빛의 강도는 LUX Meter로 쉽게 측정할 수 있습니다. 다른 실제 광원은 강도를 측정하기 위해 Lumens를 사용합니다.이 강도는 우리 Scene의 작은 광원에 대한 참조로 사용될 수 있습니다.


Realtime Line Light 


Realtime Line Light는 사용자가 정의 할 수있는 길이로 일정하고 지속적인 light 출력해줍니다. 일반적으로 이 조명은 사실적인 조명 묘사를 위해 애니메이션 필름에서 많이사용됩니다. 조금 더 고품질의 Scene을 연출하는데 도움이 됩니다. Line Light을 Scene에 배치 후 Inspector에서 모양/길이를 조정할 수 있습니다.


요즘 모던 주방에서는 Line Light 을 실제로 사용하고 있기때문에 좀 더 사실적인 조명을 묘사할 수 있습니다.


또한 Light Inspector는 온도로 빛의 색상을 결정할 수 있습니다. 1000 ~ 20000 kv(kelvins)의 범위로 정해져있고, 값이 낮을수록 발열량이 적으므로 빛이 더 빨갛게 보입니다. 반대로 온도 값을 높이면 파란색으로 변합니다.


마찬가지로 직사각형 (Rectangle) 타입은 커스텀 X, Y 축 값을 기반으로 빛 출력을 내 보냅니다.


* 현재 선 또는 직사각형 light shape 타입에는 그림자가 지원되지 않습니다.




Light Explorer


추가 팁으로 Light Explorer를 사용하면 프로젝트 내에서 모든 유형의 Light를 쉽게 관리 할 수 ​​있습니다. 장면에서 일일이 선택해 수정하지 않고도 값을 수정하고 조명 유형을 변경하고 그림자 유형을 조작 할 수도 있습니다. Reflection Probes, Light Probes 및 Static Emmision도 이 창을 통해 관리 할 수 ​​있습니다.


Light Explorer는 Window> General> Light Explorer로 이동하시면 됩니다.



Volume Settings


Volume Setting을 사용하면 Visual Environment, Procedural Sky, HD 그림자 설정과 같은 환경 설정을 보면서 조정할 수 있습니다. 또한 커스텀 Volume Profiles을 만드실 수도 있습니다.


Volume Setting은 GameObject를 만들고 Volume component를 추가하여 관리할 수 있습니다. 이 워크 플로우는 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 Component는 Volumn Setting에 지정되어 있지 않기 때문에, Inspector 탭 하단의 "Add component overrides ..."를 클릭하고 "HDRI Sky"를 선택해야 Component를 사용할 수 있게됩니다.


HDRI Sky Cubemap 지정해 값을 변경해 보세요. 좀 더 정확하고 실제적인 조명을 얻을 수 있게 된걸 확인 하실 수 있습니다.


Unity HDRI Pack은 Asset Store에서 무료로 제공되며, 프로젝트에서 사용할 수 있도록 미리 변환 된 (1024 × 2014 해상도) 7개의 HDR 큐브 맵을 제공하니 확인해 보세요.



이 장면에서 유니티 HDRI Pack의 "TreasureIslandWhiteBalancedNoSun"은 부엌을 효과적으로 밝게 하였습니다. 물론 Exposure 및 Multiplier와 같은 Component 내에서 제공되는 Modifier를 사용하여 밝기를 변경하고 조정할 수 있습니다. 하지만, 장면을 보완하는 HDRI 맵을 선택하는 것도 매우 중요합니다.


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


Material Inspector


HDRP가 소개되기 전, 유리 소재를 만드는 것이 쉬운 일이 아니 었습니다. 사실적인 유리 소재를 제작하려면, 많은 연구가 필요했고, 쉐이더 프로그래밍 또는 Asset Store를 이용하여 컴스텀 쉐이더를 사용해야했습니다.


Material Inspector에서 HDRP Lit Shader의 새로운 기능을 사용하면 고품질일뿐만 아니라 정의가 가능한 설정을 기반으로 빛을 굴절시키는 유리를 만들 수 있습니다.


먼저 새로운 HDRenderPipeline / Lit Material을 만들고 시작하겠습니다. 이것은 HDRP로 생성 된 새로운 머티리얼에 적용되는 기본 머티리얼 쉐이더입니다.


새 메테리얼을 만들려면 기본 폴더에서 마우스 오른쪽 버튼을 클릭하고  Create -> Material을 선택합니다. Material Inspector 에서 새로운 HDRP Material Inspector를 표시 할것입니다. 여기에는 몇 가지 눈에 띄는 변화가 있는데, 한번 리뷰해 보겠습니다.


Surface Options


여기에서 Material의 표면(surface)을 결정할 수 있습니다.


Surface Type


Surface Type에는 불투명 또는 투명 두 가지 옵션이 있습니다. 불투명은 빛이 전혀 투과되지 않는 완전히 단단한 재료를 시뮬레이트합니다.


반대로 투명(Transparent)는 알파 블렌드이며 반투명 표면을 시뮬레이트합니다. 유용하지만, 투명 표면은 렌더링하는 데 더 많은 비용이 듭니다.


HDRP의 중요한 특징은 투명한 물체와 불투명 한 물체의 통합(unified) 된 조명입니다.


이 예제에서는 Transparent로 설정해보도록 하겠습니다. 그러면 아래 Parameters에 대한 설명을 좀 더 쉽게 이해하실 수 있습니다.



Double Sided


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


Double Sided가 활성화되어 있지 않으면 Unity는 카메라 방향을 향한 Material의 측면 만 렌더링합니다.




Material Type


Material Type 옵션을 사용하면 훨씬 더 사실적인 재질을 만들 수 있습니다. 각 옵션은 일단 활성화되면 Inspector 내에서 추가로 Parameters를 제공합니다.


Standard


기본 Parameter를 사용하고, 기본값으로 설정되어 있는 Material Type입니다.


Subsurface Scattering (SSS)


SSS은 빛이 식물과 같은 반투명 물체와 상호 작용하고 침투하는 방식을 시뮬레이션하여 작동합니다. 또한 피부 렌더링에 사용됩니다. 손가락 끝에 빛을 비추면 빛이 표면 아래로 흩어져서 변하는 것을 보았을 것입니다. 이러한 것들을 SSS을 사용하여 모사 할 수 있습니다.


SSS가 활성화되면 Transmission Parameter이 나타납니다. 이것을 사용하면, Thickness Map을 이용해 오브젝트의 반투명을 결정할 수 있습니다.


이 두 가지 기능은 Diffusion Profile을 사용하여 조작 할 수 있습니다. Skin 및 Foliage라고하는 두 개의 기본 프로파일이 제공됩니다 ( SSS Material의 베이스로 사용할 수 있습니다). 또 추가로 13개의 profile이 제공되고 아래 표시된 profile setting을 조절하여 커스터마이즈 할 수 있습니다.



간단한 비디오를 데모를 아래 링크에서 확인해 보세요.




Anisotropy (비등방성, 이방성) 


*이방성 혹은 비등방성, 물체의 물리적 성질이 방향에 따라 다른 성질


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


Iridescence


바닥에 쏟아진 기름에 빛이 나타나는 것과 비슷하게 재질 표면에 무지개 빛깔의 효과를 만드는 Parameter를 제공합니다. Output은 Iridescence Map와 Iridescence Layer Thickness Map에 의해 결정됩니다.


Specular Color


Specular 색상은 재질의 정반사의 색상과 강도를 제어하는 ​​데 사용됩니다. 이렇게하면 확산 반사 이외의 다른 색상의 반사를 가질 수 있습니다.


Translucent


반투명 옵션은 식물의 빛 상호 작용을 시뮬레이션 할 때 매우 효과적 일 수 있습니다. 이 재질 유형은 SSS와 유사한 프로파일을 사용합니다.이 경우 Thickness Map은 빛이 전송되는 방식을 결정하는 데 사용됩니다.


Enable Decals

Enable Decals를 사용하면 데칼 재질에 쉽게 대응 할 수 있습니다. Decal Projector 또는 object component 워크 플로에서 모두 작동합니다.



Inputs

Base Color + Opacity


이 시점에서 Glass Material은 여전히 ​​불투명하게 보입니다. 이는 빛이 통과 할 수 있도록 Inputs 내의 불투명도 값을 변경해야하기 때문입니다.


이렇게하려면 "Base Color + Opacity"옆의 Color Swatch 윈도우를 엽니다.


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


불투명도를 30으로 설정해 보겠습니다. 머티리얼이 대부분 투명하게 변경되었습니다.


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


RGB Values:


R – 201

G – 255

B – 211

A – 119

  


Hexadecimal Value – C9FFD3


중요하게 기억해야 할 점은 Surface Type은 Opaque인 상태에서는 알파를 낮은 수치로 설정해도 변화가 없습니다.

*Transparent로 변경해 주세요!



Metallic and Smoothness

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

*Tip

  • Red channel: Metallic mask. 0 = not metallic, 1 = metallic.

  • Green channel: Ambient occlusion.

  • Blue channel: Detail map mask.

  • Alpha channel: Smoothness

포토샵에서 메테리얼들을 하나하나 지정하실수도 있습니다만,

GitHub에서 Andydbc가 만든 Unity Channel Packer을 사용해 보세요. 간단히 channel들을 합할수 있습니다.



Normal Map

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

자국이나 긁힘과 같은 Normal을 적용하여 유리 소재에 세부 사항과 깊이를 추가 할 수 있습니다.


Mask Map

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


Red Channel – Metallic ranging from 0 to 1
Green Channel – Ambient Occlusion
Blue Channel – Detail Map Mask
Alpha Channel – Smoothness


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



Coat Mask

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


Detail Inputs

Detail Map은 HDRP에 도입 된 새로운 맵이며 Material에 미세한 디테일을 추가할 수 있는 맵입니다. Detail Map은 다음 채널을 사용합니다.


Red: Grayscale using Overlay Blending
Green: Normal Map Y channel
Blue: Smoothness
Alpha: Normal Map X channel

Transparency Inputs

셰이더의Transparency Input 프로퍼티를 수정하여 전반적인 투명한 효과를 결정할 수 있습니다. 투명도 입력은 표면 유형이 투명으로 설정된 경우에만 사용할 수 있습니다.

이 예제에서는, 유리 재질에 대한 굴절을 생성해 보겠습니다.


Refraction Model

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


Refraction Model은 재질이 적용되는 대상체의 모양과 크기에 따라 다릅니다.


Sphere(구) : 채워진 객체의 경우, 머테리얼이 배치 된 객체의 크기와 비교하여 굴절 두께가있는 구형 모델을 사용합니다.

Plane(평면) : 빈 개체의 경우 굴절 두께가 작은 평면 모드를 사용하세요.


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


Index of Refraction

1에서 2.5까지의 범위에서 파라미터를 조정하면 다른 굴절 강도를 제공합니다. 기본적으로 값은 1로 설정되며 굴절이 발생하지 않습니다.


1.1에서 1.2 사이에서는 굴절이 반전되고 재질을 통해 보이는 환경이 거꾸로 표시됩니다.


이제 유리 재질의 베이스가 만들어 졌습니다! 값을 조정해 원하는 재질을 만들어 보세요.


Conclusion

이 데모가 실제 프로젝트에서 HDRP를 적용할때 도움을 드리길 바랍니다. 아직 Preview지만, GitHub에 몇개 확인해 봐도 좋을 문서들이 있습니다. (확인해보세요!)


HDRP는 고품질의 프로젝트를 만들기위해 끊임없이 성장하고 있고, 흥미 진진한 새로운 툴입니다! 많은분들이 사용해 보길 바람니다. 질문이 있으면 연락해주세요. 그리고 만약 프로젝트에 사용하게 되면, 어떻게 진행되는지 알려주세요!


* HDRP 및 SRP의 발전을 논의하기 위해, 그래픽 포럼에 참여하세요.



혹시 Substance 사용하신다면 이 영상 한번 확인 해 보세요!

반응형
Comments