본문으로 바로가기

Unity3D texture option

category Technical Report/Tutorials 2016. 5. 2. 10:28
반응형



16.05.02 오즈라엘님 포스팅 참고 업데이트 버젼

14.10.13 최초 포스팅(Unity 4.X 기준)




Unity3D에서 texture를 선택시 해당 texture 항목이 나타난다. 디폴트 셋팅은 맨위 texture type에서 texture라고 선택되어진 위와 같은 화면을 볼 수 있다. 여기에서는 몇가지 옵션만을 설정할 수 있는데


Alpha from grascale : 활성화 시, 알파 투명 채널(alpha transparency channel)은 이미지의 기존의 밝고 어두운 명암값에 의해 생성(딱히 안쓴다. 그냥 alpha channel을 따로 작업하는게 좋다)


Wrap Mode : texture가 타일화 되었을 때 어떻게 표시 될건지 선택하는 옵션

     - Repeat : 반복,   - Clamp : texture 가장자리가 늘어남


Filter Mode : 텍스쳐 필터 처리 옵션

     - Point : 필터링 하지 않고 픽셀 그대로 그립니다.

     - Bilinear : 텍스쳐가 필터링 됩니다.

     - Trillinear : Bilinear와 같지만 밉맵 레벨 구간도 같이 필터링이 됩니다.


Ansio level : texture가 가파른 각도로 볼 때 texture의 퀄리티(블러를 무식하게 먹이는게 아니고 자연스럽게 거리에 따라 표현하는 정도를 조절하게 됩니다)를 높임. 마루층이나 지면(floor or ground texture) 표현에 좋음(물론 메모리 먹습니다)


정도로 조절이 가능하며 맨위 texture type을 선택하면




위와 같은 화면으로 조절할 수 있다.


texture : 텍스쳐


Normal map : 말그대로 노멀 맵.(UDK3의 컨템포러리 브라우져 처럼 처음부터 Normal로 임포트 되는것이 아니라 드래그 앤 드랍으로 넘어오기 때문에 이 옵션이 있는듯. texture를 material의 Normal parameter에 연결하면 자동으로 texture 옵션이 바뀌는듯(반대로 엄한 texture 집어넣음 자동으로 바뀌기 때문에 texture 이상하게 나오면 이 옵션이 바뀐경우가 종종 있다.) 셰이더의 normal맵을 사용하는 경우 fix now라고 해서 변환할건지 묻게 되고 체크하면 Normal로 바뀐다.


GUI : HUD나 GUI texture 제어에 사용


Reflection : 큐브맵등에 사용.


Cookie : 사용자의 빛의 쿠키를 위해 사용되는 기본적인 파라미터라고 하는데 써본적이 없어서 잘 모르겠음..(아마도 HDR 소스 사용을 위해 쓰는 texture들에 쓰이는거 같은데 일단 패스....)


Lightmap : 아마도 외부에서 작업된 lightmap texture를 쓰기 위해서 존재하는 옵션 같은데(Unity3D 는 EXR 포맷을 쓴다.)... 안써봐서 이거도 패스


Advanced : texture 제어창을 몽창 열어 젖힌다.




Advanced 옵션을 활성화 한 상태이다.


Non power of 2 : 2의 N으로 제작되지 않은 texture르 불러올때 크기 변환 행동을 할지 여부를 정하는 옵션(scaling behavior)


Generate Cubemap : cubemap 제어시 필요한 옵션이다. 구 혹은 원통등 세부 옵션을 지정할 수 있다.(IOS의 PVRTC 포맷이 정사각형 옵션을 요구하므로 물려서 GUI쪽에서 필요한 옵션인듯...자세한건 UI designer나 담당 프로그래머에게....)


Read/Write Enabled : 스크립트(GetPixels, SetPixels, 그리고 다른 Texture2D 함수들)들로부터 텍스쳐 데이터에 대한 접근을 가능케 하기위해 선택, 그러나 텍스쳐 데이터 카피가 생성되며 텍스쳐 에셋을 위해 두배의 메모리가 필요함에 주의. 꼭, 필요한 경우에만 활성화 할 것을 권장하며 이것은 비압축(Uncompressed)과 DXT 압축 texture에서만 유효. 다른 타입의 압축 texture는 읽히지 않음. 기본적으로 비활성화.


Import type : 텍스쳐 타입을 결정한다.(default, Normal, lightmap)


  - Bypass sRGB sampling : 텍스쳐를 감마보정에서 선형보정으로 변환하지 않음. Color space setting이 Linear로 되어있더라도 texture는 Gamma로 되어있으므로 이를 체크해야 Linear로 사용하게 된다. 체크할시 아래 텍스쳐 이미지에 Linear로 사용되는 texture라는 메세지가 뜬다.

   - Sprite Mode : 스프라이트 애니메이션을 쓸때 사용할 texture의 옵션. (none, single, mutiple. 싱글과 멀티 차이는 축을 설정하는 값 차이인듯)


Generate Mip Maps : 밉맵 사용여부를 체크

    - In linear space : 밉맵을 실행할때 감마보정을 실행하지 않음

    - Border Mipmaps : 작은 밉맵 가장자리로 색상이 침투하는 현상을 방지


Mip map filtering : 밉맵 생성 방식을 결정(체크를 끄면 안씀)


    - Box : 이미지가 부드럽게 작아짐

    - Kaiser : 이미지가 날카롭게 작아짐


Fadeout Mip maps : 밉맵 레벨이 낮아질수록 점점 희미하게 회색으로 처리됨.(fade range로 조절)



Override for Android


이 옵션을 체크할 경우 texture size와 Format, compression quality를 지정할 수 있다.(상단 Icon이 타겟 디바이스 플랫폼. Web, PC, IOS, Android, blackberry, windows 8 등..)


다만, alpha channel이 포함된 texture의 경우 지정한 포맷으로 안되는 경우가 있다. 주의~!




아래는 이 문서작성에 참조한 Unity3D texture 공식 문서의 내용이며(링크 : Unity3D texture) 이미지 포맷에 관한 자료는 본 블로그 포스팅(링크 : 2. 많이 쓰이는 파일 포맷의 특징)을 참조해주기 바란다.


주1. 현재 Unity에서 ETC2가 기본으로 잡히는 경우가 있는데 미들 레인지급 디바이스가 타겟인 개발환경에서는 유리한점이 분명 있으나 아직은 조금 이른감이 있다. texture 설정에서 이에 대해서 조심할것. ES 3.0을 지원하지 않는 기기라면 ETC1으로 사용하는것이 아닌 메모리 상에서 압축되지 않은 텍스쳐로 사용된다.(물론 ETC2를 베이스로 개발할경우 IOS, Android 둘다 지원하는 포맷이므로 리소스 관리에는 매우 편하다)


주2. 가끔 안드로이드에서 DXT를 쓸수 있지 않냐고 하는데 일부 Tegra를 사용하는 기기에서 가능하다..... 일부.....


Desktop

텍스쳐에 어떤 내부 표현이 사용되었는가. 이것은 크기와 퀄리티간의 절충(trade-off)이 필요합니다. 아래 예에서는 게임 내 텍스쳐의 최종 크기(256x256 픽셀)를 보여줍니다.

RGB Compressed DXT1 : 압축된 RGB 텍스쳐. 이것은 디퓨즈(diffuse) 텍스쳐의 가장 흔한 형식입니다. 픽셀 당 4bits (256x256 텍스쳐에 32KB).

RGBA Compressed DXT5 : 압축된 RGBA 텍스쳐. 이것은 디퓨즈(diffuse) & 스페큘러(specular) 제어 텍스쳐의 가장 주요 형식입니다. 1 byte/pixel (256x256 텍스쳐에서 64KB).

RGB 16 bit : 알파(alpha) 없는 65,000가지 색상. 압축 DXT 포맷은 더 적은 메모리를 사용하면서도 보통 더 좋아보입니다. 256x256텍스쳐에 128KB.

RGB 24 bit : 알파 없는 트루 컬러. 256x256 텍스쳐에서 192KB.

Alpha 8 bit : 색상 없는 높은 퀄리티의 알파 채널. 256x256 텍스쳐에서 64KB.

RGBA 16 bit : 낮은 퀄리티의 트루컬러. 16가지 레벨의 빨강(R), 초록(G), 파랑(B) 그리고 알파. 압축된 DXT5 형식은 적은 메모리를 사용하면서도 보통 더 좋아보입니다. 256x256 텍스쳐에서 128KB.

RGBA 32 bit : 알파 있는 트루 컬러 – 이것은 가장 높은 퀄리티를 가집니다. 256x256텍스쳐에서 256KB를 가지며 이것은 아주 큰 용량을 가집니다. 대부분 DXT5는 훨씬 작은 크기에서도 충분한 퀄리티를 제공합니다. 보통 노멀맵쪽에서의 DXT압축은 상당한 퀄리티의 손실을 수반하기 때문에 이것이 주로 사용되는 곳은 노멀맵(Normal Map)에서 입니다.


iOS

텍스쳐에 어떤 내부 표현이 사용되었는가. 이것은 크기와 퀄리티간의 절충(trade-off)이 필요합니다. 아래 예에서는 게임 내 텍스쳐의 최종 크기(256x256 픽셀)를 보여줍니다.

RGB Compressed PVRTC 4 bits :
압축된 RGB 텍스쳐. 이것은 디퓨즈(diffuse) 텍스쳐의 가장 흔한 형식입니다. 픽셀 당 4bits (256x256 텍스쳐에 32KB).

RGBA Compressed PVRTC 4 bits : 압축된 RGBA 텍스쳐. 이것은 디퓨즈(diffuse) & 스페큘러(specular) 제어 텍스쳐의 가장 주요 형식입니다. 픽셀당 1 바이트(1 byte/pixel) (256x256 텍스쳐에서 32KB).

RGB Compressed PVRTC 2 bits : 압축된 RGB텍스쳐. 디퓨즈(diffuse) 텍스쳐에 가장 적합한 낮은 퀄리티의 포맷. 픽셀당 2 비트 (256x256 텍스쳐에서 16KB).

RGBA Compressed PVRTC 2 bits : 압축된 RGBA 텍스쳐. 디퓨즈(diffuse) & 스페큘러(specular) 제어 텍스쳐에 가장 적합한 낮은 퀄리티의 포맷. 픽셀당 2 비트 (256x256 텍스쳐에서 16KB)

RGB Compressed DXT1 : 압축된 RGB 텍스쳐. 이 형식은 iOS에서 지원되지 않지만 데스크탑 프로젝트의 호환성을 위해 가지고 있습니다.

RGBA Compressed DXT5 : 압축된RGBA 텍스쳐. 이 형식은 iOS에서 지원되지 않지만 데스크탑 프로젝트의 호환성을 위해 가지고 있습니다.

RGB 16 bit : 알파(alpha) 없는 65,000 가지 색상. RVRTC 형식보다 메모리를 더 사용하지만 UI 또는 그레이디언트(gradient)없는 날카로운(crisp) 텍스쳐에 더욱 적합합니다. 256x256 텍스쳐에서 128KB.

RGB 24 bit :
알파 없는 트루컬러. 256x256 텍스쳐에서 192KB.

Alpha 8 bit :
높은 퀄리티의 알파 채널. 256x256 텍스쳐에서 64KB.

RGBA 16 bit : 낮은 퀄리티의 트루컬러. 16 레벨의 빨강(R), 초록(G), 파랑(B) 그리고 알파(alpha). RVRTC형식보다 메모리를 더 사용하지만 사용자가 정확한 알파 채널을 원할때 편리합니다. 256x256 텍스쳐에서 128KB.

RGBA 32 bit :
알파 있는 트루컬러 – 이것은 가장 높은 퀄리티를 가집니다. 256x256 텍스쳐에서 256KB를 가지며 이것은 아주 비쌉니다. 대부분 PVRTC는 훨씬 작은 크기에서도 충분한 퀄리티를 제공합니다.



Android

텍스쳐에 어떤 내부 표현이 사용되었는가. 이것은 크기와 퀄리티간의 절충(trade-off)이 필요합니다. 아래 예에서는 게임 내 텍스쳐의 최종 크기(256x256 픽셀)를 보여줍니다.

RGB Compressed DXT1 : 압축된 RGB 텍스쳐. 엔비디아 (Nvidia) Tegra에 의해 지원됩니다. 픽셀당 4 bits (256x256 텍스쳐에서 32KB).

RGBA Compressed DXT5 : 압축된 RGBA 텍스쳐. 엔비디아 (Nvidia) Tegra에 의해 지원됩니다. 픽셀당 6 bits (256x256 텍스쳐에서 64KB).

RGB Compressed ETC 4 bits : 압축된 RGB 텍스쳐. 이것은 디퓨즈(diffuse) 텍스쳐의 가장 흔한 포맷입니다. 픽셀당 4bits (256x256 텍스쳐에서 32KB).

RGB Compressed PVRTC 2 bits : 압축된 RGB 텍스쳐. 이매지네이션 (Imagination) PowerVR GPUs에 의해 지원됩니다. 픽셀당 2bits (256x256 텍스쳐에서 16KB)

RGBA Compressed PVRTC 2 bits :
압축된RGBA 텍스쳐. 이매지네이션 (Imagination) PowerVR GPUs에 의해 지원됩니다. 픽셀당 2bits (256x256 텍스쳐에서 16KB)

RGB Compressed PVRTC 4 bits : 압축된 RGB 텍스쳐. 이매지네이션 (Imagination) PowerVR GPUs에 의해 지원됩니다. 픽셀당 4bits (256x256 텍스쳐에서 32KB)

RGBA Compressed PVRTC 4 bits : 압축된RGBA 텍스쳐. 이매지네이션 (Imagination) PowerVR GPUs에 의해 지원됩니다. 픽셀당 4bits (256x256 텍스쳐에서 32KB)

RGB Compressed ATC 4 bits : 압축된 RGB 텍스쳐. 콸콤(Qualcomm) Snapdragon에 의해 지원됩니다. 픽셀당 4bits (256x256 텍스쳐에서 32KB).

RGBA Compressed ATC 8 bits : 압축된RGBA 텍스쳐. 콸콤(Qualcomm) Snapdragon에 의해 지원됩니다. 픽셀당 6bits (256x256 텍스쳐에서 64KB).

RGB 16 bit : 알파 없는 65,000 가지 색상. RVRTC형식보다 메모리를 더 사용하지만 UI또는 gradient없는 주름진 텍스쳐에 더욱 적합합니다. 256x256 텍스쳐에서는128KB.

RGB 24 bit : 알파 없는 트루컬러. 256x256 텍스쳐에서 192KB.

Alpha 8 bit :
높은 퀄리티의 알파 채널. 256x256 텍스쳐에서 64KB.

RGBA 16 bit
: 낮은 퀄리티의 트루컬러. 알파 채널이 있는 텍스쳐에서의 기본 압축. 256x256 텍스쳐에서 128KB.

RGBA 32 bit :
알파 있는 트루컬러 - 알파 있는 텍스쳐를 위한 가장 높은 퀄리티의 압축. 256x256 텍스쳐에서 256KB.


사용자가 Tegra 같은 어떤 특정 하드웨어를 목표로 하지 않는다면 저희는 ETC1 압축 사용을 권장합니다
. 필요할 경우 외부(external) 알파 채널을 저장할 수 있으면서도 낮은 텍스쳐 종류의 이득을 받을 수 있습니다. 만약 사용자가 반드시 텍스쳐에 알파 채널을 저장하길 원하면 모든 하드웨어 공급 업체에서 지원하는 압축인 RGBA16 bit을 사용하세요.

사용자 앱이 지원되지 않는 텍스쳐 압축(compression)을 사용하면 그 텍스쳐는 RGBA32로 무압축(uncompressed)되며 압축된 것들과 함께 메모리에 저장이 됩니다. 그래서 이 경우 텍스쳐의 압축을 푸는데 시간을 잃게되며 두번의 저장으로 인해 메모리 손실을 봅니다. 이것은 또한 렌더링 성능에도 아주 부정적인 영향을 줄 수 있습니다.


반응형