1. 개요
Texture
질감,
재질 등을 뜻하는 영단어.1.1. 3D 그래픽에서의 텍스처
3D 컴퓨터 그래픽 용어. 3차원 물체의 표면에 2차원 이미지를 입혀서 적은 삼각형으로도 높은 디테일을 표현할 수 있게 해주는 렌더링 관련 요소이다. 유타 대학교의 대학원생이었던 애드 캣멀[1]이 만들었다. 업계 종사자들은 흔히 '맵' 이라고 하는데, 언어의 경제성 때문인지 텍스처보다는 맵이라는 단어의 사용 빈도가 높다. 텍스처 제작 작업은 맵핑(mapping), 작업자는 맵퍼(mapper)라고 부르는 식. 이 업계에서 쓰이는 텍스처는 폴리곤의 겉에 씌우는 이미지 파일을 말한다. 즉, 단어의 본래 뜻처럼 모델의 색이나 질감을 나타내는 이미지를 뜻한다. 텍스처를 쓰고 안 쓰고의 차이는 생각보다 크다. 1990년대 초반까지의 게임의 폴리곤 그래픽에서는 텍스처를 쓰려는 시도가 많지 않았다. 그래서인지 이 시절 텍스처를 안 쓴 폴리곤 게임그래픽을 보면 죄다 목각 구조물 아니면 나무인형같아보인다(...). 극단적인 예로 버추어 파이터 1의 오리지널 버전에서는 텍스처가 없었고, 개선판인 버파 REMIX에서는 텍스처가 쓰였는데, 텍스처를 쓰고 안 쓰고의 차이가 꽤 컸다. 물론 그래픽이 발달한 지금도 텍스처 안 씌운 폴리곤 모델이 어색한 것은 마찬가지다.버추어 파이터와 REMIX의 비교 영상. REMIX에선 텍스처가 생겨서 옷의 무늬 같은 것이 생겼다.
게임에서는 오브젝트를 아주 가까이서 보면 도트가 튀거나 하는 등 영화 CG 등에 비교하면 조금 저화질의 텍스처를 사용하는데, 사실 이게 다 컴퓨터가 터지지 않도록 다운그레이드로 최적화 한 것이니 너무 뭐라고 하지 말자(...). 물론 시네마틱 모드나 메트로 2033처럼 최적화는 내다버리고 초고화질 텍스처를 여기저기 남용하는 경우도 있다.[2][3] 단, 현세대기는 예전보다 성능이 굉장히 좋은 편이라, 멀리서 딱 봐도 그림이 눈에 띄게 튀어버리는 저화질 텍스처를 쓰면 크게 저평가받는다. 이런 이유로 가까이 보이는 물체는 고해상도의 텍스처를, 멀리 있는 물체는 미리 축소시켜둔 저해상도의 텍스처를 입혀 렌더링하는 방식이 흔히 쓰인다. 이러한 미리 처리된 텍스처를 밉맵(mipmap)이라고 부른다. 최근에는 대부분의 게임 엔진에서 자체적으로 밉맵을 생성해 주는 기능을 지원한다.[4]
밉맵에는 일장일단이 있는데, 고해상도 렌더링을 줄여 컴퓨터 자원을 보다 덜 사용해 프레임을 확보하는 데에는 유리하다. 하지만 3D 그래픽이 막 대중화되기 시작한 옛날에는 고해상도 텍스처와 저해상도 텍스처를 동시에 불러오게 되어[5] 메모리를 굉장히 많이 잡아먹는다는 단점이 있었다.[6] 그래서 그래픽 메모리를 초과해버리면 CTD 같은 치명적인 오류가 발생하는 경우가 잦아 꼭 필요한 곳에 한에서만 밉맵을 사용하는 것이 좋았었다. 다만 이것도 하나하나 손으로 엔진 작성하던 옛날 이야기고 유니티 같은 요즘 상용엔진에서는 정말 필요한 만큼만 로드하여 오히려 사용하는 그래픽메모리가 감소한다. 현재 그려지는 오브젝트와 카메라 사이의 거리, 텍스처 맵핑 밀도 등의 정보를 가지고 최대 필요한 해상도를 판정해서 필요 해상도 이하의 밉맵들만 실시간으로 로딩/언로딩하는 식인데 이렇게 되면 메모리도 같이 아끼는 일석이조가 가능해진다. 대신 여기서의 트레이드오프는 오브젝트가 그려지는 밉맵 데이터가 로딩되기 전까지 살짝 희미한 텍스처가 보이는것과 디스크를 약간 더 차지하는정도. 그런데 이 희미한 텍스처 단점도 하드디스크 시절에 발생하던 문제이고[7] SSD로 넘어오면서 이 사소한 단점도 사라져 버렸고 메모리가 오버할 상황이면 저해상도 밉맵이미지를 불러오는 식으로 하여 오류가 발생할 여지를 모두 제거해버렸다.
3D 그래픽이 대중화된 이후에는 2D 그래픽에서도 정면을 바라보는 폴리곤을 만들고 거기에 텍스처를 입혀서 표현하는 방식이 대세로 쓰인다. 때문에 이런 형식으로 2D 그래픽 표시를 하는 엔진의 경우 렌더링 버퍼의 원점 좌표(0, 0)가 좌하단이다.
현재 게임 그래픽 등에 널리 쓰이는 텍스처 파일 포맷(텍스처 압축/인코딩 방식)은 여러가지가 있다. S3가 개발하고 많은 GPU가 기본적으로 지원하는 DXT가 대표적인 예다. 그리고 OpenGL과 AMD의 GPU, ARM의 Mali GPU, 퀄컴 Adreno GPU 등 안드로이드 스마트폰 게임에서 널리 쓰이는 ASTC 방식, OpenGL ES에서 쓰이는 에릭슨의 ETC 포맷, 그리고 애플 아이폰 등의 PowerVR GPU에서 지원하는 PVRTC 포맷 등이 있다. 일부 게임에서는 게이머가 직접 캐릭터의 텍스쳐를 수정할수있도록 지원하기도 하는데 이 경우 이를 공유 할 수 있도록 이미지파일이나 독자적인 포멧을 사용하는 경우도 있다.
유독 커스텀 스킨(Custom skin; 게임 제작자가 아닌 플레이어들이 따로 만들거나 구한 스킨) 등의 모드를 지원하는 게임을 다루는 한국 커뮤니티에서는 모델 내지는 폴리곤을 써야할 부분에 텍스처라는 단어를 오용하는 경우가 있다. 쉽게 말해서 텍스처는 모델의 폴리곤에 씌워진, 즉 모델의 겉표면을 이루는 그림이고, 폴리곤은 그 모델의 부피를 이루는 덩어리를 가리킨다.
텍스처러 문서도 참고.
조명과 마찬가지로 무슨 종류의 텍스처를 어디에 어떻게 사용했느냐에 따라[8] 해당 레벨의 분위기 등이 가지각색이 된다. 때문에 레벨 디자인 맵 제작 문단에서처럼 사전에 원화 등으로 컨셉을 우선 잡지 않고 일단 구조부터 만들고 텍스처나 컨셉을 추가하는 경우, 그 구조에 맞는 텍스처나 조명 처리에 후폭풍이 밀려오기도 한다.
그밖에도 동일한 텍스처나 프롭 등이 한 공간이나 통로에서 무한 루프 혹은 스미스 요원 마냥 계속 반복된다면 단조롭고 보기 흉하다. 이 때는 (반복됨이 눈에 거슬릴 지점마다) 새로운 구조나 텍스처를 추가해[9] 노골적으로 반복되는 것이 눈에 잘 띄지 않도록 해줘야 한다. 잔디 텍스쳐의 경우 텍스쳐를 랜덤하게 회전시키고 블렌딩하여 자연스럽게 만드는 기법이 사용된다.
컴퓨터는 텍스처를 렌더링하기 위해 메모리를 2의 거듭제곱에 맞춰 할당한다. 텍스처의 실제 크기와 가장 인접한 2의 거듭제곱만큼의 메모리를 할당한다는 뜻이다. 예를 들어, 컴퓨터는 640×480 크기의 이미지를 렌더링하기 위해 1024×512 크기만큼의 메모리를 할당한다. [math(2^9 \lt 640 \lt 2^{10})], [math(2^8 \lt 480 \lt 2^9)]이므로 1024×512만큼을 할당하는 것이다. 따라서, 텍스처를 이용하여 게임을 개발할 때는, 가로/세로의 크기를 2의 거듭제곱으로 맞추는 것을 매우 권장한다. 연식이 오래 된 게임 엔진은 2의 거듭제곱이 아니면 렌더링을 하지 않는 경우도 있었다. 현재는 웬만해서는 텍스쳐를 메모리상에서 리사이징 하거나, 2의 거듭제곱 사이즈의 텍스쳐에 끼워넣어 올바르게 렌더링해주지만, 그래픽 메모리의 낭비를 막기 위해 2의 거듭제곱으로 맞춰주는 것이 좋다.
1.2. 관련 문서
2. 포켓몬스터의 기술군
2.1. 텍스처(포켓몬스터)
자세한 내용은 텍스처(포켓몬스터) 문서 참고하십시오.2.2. 텍스처2
자세한 내용은 텍스처2 문서 참고하십시오.3. TYPE-MOON/세계관의 용어
자세한 내용은 억지력(TYPE-MOON/세계관) 문서 참고하십시오.4. 발로란트 프로게이머 't3xture' 김나라
자세한 내용은 김나라(프로게이머) 문서 참고하십시오.
[1]
이후
루카스필름에서 CG 기술을 연구하다가
픽사를 창립하고, 현재도 사장으로 근무하고 있다.
[2]
정작 폴리곤이 안 좋아서 문제지만.
[3]
기본 텍스처가 16×16인
마인크래프트도 1024×1024 텍스처팩 같은 고화질 텍스처를 사용할 수 있긴 하다. 하지만 사양이 엄청 올라간다. 이쪽도 뒤에서 이야기할 밉맵을 사용하고 있다.
[4]
여담으포 폴리곤에서도
LOD(
Level of Detail)이라고 해서 거리에 따라 로우폴리곤/하이폴리곤을 왔다갔다 하는 비슷한 기법을 사용한다.
[5]
밉맵과 원본 텍스처는 동일한 파일에 저장되므로 개별적으로 불러올 수 없다.
[6]
특수한 경우가 아니라면 가로세로 길이가 2의 제곱인 정사각형 텍스쳐 맵을 사용하기 때문에 한단계 내려갈때마다 이전 단계의 25%의 용량을 차지하므로 아무리 밉맵이 단계가 많다고 해도 고해상도 텍스쳐의 1.5배 미만의 메모리를 사용한다.
[7]
배그 초창기때 하드디스크에서 SSD로 넘어가던 시절이라 이 문제가 특히 심했었다
[8]
예를 들면 더러운 물이 흐르는
시궁창이 해당 레벨의 주제라면, 말끔한 텍스처보단 이끼나 얼룩진
콘크리트 텍스처가 더 어울리듯.
[9]
여담으로
하프라이프는 -0자로 시작하는 텍스처가 있는데, 이것을 레벨에 넣으면 (동일 규격으로
모듈화된) -0에서 최대 -9까지의 각기 다른 문양의 텍스처가 일정 구간을 경계로 랜덤으로 등장해 반복이 눈에 잘 띄지 않게 했다.