jobGuid 꽃미남 프로그래머 "Pope Kim"님의 이론이나 수학에 치우치지 않고 실무에 곧바로 쓸 수 있는 실용적인 셰이더 프로그래밍 입문서 #겁나친절 jobGuid "1판의내용"에 "새로바뀐북미게임업계분위기"와 "비자관련정보", "1판을 기반으로 북미취업에 성공하신 분들의 생생한 경험담"을 담았습니다. 3ds Max를 사용해서 게임용 3D 캐릭터를 셋업하는 방법
이를 위해 오랜 실무를 경험해 온 저자의 고급 노하우들이 공개
위 내용은 GameDevForever의 저자분들의 홍보를 위하여 운영진 자체적으로 올린 광고이며 일체의 수익이 없습니다.(밥좀사줘요~)
Posted by 김포프

벌써 5년넘게 써오고 있는 방법인데 생각보다 모르시는 분들이 많은 것 같아 이방법을 공유합니다.


밉맵?


일단 밉맵이 뭔지는 다 아시리라 생각하고 굳이 밉맵에 대해서는 설명하지 않겠습니다.  모르시는 분들은 여길 참고하세요.


문제점 및 일반적인 해결책


밉맵을 사용하다보면 정말 카메라를 가까이 들이밀지 않는한 텍스처의 디테일이 흐릿해 보이는 경우가 흔히 발생합니다.  보통 다음과 같은 방법들로 해결합니다.


흔히 쓰는 해결법 1 - 텍스처 크기 늘리기


밉레벨이 낮아질수록 텍스처 크기가 절반씩 줄어드는 거니 젤 높은 디테일의 밉멥 텍스처크기를 크게 키워주면 그만큼 흐려지는 현상이 덜합니다. 하지만 메모리를 많이 잡아먹는다는 단점이 있어서 정 필요한 때만 제한적으로 사용하곤 합니다. (왜 흔히 라고 한거지 그럼 -_-)


흔히 쓰는 해결법 2 - 밉맵 바이어스 쓰기


이걸 고치기 위해 흔히 쓰는 해결법은 밉맵 bias를 조절하는 방법입니다. 샘플러스테이트에서 정해주는 방법도 있고 셰이더에서 해주는 법도 있습니다. 뭐든 나쁜 방법은 아니고 가장 널리 쓰는 방법인데 여러가지 단점이 있습니다



  1. 고디테일의 텍스처(크기가 큼)를 더 많이 쓰도록 bias를 주므로 텍스처 캐쉬의 성능저하 (그만큼 넣어야할 데이터가 많으니)

  2. 밉맵이 원래 해결하려고 하는 거리에 따른 애일리어싱 문제가 쉽게 더 생긴다.

  3. 모든 경우에 적당히 잘 동작하는 bias 값을 찾기가 쉽지 않다.


흔히 쓰는 해결법 3 - 밉맵 생성시 사용하는 필터 다르게 사용하기


보통 bilinear 필터를 사용해서 밉맵을 만드는게 일반적입니다. 그럼 그냥 주변에 있는 이웃 픽셀들 2x2개 모아다가 균등하게 혼합하는게 전부입니다. 이 외에 kaiser 필터 등을 사용하면 좀더 낫다고 해서 그렇게 하는 사람들을 봤지만... 개인적으로는 별 효과가 없다고 생각합니다.



제 해결법 - sharpening filter


생각보다 매우 간단합니다. 그냥 밉맵 텍스처에 sharpening 필터 한번 더 먹여주면 됩니다. -_- 사실 밉맵들이 흐릿해 보이는 이유가 bilinear 필터링만 쓰면 그냥 경계를 뭉게버린다는건데 여기다 sharpening 필터 한번 먹여주면 경계부분은 다시 적당히 또렷하게 살아나거든요... 


오프라인 프로세스라 게임성능에 지장도 없고... 흔히 쓰는 해결법 2에서 말씀드렸던 단점들도 없습니다.. 그냥 밉맵만드실때 이런순서로 만들어 주시면 됩니다.


  1. 밉맵 0으로부터 밉맵 1 생성 (bilinear filter)

  2. 밉맵 1에 sharpening filter 적용

  3. 2번 결과물로부터 밉맵 2 생성(bilinear filter)

  4. 밉맵 2에 sharpening filter 적용

  5. 밉맵 끝까지 만들때까지 반복...


이 방법을 대충 포토샵으로 흉내낸걸 보여드리면 대충 이렇습니다. 오른쪽이 제 방법입니다.






꽃미남 포프였습니다.







댓글을 달아 주세요

  1. t 2013.06.13 12:20 신고  댓글주소  수정/삭제  댓글쓰기

    저희 회사의 아트분께 보여드렸더니 포토샵에서 nVidia의 dds 플러그인으로 밉맵 필터 설정을 해서 저렇게 쓰고 있다고 하네요. 이미 대부분이 저렇게 쓰고 있으니 특별히 언급하지 않는 것인지..

    • Favicon of http://gamedevforever.com 김포프 2013.06.13 15:28 신고  댓글주소  수정/삭제

      아 거기서는 아티스트가 직접 밉맵까지 만들어서 저장하나 보네요? 제가 아는 회사들은 대부분 아티스트가 첫번째 밉레벨만 만들고 나머지 밉체인은 파이프라인에서 구워주곤 했어요.

  2. Favicon of http://gamedevforever.com 대마왕J 2013.06.14 15:18 신고  댓글주소  수정/삭제  댓글쓰기

    저희 회사 같은 경우는... 포토샵의 dds 플러그인에서 밉맵 필터 설정도 저렇게 하는 것과 함께, 밉맵의 단계를 줄여서 용량 절약과 바이어스 효과를 동시에 목적하기도 했습니다.
    추가로 배경 타일 이미지 같은 경우는 밉맵 때문에 타일링이 깨지는 경우도 발견되어서, 아예 밉맵을 다 뽑아서 밉맵들의 타일링과 샤프닝을 수작업으로 다 만져주고 저장하기도 하였습니다.
    하지만 이젠 유니티를 쓰니 안될거야...

  3. 베지타 2013.07.26 10:23 신고  댓글주소  수정/삭제  댓글쓰기

    ㅎㅎ 좋은팁 감사합니다.
    저희팀 디자이너분들하고 내용 공유했는데 다덜 좋아하시네요
    기존 텍스쳐를 다시 손봐야하는 최소한의 비용만 지불하구
    퀄리티 향상이 한번 더 확 되겠네요ㅎ



티스토리 툴바