본문 바로가기

Unity/문제해결

Unity: 특정 기기에서 텍스처가 특정 축으로 반전되어 보일 때

다양한 기기들은 다양한 그래픽 아키텍쳐를 기반으로 구동됩니다. DX, OpenGL, Vulkan, Metal 등 굵직한 것만 해도 4개입니다. 일부 아키텍처끼리는 좌표계와 텍스처 UV에서 (0,0), (1,1)이 위치한 곳이 비슷하게 공유되기도 하지만, 그렇지 않은 아키텍처도 존재합니다.

 

보통은 빌드세팅에서 Auto API로 대응시 어느정도 해결되지만, 셰이더를 직접 구성한 경우에는 대응을 위해서 셰이더 코드에서 #define 전처리기를 이용해 뒤집어주는 식으로 작업할 수 있습니다.

#if UNITY_UV_STARTS_AT_TOP
float scale = -1.0;
#else
float scale = 1.0;
#endif
o.uvgrab.xy = (float2(o.vertex.x, o.vertex.y*scale) + o.vertex.w) * 0.5;
o.uvgrab.zw = o.vertex.zw;

https://docs.unity3d.com/Manual/SL-PlatformDifferences.html

 

Unity - Manual: Writing shaders for different graphics APIs

Surface Shaders with DX11 / OpenGL Core Tessellation Understanding shader performance Writing shaders for different graphics APIs In some cases, there are differences in how graphics renderingThe process of drawing graphics to the screen (or to a render te

docs.unity3d.com

 

코드, 링크 출처 : TAN 그룹 대마왕님