본문으로 건너뛰기
VFX Diary
VFX Diary
,

Unreal VFX용 Shader 성능을 볼 때 먼저 확인할 체크리스트

게임 VFX에서 Material과 Shader는 화면의 인상을 크게 바꾼다. 하지만 멋진 그래프를 만들었다고 해서 항상 좋은 이펙트가 되는 것은 아니다. 너무 비싼 Material은 프레임을 떨어뜨리고, 특히 파티클처럼 많이 그려지는 요소에서는 문제가 더 빨리 드러난다.

이 글은 Unreal VFX 작업자가 Material 성능을 볼 때 먼저 확인하면 좋은 항목을 정리한 체크리스트다.

1. Translucent를 너무 쉽게 쓰고 있지 않은가?

Unreal VFX용 Shader 성능을 볼 때 먼저 확인할 체크리스트
VFX Material Cost Stack – Material Stats Panel. 이미지 출처: Epic Games 공식 Unreal Engine 문서.

VFX는 연기, 불, 마법, 에너지 같은 반투명 요소가 많아서 Translucent Material을 자주 쓴다. 문제는 Translucent가 겹칠수록 오버드로우 비용이 커진다는 점이다.

같은 픽셀 위에 여러 장의 반투명 파티클이 겹치면 GPU는 그 픽셀을 여러 번 계산해야 한다. 화면에서는 부드럽게 보이지만 실제 비용은 꽤 비쌀 수 있다.

확인할 것:

  • 정말 Translucent가 필요한가?
  • Additive나 Masked로 바꿔도 되는가?
  • 파티클 크기가 화면을 너무 많이 덮고 있지 않은가?
  • 같은 위치에 여러 레이어가 과하게 겹치지 않는가?

연기처럼 부드러운 투명이 필요하면 Translucent가 맞다. 하지만 작은 스파크, UI식 하이라이트, 짧은 플래시는 Additive나 Masked로 충분한 경우가 많다.

2. 텍스처 샘플 수가 과하지 않은가?

Platform Stats screenshot for Shader Performance Checklist
Texture Sample Budget – Platform Stats. 이미지 출처: Epic Games 공식 Unreal Engine 문서.

Material 안에서 텍스처를 많이 읽을수록 비용이 올라간다. Base Color, Normal, Mask, Noise, Distortion, Flipbook까지 더하면 생각보다 빠르게 무거워진다.

VFX Material에서는 채널 패킹을 적극적으로 쓰는 것이 좋다.

  • R: Dissolve mask
  • G: Edge noise
  • B: Motion mask
  • A: Opacity

이렇게 하나의 텍스처에 여러 정보를 넣으면 샘플 수를 줄일 수 있다. 물론 너무 복잡하게 패킹하면 관리가 어려워지므로, 반복해서 쓰는 Material부터 정리하는 것이 좋다.

3. Panner와 Noise를 무작정 겹치고 있지 않은가?

Material Editor UI screenshot for Shader Performance Checklist
Motion Noise Audit – Material Editor UI. 이미지 출처: Epic Games 공식 Unreal Engine 문서.

움직이는 에너지나 마법 이펙트를 만들 때 Panner와 Noise를 많이 쓴다. 두세 장의 노이즈를 서로 다른 속도로 움직이면 보기에는 풍부하지만, 모든 파티클에 같은 계산이 반복된다.

확인할 것:

  • 비슷한 움직임을 하는 노이즈가 중복되어 있지 않은가?
  • 하나의 노이즈로 충분한데 두 개를 쓰고 있지 않은가?
  • 가까이서만 보이는 디테일을 멀리서도 계산하고 있지 않은가?
  • Flipbook 텍스처로 대체하는 편이 나은가?

화면에서 차이가 거의 없다면 그래프를 줄이는 편이 좋다. VFX는 움직임이 빠르기 때문에 플레이 중에는 디테일 차이가 생각보다 덜 보이는 경우가 많다.

4. Depth Fade와 Scene Texture 사용을 확인하자

HLSL Code Panel screenshot for Shader Performance Checklist
Depth Usage Check – HLSL Code Panel. 이미지 출처: Epic Games 공식 Unreal Engine 문서.

Depth Fade는 파티클이 지형이나 오브젝트와 만나는 부분을 부드럽게 만들어 준다. 하지만 모든 Material에 습관처럼 넣으면 비용이 쌓인다.

Scene Color, Scene Depth, Custom Depth 같은 Scene Texture 계열도 강력하지만, 목적 없이 쓰면 부담이 된다.

확인할 것:

  • 지면과의 교차가 실제로 보이는 이펙트인가?
  • Depth Fade 거리가 너무 넓지 않은가?
  • Distortion이 꼭 필요한가?
  • Custom Depth를 쓰는 이유가 명확한가?

Depth 관련 노드는 "보기 좋게 만드는 보정"이지만, 모든 이펙트에 자동으로 들어갈 필요는 없다.

5. Material Instance로 조절 가능한 구조인가?

성능 최적화는 그래프를 줄이는 것만이 아니다. 같은 Material을 여러 이펙트에서 재사용할 수 있게 만드는 것도 중요하다.

Material Instance로 조절할 수 있게 만들면 같은 Shader 구조를 공유하면서 색, 강도, 속도, 노이즈 스케일만 바꿀 수 있다.

추천 Parameter:

  • Color
  • Emissive Intensity
  • Opacity
  • Dissolve Amount
  • Edge Width
  • Noise Scale
  • Panner Speed

이렇게 해두면 비슷한 Material을 여러 개 복사해서 관리하는 상황을 줄일 수 있다.

6. 화면에서 보이는 크기와 중요도를 기준으로 판단하자

작은 스파크 하나에 복잡한 Shader를 넣는 것은 보통 좋은 선택이 아니다. 반대로 보스 스킬의 중심부처럼 화면에서 오래 보이고 중요한 이펙트라면 비용을 조금 더 써도 된다.

성능 판단 기준은 "그래프가 복잡한가"만이 아니라 "그 비용을 화면에서 회수하는가"다.

질문을 이렇게 바꿔 보면 좋다.

  • 플레이어가 이 디테일을 실제로 볼 수 있는가?
  • 카메라 거리에서 차이가 나는가?
  • 이 이펙트가 동시에 몇 개까지 나올 수 있는가?
  • 낮은 옵션에서도 유지해야 하는가?
  • Material보다 텍스처나 메시로 처리하는 편이 나은가?

정리

Unreal VFX Shader 성능은 한 가지 노드만 보고 판단하기 어렵다. Blend Mode, 오버드로우, 텍스처 샘플, Scene Texture, 파티클 수, 화면 점유율이 같이 작동한다.

처음에는 아래 다섯 가지만 습관처럼 확인해도 좋다.

  • Translucent를 꼭 써야 하는가?
  • 텍스처 샘플 수를 줄일 수 있는가?
  • 노이즈와 Panner가 중복되지 않는가?
  • Depth Fade와 Scene Texture 사용 이유가 분명한가?
  • Material Instance로 재사용 가능한가?

좋은 VFX Material은 멋진 그래프가 아니라, 화면에서 필요한 만큼만 비용을 쓰는 그래프다.