Game Dev그래픽스와 렌더링

backface culling과 winding

후면을 추려내는 backface culling이 왜 성능과 가시성에 도움이 되는지와, CW/CCW winding을 어떻게 읽어야 하는지 정리합니다.

마지막 수정 2026년 3월 22일

기본 패턴

text
카메라에서 안 보일 후면 삼각형은
  -> rasterization 전에 제외

설명

  • backface culling은 카메라 쪽을 향하지 않는 삼각형의 뒷면을 미리 제외하는 처리입니다. 닫힌 메시의 내부 면은 보이지 않는 경우가 많기 때문에, 굳이 뒤쪽 삼각형까지 처리하지 않아도 같은 이미지를 만들 수 있습니다.
  • 이 처리가 가능하려면 삼각형의 앞면과 뒷면을 구분해야 하고, 그 기준이 winding order입니다. 화면 또는 view space 기준으로 정점이 시계 방향(CW)인지 반시계 방향(CCW)인지에 따라 front face를 판정합니다.
  • 여기서 중요한 점은 "어느 공간에서 winding을 해석하는가"입니다. 로컬에서 보던 방향이 transform 이후 뒤집힐 수 있으므로, 실제 판정은 렌더링 파이프라인이 사용하는 공간 기준으로 이뤄집니다.
  • 컬링은 성능 최적화이기도 하지만 디버깅 단서이기도 합니다. 메시가 갑자기 사라지거나 안쪽 면만 보인다면 normal 뒤집힘, 음수 scale, winding 오류를 함께 의심해야 합니다.
  • 엔진과 API마다 기본 front-face 규칙이 다를 수 있으므로, OpenGL과 DirectX 계열 자료를 읽을 때는 기본값 차이를 함께 보는 편이 안전합니다.

빠른 정리

항목핵심 포인트
backface culling카메라 반대쪽을 향한 면을 제외한다
winding order정점 나열 순서로 앞면/뒷면을 구분한다
CW / CCW시계 / 반시계 방향 기준
잘 맞는 대상닫힌 메시, 불투명 표면
흔한 문제뒤집힌 normal, 음수 scale, 잘못된 front-face 설정

주의할 점

backface culling은 "보이지 않는 면을 안 그린다"는 단순 아이디어 같지만, 실제 버그는 winding과 transform 뒤집힘에서 자주 납니다. 모델 import 후 한쪽 면이 사라지면 material보다 winding과 scale부터 확인하세요.

참고 링크

2 sources