데칼 셰이더 그래프
Decal Projector 컴포넌트는 머티리얼이 데칼 머티리얼 타입의 셰이더 그래프를 사용하는 경우 머티리얼을 데칼로 투사할 수 있습니다.
데칼 머티리얼 타입의 셰이더 그래프
URP에는 미리 빌드된 데칼 셰이더(Shader Graphs/Decal
)가 포함되어 있습니다.
Decal Material 프로퍼티와 고급 옵션.
데칼 셰이더 그래프를 사용하는 머티리얼을 게임 오브젝트에 직접 할당할 수 있습니다. 예를 들어 사각형을 데칼 게임 오브젝트로 사용할 수 있습니다.
미리 빌드된 데칼 셰이더의 프로퍼티는 다음과 같습니다.
Base Map: 머티리얼의 베이스 텍스처입니다.
Normal Map: 머티리얼의 노멀 텍스처입니다.
Normal Blend: 이 프로퍼티는 Normal Map 프로퍼티에서 선택한 노멀 텍스처가 데칼이 투사되는 머티리얼의 노멀 맵과 블렌딩되는 비율을 정의합니다. 0: 데칼이 투사되는 머티리얼에 영향을 주지 않습니다. 1: 데칼의 노멀 맵이 투사되는 머티리얼의 노멀 맵을 대체합니다.
프로젝트에 가장 적합한 방식으로 데칼을 렌더링하는 자체 셰이더 그래프를 생성할 수 있습니다.
위의 Decal Material 프로퍼티는 미리 빌드된 셰이더 그래프에 정의되어 있습니다. 커스텀 Decal Material 프로퍼티는 커스텀 셰이더 그래프에 따라 다릅니다.
다음 표에는 Advanced Options 섹션의 프로퍼티에 대한 설명이 나와 있습니다. 이 프로퍼티는 모든 데칼 셰이더에 공통으로 적용됩니다.
프로퍼티 | 설명 |
---|---|
Enable GPU Instancing | 이 옵션을 활성화하면 URP가 가능한 경우 동일한 지오메트리 및 머티리얼이 포함된 메시를 한 번에 렌더링하도록 지시합니다. 그러면 렌더링 속도가 더 빨라집니다. 다른 머티리얼이 있거나, 하드웨어가 GPU 인스턴싱을 지원하지 않으면 URP가 메시를 한 번에 렌더링할 수 없습니다. |
Priority | 이 프로퍼티는 URP가 씬에서 데칼을 그리는 순서를 정의합니다. URP는 우선순위 값이 낮은 데칼을 먼저 그리고, 우선순위 값이 높은 데칼을 우선순위가 낮은 데칼 위에 그립니다. 씬에 Priority 가 동일한 데칼 머티리얼이 여러 개 있는 경우 URP는 머티리얼이 생성된 순서대로 머티리얼을 렌더링합니다. |
Mesh Bias Type | 메시 바이어스 타입을 선택합니다. 메시 바이어스를 사용하면 데칼 게임 오브젝트와 겹치는 게임 오브젝트 간의 Z 파이팅을 방지할 수 있습니다. 이 프로퍼티는 데칼 머티리얼 타입이 직접 할당된 게임 오브젝트에만 적용됩니다. |
View Bias | 월드 공간 바이어스(미터 단위)입니다. 데칼 게임 오브젝트를 그릴 때 Unity는 뷰 벡터를 따라 게임 오브젝트의 각 픽셀을 이 값만큼 이동시킵니다. 값이 양수이면 픽셀이 카메라에 더 가깝게 이동하므로, Unity가 겹치는 메시 위에 데칼 게임 오브젝트를 그려서 Z 파이팅을 방지할 수 있습니다. 데칼 프로젝터는 이 프로퍼티를 무시합니다. |
Depth Bias | 데칼 게임 오브젝트를 그릴 때 Unity는 게임 오브젝트의 각 픽셀에 대한 뎁스값을 이 값만큼 변경합니다. 값이 음수이면 픽셀이 카메라에 더 가깝게 이동하므로, Unity가 겹치는 메시 위에 데칼 게임 오브젝트를 그려서 Z 파이팅을 방지할 수 있습니다. 데칼 프로젝터는 이 프로퍼티를 무시합니다. |
커스텀 데칼 셰이더 생성
미리 빌드된 Shader Graphs/Decal
셰이더는 간단한 예제 역할을 합니다. 프로젝트에 가장 적합한 방식으로 데칼을 렌더링하는 자체 데칼 셰이더를 생성할 수 있습니다.
커스텀 데칼 셰이더 그래프를 생성하려면 셰이더 타겟의 Material 프로퍼티에서 Decal 값을 선택하십시오.
다음 프로퍼티 중 하나를 활성화하면 머티리얼의 표면에서 그에 상응하는 Lit Shader 프로퍼티를 오버라이드합니다.
프로퍼티 | 설명 |
---|---|
Affect BaseColor | 활성화하면 셰이더가 기본 컬러에 영향을 줍니다. 대부분의 데칼이 이 옵션을 사용합니다. 다른 프로퍼티(예: 노멀)를 조작해야 하는 표면 손상 효과는 예외입니다.![]() |
Affect Normal | 활성화하면 셰이더가 노멀에 영향을 줍니다. 사용 사례: 머티리얼에 총알 구멍, 균열 등의 손상 효과를 추가합니다. Blend 프로퍼티를 사용하여 데칼의 노멀을 투사된 표면의 노멀과 블렌드합니다. Blend 프로퍼티를 비활성화하면 데칼이 투사된 표면의 모든 노멀을 오버라이드합니다.![]() |
Affect MAOS | MOAS는 Metallic, Ambient Occlusion, Smoothness의 약어입니다. 이러한 프로퍼티는 메모리 절약을 위해 그룹화되어 있습니다. 셰이더에서 각 프로퍼티의 값을 개별적으로 변경할 수 있지만, 모든 프로퍼티는 하나의 공통 알파 값으로 블렌딩됩니다. 사용 사례: 평활도를 오버라이드하여 웅덩이나 젖은 페인트를 강조합니다. 메탈릭 값을 다 낮은 값으로 오버라이드하여 녹슨 부분을 렌더링합니다. AO를 오버라이드하여 데칼에 추가 뎁스를 제공합니다. ![]() |
Affect Emission | 사용 사례: 이미션 값에 영향을 주어 표면이 광원을 방출하는 것처럼 보이게 하거나, 표면에 광원을 비추는 것처럼 보이게 할 수 있습니다.![]() |
성능을 향상시키려면 서로 다른 표면 프로퍼티에 대한 데이터를 하나의 텍스처로 패킹하십시오. 이렇게 하면 셰이더가 더 적은 횟수의 샘플링을 수행하고 Unity가 더 적은 수의 텍스처를 저장합니다.
예를 들어 다음 셰이더 그래프는 노멀 맵과 마스크맵을 사용하여 셰이더의 모든 프로퍼티를 구동합니다. 이 데칼은 손상된 활주로 효과에 사용되며, 이 사용 사례에는 하드코딩된 거칠기 값 0이 적합합니다.
셰이더는 마스크를 샘플링하고 해당 컬러를 사용하여 전체 데칼의 앰비언트 오클루전 값(적색 채널), 평활도 값(녹색 채널), 이미션 강도 값(청색 채널), 알파 값을 설정합니다. 데칼은 모든 프로퍼티에 대해 단일 알파 값을 사용하여 블렌딩될 때가 많습니다 다음 이미지는 예제 활주로 균열에 대한 마스크맵을 보여줍니다.
데칼 아틀라스의 앰비언트 오클루전, 평활도, 이미션 및 알파 값을 단일 텍스처로 패킹하는 마스크맵의 예제입니다.