데칼은 베이스 컬러, 러프니스 또는 노멀과 같은 머티리얼의 특징을 스태틱 메시와 스켈레탈 메시를 비롯한 레벨의 지오메트리에 투영하여 씬을 로컬로 수정할 수 있는 머티리얼 타입입니다. 예를 들어, 반복적인 느낌을 없애거나 기본 표면에 때/손상을 추가할 때 데칼을 사용할 수 있습니다.
돌벽에 균열을 추가하는 데 사용된 데칼
언리얼 엔진에서 데칼을 적용하는 방법은 두 가지가 있습니다.
- BasePass 전 단계에 DBuffer 에 모든 데칼을 누적한 다음 이를 BasePass 머티리얼에서 샘플링합니다.
- BasePass 후, 라이팅 전 단계에 GBuffer 에 직접 블렌딩합니다.
DBuffer 데칼은 UE5의 기본적인 데칼 적용 방식입니다. GBuffer 데칼은 모바일 디퍼드 렌더러를 사용하는 경우 등 특정 사례에 계속 사용됩니다. DBuffer 패스와 GBuffer 패스 중 어느 쪽을 사용할지 여부는 관련 프로젝트 세팅에 의해 자동으로 추론됩니다. 디퍼드 데칼(Deferred Decal) 머티리얼 도메인이 있는 머티리얼은 해당 프로젝트 구성에 적절한 데칼 패스에서 렌더링됩니다.
데칼 사용하기
다음과 같은 여러 방식으로 데칼을 사용할 수 있습니다.
- 레벨에 데칼 액터를 직접 배치하기
- 데칼 액터 컴포넌트가 포함된 블루프린트 생성하기
- 메시에 데칼 머티리얼 직접 적용하기
데칼 액터
비주얼 이펙트(Visual Effects) > 데칼 액터(Decal Actor) 아래 생성 메뉴(Create menu) 에서 데칼 액터를 생성할 수 있습니다. 또한 데칼 액터를 액터 배치(Place Actors) 패널의 비주얼 이펙트 카테고리에서 레벨로 드래그할 수 있습니다.
데칼 액터는 방향에 종속된 와이어프레임 박스로, 데칼 투영의 바운드를 나타냅니다. 데칼 액터에는 투영 방향을 가리키는 화살표가 있습니다.
콘텐츠 브라우저에서 새 머티리얼을 생성합니다. 디테일 패널에서 머티리얼 도메인을 디퍼드 데칼(Deferred Decal) 로 설정하고, 지원되는 블렌드 모드(Blend Mode) 를 선택합니다. 지원되는 블렌드 모드에는 반투명(Translucent) 및 알파 컴포짓(Alpha Composite) 이 있습니다.
위에 나와 있는 두 가지 옵션을 넘어서는 데칼 블렌딩이 필요한 경우 DBuffer 머티리얼 표현식 을 사용하여 머티리얼 그래프에서 커스텀 블렌드 로직을 생성할 수 있습니다. 아래의 데칼 블렌딩 섹션을 참조하세요.
변조(Modulate) 블렌드 모드는 DBuffer 데칼에서 지원되지 않지만, 컴파일 오류를 유발하지는 않습니다. 변조 가 선택된 경우 머티리얼은 성공적으로 컴파일되지만, 블렌드 모드는 반투명으로 자동 예비 전환됩니다.
머티리얼 그래프에서 데칼의 비주얼 어트리뷰트를 환경설정하고, 머티리얼을 컴파일하여 데칼 액터에 적용합니다. 액터가 씬의 메시와 교차되면 데칼의 비주얼 퀄리티가 메시에 화살표 방향으로 투영됩니다.
아래 두 번째 이미지에 나와 있는 것처럼 표면이 바운딩 박스 범위에 도달하면 수신 머티리얼의 프로퍼티로 다시 매끄럽게 전환됩니다.


데칼 액터가 비축 회전을 하는 경우 데칼 트랜지션은 다시 점차적으로 바운딩 박스 에지의 벽돌로 전환됩니다.
데칼 액터에는 다음과 같은 프로퍼티가 있습니다.
데칼 액터 프로퍼티는 아래 표에 정의되어 있습니다.
| 프로퍼티 | 정의 |
|---|---|
| 데칼 머티리얼(Decal Material) | 데칼이 사용하는 머티리얼 에셋을 지정합니다. |
| 정렬 순서(Sort Order) | 데칼 엘리먼트를 렌더링하는 순서를 제어합니다. 큰 수일수록 나중에 위에서 렌더링되며, 작은 수일수록 아래에서 렌더링됩니다. |
| 페이드 화면 크기(Fade Screen Size) | 데칼이 페이드 아웃될 화면 크기입니다. |
| 페이드 시작 딜레이(Fade Start Delay) | 데칼을 페이드 아웃하기 전 대기 시간(초)입니다. |
| 페이드 지속시간(Fade Duration) | 데칼이 페이드 아웃되는 시간(초)입니다. 페이드 지속시간 및 시작 딜레이를 0으로 설정하면 데칼이 지속됩니다. |
| 페이드 인 지속시간(Fade In Duration) | 데칼이 페이드 인되는 시간(초)입니다. |
| 페이드 인 시작 딜레이(Fade in Start Delay) | 데칼을 페이드 인하기 전 대기 시간(초)입니다. |
| 페이드 후 오너 소멸(Destroy Owner After Fade) | 활성화하면 페이드 아웃 후 소유한 액터가 자동으로 소멸됩니다. |
| 데칼 크기(Decal Size) | 로컬 공간의 데칼 크기입니다. |
| 데칼 컬러(Decal Color) | 데칼의 베이스 컬러를 설정하는 방법입니다. 데칼 컬러 노드를 사용하여 머티리얼 그래프에서 이 컬러에 액세스할 수 있습니다. |
메시 데칼
데칼을 활용하는 다른 방식으로 씬의 지오메트리에 데칼 머티리얼을 적용하는 것이 있습니다. 이 방식은 스태틱 또는 스켈레탈 메시에서 작동하며, 그런 다음 해당 지오메트리는 레벨의 메시 데칼과 같은 역할을 합니다.
동일한 시각적 충실도를 얻기 위해 큰 텍스처를 사용하는 데 따른 메모리 비용을 들이지 않아도 투영을 복잡한 셰이프로 제한할 수 있다는 것이 메시 데칼의 장점입니다. 아래 예시에서 메시 데칼은 도로 표시를 만드는 데 사용되었습니다.
이 예시에서 메시의 노란색 바운딩 에지는 도로 표시의 윤곽을 철저히 제한하여 데칼이 적용된 외곽선을 형성합니다. 곡선 지오메트리를 사용하면 외부 DCC에서의 데칼 작성이 덜 까다로워지며, 그 결과 텍스처 해상도가 향상됩니다.
메시 데칼에 대한 자세한 내용은 이 페이지에서 확인할 수 있습니다.
액터의 데칼 수신 세팅
스태틱 및 스켈레탈 메시 액터에는 디테일 패널에 데칼 수신(Receives Decals) 세팅이 있습니다. 이 토글이 비활성화되어 있으면 해당 액터가 데칼 액터와 교차하는 경우에도 데칼 투영을 수신하지 않습니다.
이 프로퍼티는 데칼 액터의 바운딩 박스가 교차되는 액터들로 빽빽이 채워진 클러스터가 있지만 특정 표면에만 데칼을 표시하고 싶은 경우에 매우 유용합니다.
벽에는 데칼 수신이 활성화되어 있지만 파란색 스피어 및 주황색 원기둥에는 비활성화되어 있습니다.
데칼 반응
뷰포트 내 데칼의 최종 외관은 데칼을 투영하는 액터에 적용된 머티리얼의 어트리뷰트뿐만 아니라, 데칼 투영을 수신하는 머티리얼에 따라서도 다릅니다.
예를 들어, 아래에 표시된 머티리얼 그래프는 베이스 컬러, 노멀, 러프니스라는 3개의 입력으로 데이터를 전달합니다. 그에 따른 데칼(오른쪽 그림)은 수신 표면의 어트리뷰트 3개를 모두 수정합니다.
수신 표면의 데칼 반응(Decal Response) 프로퍼티는 어떤 데칼 투영 어트리뷰트가 수신 표면에 표시될지 결정합니다. 이 프로퍼티는 머티리얼(Material) > 고급(Advanced) 아래의 디테일 패널에서 찾을 수 있으며, 디폴트값은 컬러 노멀 러프니스(Color Normal Roughness) 입니다.
| 데칼 반응 | 정의 |
|---|---|
| 없음(None) | 머티리얼이 데칼을 수신하지 않습니다. 커스터마이징된 데칼 적용을 위해 머티리얼 그래프에서 DBuffer 채널을 계속 읽을 수 있어, 자유롭게 보간할 수 있습니다. |
| 컬러 노멀 러프니스(Color Normal Roughness) | 데칼을 수신하고 모든 DBuffer 채널을 적용합니다. |
| 컬러(Color) | 데칼을 수신하고 컬러 DBuffer 채널을 적용합니다. |
| 컬러 노멀(Color Normal) | 데칼을 수신하고 컬러 및 노멀 DBuffer 채널을 적용합니다. |
| 컬러 러프니스(Color Roughness) | 데칼을 수신하고 컬러, 러프니스, 스페큘러, 메탈릭 DBuffer 채널을 적용합니다. |
| 노멀(Normal) | 데칼을 수신하고 노멀 DBuffer 채널을 적용합니다. |
| 노멀 러프니스(Normal Roughness) | 데칼을 수신하고 노멀, 러프니스, 스페큘러, 메탈릭 DBuffer 채널을 적용합니다. |
| 러프니스(Roughness) | 데칼을 수신하고 러프니스, 스페큘러, 메탈릭 DBuffer 채널을 적용합니다. |
아래의 예시는 이 프로퍼티가 컬러 그리고 노멀 러프니스 로 변경되었을 때 데칼 결과를 보여줍니다. 왼쪽 예시에서는 데칼의 베이스 컬러만 벽에 투영되었으며 노멀 및 러프니스 데이터는 제거되었습니다. 오른쪽 예시는 노멀 및 러프니스는 수정되었지만 베이스 컬러가 벽에서 파생된 모습을 보여줍니다.
정렬 순서
오버랩된 데칼이 여러 개 있는 경우 각 데칼 액터의 디테일 패널에서 정렬 순서(Sort Order) 를 설정할 수 있습니다. 정렬 순서 값이 높은 데칼 액터는 값이 낮은 데칼 위에 표시됩니다.
아래 예시에서는 정렬 순서를 파란색 데칼은 3, 빨간색 데칼은 2, 녹색 데칼은 1로 설정했습니다. 파란색 데칼이 맨 위에서 렌더링되며, 녹색 데칼이 맨 아래에서 렌더링됩니다.
DBuffer 머티리얼 표현식을 사용하는 데칼 블렌딩
디테일 패널에서 머티리얼 > 블렌드 모드 프로퍼티를 사용하여 DBuffer 데칼의 블렌드 모드를 설정합니다. 반투명 및 AlphaComposite 블렌드 모드가 지원됩니다.
위 방법뿐만 아니라 DBuffer 텍스처 머티리얼 표현식을 사용하여 수신 머티리얼의 머티리얼 그래프에서 커스텀 블렌딩 로직을 만들 수 있습니다.
DBuffer 머티리얼 표현식
DBuffer 텍스처 머티리얼 표현식을 통해 세 DBuffer 텍스처 각각에 액세스할 수 있으며, DBuffer 텍스처는 베이스 컬러, 월드 노멀, 러프니스에 대한 데칼 반응을 구성합니다.
이 노드는 DBuffer에서 머티리얼의 머티리얼 그래프로 직접 데이터를 읽을 수 있습니다. DBuffer 텍스처 머티리얼 표현식을 사용하면 프로젝트에 맞는 데칼 비헤이비어를 유연하게 커스터마이징할 수 있습니다. 예를 들어, 스테인(Stain) 데칼 블렌드 모드와 같은 언리얼 엔진 4 레거시 데칼 비헤이비어의 룩을 재현할 수 있습니다.
머티리얼 그래프에서 이 노드를 선택한 상태에서 디테일 패널의 드롭다운 메뉴를 사용하여 원하는 DBuffer 텍스처를 선택합니다.
또한 ApplyDBuffer 머티리얼 함수를 사용하여 머티리얼 그래프에서 DBuffer를 블렌딩할 수 있습니다. 이 함수는 DBuffer 데칼 반응 머티리얼 세팅에 의해 적용된 로직을 자동으로 리플리케이트하도록 설계되었습니다. 이 머티리얼 함수는 입력에서 최대 3개의 DBufferTexture 노드와 수신 머티리얼의 머티리얼 어트리뷰트를 수락합니다. 데칼 어트리뷰트와 결합된 머티리얼 어트리뷰트를 반환합니다.
머티리얼 그래프에서 DBuffer 표현식을 사용할 때 수신 머티리얼의 데칼 반응 을 없음 으로 설정하여 데칼 이중 적용을 방지할 수 있습니다.
이러한 머티리얼 표현식은 데칼 액터에 적용된 머티리얼이 아니라 수신 머티리얼의 그래프에서 사용됩니다.
레거시 스테인 데칼의 예시
DBufferTexture 표현식을 사용하면 레거시 스테인 데칼 블렌드 모드를 비슷하게 구현할 수 있습니다. 아래의 표면에 틴팅과 다크닝을 동시 적용하는 데칼로 이전과 비슷한 비주얼 이펙트가 만들어집니다.
왼쪽 그림은 디폴트 반투명 데칼 블렌딩, 오른쪽 그림은 DBuffer 스테인 블렌딩입니다.
이 방법의 주된 한계점은 DBuffer 데칼이 정렬되어야 하며, 언제든 표면에 하나만 표시될 수 있다는 것입니다. 오버랩된 DBuffer 데칼은 함께 블렌딩되지 않습니다. 이는 위 이미지의 오버랩된 영역에서 명확하게 드러납니다. 빨간색 데칼은 파란색 데칼로 가려지고, 녹색 데칼은 다른 두 데칼로 가려집니다.
DBuffer 스테인 워크플로
다음 단계를 따라 DBuffer 머티리얼 표현식으로 레거시 스테인 데칼 블렌드 모드를 재현할 수 있습니다.
-
수신 머티리얼을 열고 데칼 반응을 없음 으로 설정합니다.
-
DBufferTexture 노드를 사용하여 머티리얼 그래프에 아래 표시된 로직을 추가합니다. 이렇게 하면 데칼 머티리얼에서 베이스 컬러를 읽고 벽 텍스처의 컬러로 곱합니다. 결과는 수신 머티리얼의 베이스 컬러 입력으로 전달됩니다.
퍼포먼스상의 영향
퍼포먼스상의 중대한 페널티 없이 많은 수의 데칼을 동시에 렌더링할 수 있습니다. 다른 머티리얼과 마찬가지로 데칼 머티리얼의 비용은 화면 커버리지와 머티리얼 복잡도에 따라 늘어납니다.
패스 트레이서에서 메시 데칼의 기본 비용이 유지되며, 데칼에 대한 추가 가속화 구조(TLAS)를 트레이싱합니다. 또한, TLAS 트레이싱 전에 데칼 투영을 정렬하면 추가 비용이 발생합니다. 일반적인 규칙은 데칼 비용이 화면상의 데칼 커버리지에 따라 늘어난다는 것입니다. 예를 들어, The Origin과 같이 데칼이 많은 씬은 비용이 약 30% 더 들 수 있습니다. 보다 제한된 시나리오에서 추가 비용은 5% 정도 낮을 수 있습니다.
The Origin의 아래 프레임은 데칼이 비활성화된 경우 ~32ms/샘플, 데칼이 활성화된 경우 ~44ms/샘플로 렌더링됩니다.

데칼 비활성화됨(~32ms/샘플), 데칼 활성화됨(~44ms/샘플)
래스터 렌더 경로에서 DBuffer 데칼을 사용하려면 프로젝트에 뎁스 프리패스를 사용해야 합니다. 이는 드로 콜을 추가하지만 컬링을 향상시킵니다. 엔진 - 렌더링(Engine - Rendering) > 얼리 Z 패스(Early Z-pass) 에 있는 프로젝트 세팅에서 활성화할 수 있습니다.
실제로는 버추얼 텍스처, 나나이트, 루멘 역시 뎁스 프리패스를 사용하기 때문에, 고사양 플랫폼에서 상당 수준의 오버헤드를 유발하지는 않습니다. 이러한 시스템이 이미 프로젝트에서 사용되고 있는 경우 DBuffer 데칼로 인한 페널티가 거의 또는 아예 없습니다.
데칼 최적화하기
데칼의 퍼포먼스를 최적화하려면 데칼을 수신해야 하는 머티리얼에만 데칼 반응을 활성화합니다. 또한, 데칼이 사용 중인 수신 머티리얼의 채널만 활성화해야 합니다. 예를 들어, 머티리얼이 베이스 컬러만 수신하고 노멀이나 러프니스를 수신할 필요가 없다면 컬러 데칼 반응을 선택합니다.
DBuffer를 사용하는 각 머티리얼은 코드를 추가하며, 이로 인해 해당 머티리얼의 복잡도와 비용이 늘어날 수 있습니다.
이전 프레임의 노멀을 다시 투영하면 관련 비용이 들 수 있지만, 이는 데칼에 영향을 받는 픽셀의 샘플링과 재투영에만 해당됩니다.
제한 사항
UE4 레거시 데칼과의 시각적 비일관성
프로젝트에 구운 라이팅을 사용하는 경우 레거시 UE4 GBuffer 데칼과 DBuffer 데칼 간에 시각적 비일관성이 있을 수 있습니다. GBuffer 데칼은 구운 라이팅 및 스카이 라이팅 다음에 적용됩니다. GBuffer 데칼이 DBuffer 데칼과 같은 방식으로 라이팅에 직접 영향을 받지 않는다는 뜻이며, 컬러가 빛바랜 듯 보입니다.
반대로 DBuffer 데칼은 대부분 BasePass 머티리얼에서 먼저 적용되며(이미시브 및 앰비언트 오클루전 제외) 구운 간접광 계산 시 올바르게 샘플링됩니다. 그에 따른 DBuffer 데칼은 물리적으로 보다 정확하며 대비와 채도가 유지됩니다.


언리얼 엔진 4의 구운 라이팅을 사용한 GBuffer 데칼(왼쪽) 및 언리얼 엔진 5의 구운 라이팅을 사용한 DBuffer 데칼(오른쪽) 예시
노멀 재투영
DBuffer 데칼은 셰이더의 한계를 극복하기 위해 이전 프레임에서 노멀을 재투영해야 합니다. 이는 노멀이 주어진 프레임에서 쓰거나 읽는 것 중 하나만 가능하며, 둘 다는 불가능하기 때문입니다. 재투영 오류가 발생하는 경우 DBuffer는 프리패스 뎁스를 제외한 무언가를 샘플링하기에는 너무 이른 시점에 샘플링되기 때문에, DBuffer 데칼이 누락된 노멀로 인한 패시팅 아티팩트를 표시할 수 있습니다.
기본적으로 이전 프레임 노멀 재투영은 비활성화 상태이지만, r.Decal.NormalReprojectionEnabled=1 콘솔 변수로 활성화할 수 있습니다. 이는 위를 향하는 오브젝트 표면에서 눈이나 잔디 등 표면이 향하는 방향을 기준으로 데칼을 적용할 때 주로 사용됩니다.
스테인 블렌드 모드
DBuffer 데칼은 스테인 블렌드 모드를 지원하지 않으므로 디폴트 블렌딩 모드로 예비 전환됩니다. 기본적으로 DBuffer 데칼은 (OutColor = SourceAlpha + Dest(1-Alpha)) 연산을 통해 컬러 값 간에 선형보간합니다.
스테인 블렌드 모드는 곱셈 연산인 (OutColor = Source*Dest) 를 사용합니다. DBuffer 데칼로 스테인 이펙트를 구현하는 방법이 위의 데칼 블렌딩 섹션에 설명되어 있기는 하지만, 이 방법이 데칼 오버랩을 제대로 처리하지는 못합니다.
데칼 이미시브 및 앰비언트 오클루전 입력
이미시브(Emissive) 및 앰비언트 오클루전(Ambient Occlusion) 은 데칼 머티리얼에서 특수한 사례로 취급됩니다. 메인 머티리얼 노드의 입력 핀은 DBuffer 시스템을 사용하는 것이 아니라 SceneColor 또는 스크린 스페이스 앰비언트 오클루전 중 하나에 디퍼드 블렌딩을 수행하는 추가 드로 콜에 의해 구현됩니다.
서브스트레이트 머티리얼을 사용 중인 경우 SceneColor 및 스크린 스페이스 앰비언트 오클루전 렌더 타깃은 계속 존재합니다.
데칼 모바일 호환성
DBuffer 데칼은 모바일상의 데칼 렌더링을 지원하지 않습니다.
모바일 포워드 셰이딩(OpenGL ES 3.2, Metal, Vulkan, Switch)은 GBuffer 데칼 렌더링도 지원하지 않으며, 대신 라이팅이 적용된 씬 컬러에 베이스 컬러/이미시브를 적용하여 데칼과 비슷하게 연출합니다.
모바일 디퍼드 셰이딩을 사용 중인 경우 GBuffer 데칼이 사용됩니다. 앰비언트 오클루전은 이러한 디바이스에서 지원되지 않으며, 렌더링되지 않습니다.
모바일 디바이스의 데칼 지원에 대한 자세한 내용은 모바일 렌더링 기능 페이지를 참조하세요.
서브스트레이트 데칼 모바일 호환성
프로젝트에 서브스트레이트를 활성화한 경우 모바일 디퍼드 셰이딩은 더 이상 데칼 렌더링에 GBuffer를 사용하지 않으며 DBuffer 데칼만 작동합니다.