Notice
Recent Posts
Recent Comments
Link
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

MOONSUN

[D3D] 알파값(투명도) 처리 방식 : Alpha Test, Alpha Sorting, Alpha Blending 본문

D3D

[D3D] 알파값(투명도) 처리 방식 : Alpha Test, Alpha Sorting, Alpha Blending

MoonSun_v 2025. 10. 21. 20:04

 

나뭇잎, 풀, 유리, 연기처럼 알파(투명도) 값을 가진 오브젝트

Depth Buffer와 블렌딩 문제 때문에 일반 오브젝트와 다르게 처리해야 한다.


주요 처리 방식 세 가지를 간단하게 정리해보았다. 

 

 

 

1. 알파 테스트 (Alpha Test) 

물체를 투명 or 불투명 으로만 처리하는 방식.

 

  • 픽셀의 알파 값(투명도)을 확인하고, 기준(threshold)보다 작으면 해당 픽셀을 버리는 방식.

 

HLSL/GLSL에서는 clip()로 구현

clip(texOpacColor.a - 0.5f);  // alpha - threshold

 

 

원리

  • 픽셀이 버려진 경우, Depth Buffer에 기록되지 않으므로 뒤 오브젝트가 보임.
  • Blend는 사용하지 않고, DepthWrite를 켤 수도 있다.

 

장점 & 단점

장단점  내용
장점 Depth 문제 없이 뒤 오브젝트가 보임
  구현 간단, 성능 부담 적음
   
단점 부드러운 반투명 효과(픽셀 혼합) 불가.
  경계 픽셀 계단 현상 발생 가능.

 

사용 예

나뭇잎, 풀, 철망 등 투명 영역 제거 목적

 

 

 

 

2. 알파 블렌딩 (Alpha Blending)

픽셀 색상을 배경과 혼합하여 부드러운 반투명 표현

 

 

기본 혼합 공식

FinalColor = SrcAlpha * SrcColor + (1 - SrcAlpha) * DestColor

 

원리

 

  • DepthWrite OFF, Blend ON
  • 렌더 순서 중요: 뒤 → 앞 순으로 그려야 함
  • 알파값이 0~1 범위이므로 모든 픽셀 보임 가능
  • 반투명 픽셀 색상을 계산해 혼합

 

 

장점 & 단점

장단점  내용
장점 자연스러운 반투명 표현 가능
   
단점 렌더 순서에 따라 시각적 오류 발생 가능
  여러 오브젝트 겹치면 Depth 충돌 문제 가능
  CPU/GPU 연산량 증가 → Alpha Test 보다 느림

 

사용 예

유리, 물, 연기 등 단순 반투명에 적합

 

 

 

 

3. 알파 소팅 (Alpha Sorting) + 블렌딩 (Blend)

여러 반투명 오브젝트가 겹칠 때, 카메라에서 먼 순서대로 정렬 후 Alpha Blending 적용

 

원리

  • 불투명 오브젝트 먼저(앞→뒤, Z값 작은 순)
  • 반투명 오브젝트는 뒤→앞(Z값 큰 순) 정렬 후 렌더링

 

  • 픽셀 색상을 정확히 혼합 가능
  • 2Pass 렌더링을 하면 내부가 비치지 않도록 처리 가능
    • 1차: 불투명 렌더링, Depth 기록
    • 2차: 반투명 렌더링, 깊이값 확인 후 처리

 

장점 & 단점

장단점  내용
장점 겹친 반투명에서 자연스러운 색 혼합 가능
  연기, 불꽃 등 복잡한 반투명 장면 적합
   
단점 오브젝트 많으면 CPU 정렬 비용 발생
  순서 관리 필수
  2Pass 사용 시 Draw Call 증가 → 오버헤드

 

사용 예

숲, 연기, 불꽃, 연속되는 반투명 오브젝트

 

 

 

방식  DepthWrite Blend 알파 처리 장점 단점 사용 예
Alpha Test ON/OFF OFF 0/1 판단 빠름, Depth 문제 없음 부드러운 반투명 불가 나뭇잎, 풀, 철망
Alpha Blending OFF ON 0~1 부드러운 단일 반투명 렌더 순서 의존, 느림 나뭇잎 한 장, 유리, 물
Alpha Sorting + Blend OFF ON 0~1 + 정렬 겹친 반투명 자연스럽게 표현 정렬 비용, 2Pass 오버헤드 나뭇잎 숲, 연기, 불꽃

 

 

 

4. 정리

 

단순 뒤 오브젝트 보이기 → Alpha Test
부드러운 반투명 한 장    → Alpha Blending
겹친 반투명 오브젝트     → Alpha Sorting + Blend

 

 

 

5. 참고 사항

  • 게임에서는 대부분 속도가 중요 → Alpha Test 사용 빈도 높음
  • 알파 블렌딩은 여러 겹치면 CPU/GPU 부담 증가
  • Alpha Sorting은 거리 기반 정렬이므로 완벽하지 않음
  • 2Pass 렌더링으로 내부 투과 문제 해결 가능