
그래픽 직무 면접에서는 "이 작품을 만드는 데 무엇을 신경 썼는가"를 꼭 묻습니다. 예쁘게 만드는 것보다 게임 안에서 잘 보이고 가볍게 돌아가도록 만드는 것이…
색을 덮어쓰지 않고 섞어서 그리는 방식
컴퓨터 이미지의 각 픽셀은 빨강·초록·파랑 세 가지 색 값에 더해 알파라는 네 번째 값을 가질 수 있습니다. 알파는 그 픽셀이 얼마나 불투명한지를 나타냅니다. 알파가 가장 크면 완전히 가리고, 0이면 완전히 투명해 보이지 않습니다.
보통 불투명한 물체를 그릴 때는 새 색이 기존 색을 그냥 덮어씁니다. 알파 블렌딩을 쓰면 덮어쓰지 않고 두 색을 비율대로 섞습니다. 알파가 절반이라면 새 색 절반, 뒤의 색 절반이 섞인 결과가 화면에 남습니다.
셀로판지를 떠올리면 쉽습니다. 빨간 셀로판지를 파란 그림 위에 올리면 두 색이 겹쳐 보라빛으로 보입니다. 셀로판지가 진할수록 빨간색이 강해지고, 옅을수록 아래 그림이 더 잘 보입니다. 그 진하기가 알파 값입니다.
섞는 방식에 따라 느낌이 달라집니다
같은 반투명이라도 색을 섞는 공식에 따라 결과가 전혀 다릅니다. 게임 이펙트에서는 다음 방식들을 상황에 맞게 골라 씁니다.
| 방식 | 결과 | 주로 쓰는 곳 |
|---|---|---|
| 일반 알파 블렌딩 | 알파 비율대로 앞뒤 색을 섞음, 어두운 색도 표현 가능 | 연기, 먼지, 유리, 그림자 얼룩 |
| 가산(Additive) | 뒤의 색에 새 색을 더해 점점 밝아짐 | 불꽃, 빛, 마법 광채, 번쩍임 |
| 곱하기(Multiply) | 뒤의 색에 곱해 어두워짐 | 그을음, 얼룩, 어둡게 물드는 효과 |
| 알파 테스트(컷아웃) | 일정 값 기준으로 보이거나 안 보이거나 둘 중 하나 | 나뭇잎, 풀, 철망, 머리카락 끝 |
가산 방식은 겹칠수록 밝아져서 빛나는 느낌을 내기 좋습니다. 대신 검은색은 더해도 변화가 없어 투명처럼 보이므로, 가산용 텍스처는 검은 배경에 밝은 그림으로 만드는 경우가 많습니다. 반대로 어두운 연기를 가산으로 만들면 아예 보이지 않게 됩니다.
알파 테스트는 엄밀히 말하면 섞는 방식이 아니라 자르는 방식입니다. 반투명 단계가 없어 가장자리가 딱딱할 수 있지만, 순서 문제에서 자유롭고 가볍다는 장점이 있어 식물 표현에 많이 씁니다.
그리는 순서가 결과를 바꾸는 이유
알파 블렌딩의 가장 까다로운 점은 순서입니다. 섞으려면 뒤에 있는 색이 먼저 화면에 그려져 있어야 합니다. 그래서 엔진은 불투명한 물체를 먼저 다 그린 뒤, 반투명한 물체를 카메라에서 먼 것부터 가까운 것 순으로 그립니다.
문제는 반투명 물체끼리 겹칠 때입니다. 엔진은 보통 물체의 중심점 거리로 순서를 정하는데, 큰 물체나 서로 교차하는 물체는 중심만으로 앞뒤를 정확히 가리기 어렵습니다. 그 결과 카메라를 돌릴 때 연기와 유리의 앞뒤가 갑자기 뒤바뀌어 보이는 현상이 생깁니다. 이를 흔히 정렬(소팅) 문제라고 부릅니다.
이 문제는 완전히 없애기 어려워서 실무에서는 피해 가는 방법을 씁니다. 반투명 물체를 서로 교차하지 않게 배치하거나, 정렬 우선순위를 직접 지정하거나, 가능한 부분은 알파 테스트로 바꾸는 식입니다.
반투명이 많아지면 성능이 떨어집니다
불투명한 물체는 앞에 가려진 픽셀을 건너뛸 수 있습니다. 하지만 반투명 물체는 뒤가 비쳐야 하므로 겹친 만큼 모두 계산해야 합니다. 연기 파티클 수십 장이 화면 한가운데 겹쳐 있으면 같은 픽셀을 수십 번 다시 칠하는 셈입니다. 이를 오버드로(overdraw)라고 합니다.
- 파티클 한 장의 크기를 필요 이상으로 키우지 않기
- 텍스처의 투명한 빈 영역이 넓으면 판의 모양을 그림에 맞게 줄이기
- 같은 효과를 적은 장 수로 낼 수 있는지 먼저 시도하기
- 엔진의 오버드로 보기 기능으로 겹침이 심한 곳 확인하기
특히 모바일 게임에서는 화면을 가득 채우는 반투명 이펙트가 프레임을 크게 떨어뜨리는 원인이 됩니다. 이펙트 아티스트가 예쁜 효과를 만드는 것만큼 가볍게 만드는 데 신경 쓰는 이유입니다.
처음 다룰 때 헷갈리는 점
가장 흔한 실수는 텍스처에 알파 채널이 없는데 반투명 재질을 쓰는 경우입니다. 저장 형식에 따라 투명 정보가 빠지기도 해서, 엔진에서 사각형 테두리가 그대로 보이면 텍스처 파일부터 확인해야 합니다.
가장자리에 검거나 흰 테두리가 생기는 것도 자주 겪는 문제입니다. 투명 영역의 색 정보가 경계에 섞여 나오는 것인데, 프리멀티플라이드 알파라는 처리 방식이나 가장자리 색을 바깥으로 늘려 주는 작업으로 줄일 수 있습니다. 이름이 어렵지만 '투명한 곳의 색도 신경 써야 한다'는 점만 기억하면 됩니다.
반투명 물체가 그림자를 이상하게 만들거나, 아예 그림자를 만들지 않는 것도 처음엔 당황스럽습니다. 많은 엔진에서 반투명 재질은 그림자 계산에서 따로 다뤄지기 때문입니다. 연기 같은 이펙트는 그림자가 없어도 어색하지 않지만, 반투명 커튼처럼 그림자가 필요하다면 설정을 따로 확인해야 합니다.
또 반투명 물체는 안개나 후처리 효과와 섞일 때 예상과 다르게 보일 수 있습니다. 이펙트 단독 화면만 보지 말고 실제 게임 장면 안에 넣어 확인하는 습관을 들이세요.
이펙트 공부에서 알파 블렌딩을 익히는 법
같은 텍스처 하나를 일반, 가산, 곱하기 방식으로 바꿔 가며 밝은 배경과 어두운 배경 위에 각각 띄워 보세요. 표 하나로 외우는 것보다 훨씬 빨리 차이가 몸에 익습니다. 그다음 연기 파티클을 점점 늘려 가며 엔진의 성능 지표가 어떻게 변하는지 확인해 보면 오버드로가 왜 문제인지도 체감할 수 있습니다.
만든 이펙트가 어떤 배경에서는 예쁘고 어떤 배경에서는 사라져 버린다면, 블렌딩 방식부터 다시 점검해 볼 때입니다. 셰이더와 머티리얼 설정이 아직 낯설다면, SBS아카데미게임학원 3D 이펙트(VFX) 과정 상담에서 Unity에서 이펙트를 조립하는 과정이 어떻게 구성되는지 먼저 살펴보셔도 좋습니다.
자주 묻는 질문
알파 값은 어디서 정하나요?
텍스처의 알파 채널, 재질의 투명도 설정, 파티클의 색상 변화 같은 여러 곳에서 정할 수 있고, 엔진은 이 값들을 곱해서 최종 투명도를 계산합니다.
반투명 캐릭터가 이상하게 보이는 이유는 뭔가요?
캐릭터 몸의 앞뒤 면이 서로 비쳐 보이며 순서가 꼬이기 때문인 경우가 많습니다. 깊이 정보를 먼저 기록하는 방식처럼 별도의 처리가 필요합니다.
가까운 캠퍼스에서 게임그래픽 알아보기
사는 곳과 가까운 캠퍼스를 고르면 수업 내용, 오시는 길, 상담 신청을 한 번에 볼 수 있습니다.