다양한 기기들은 다양한 그래픽 아키텍쳐를 기반으로 구동됩니다. 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
코드, 링크 출처 : TAN 그룹 대마왕님
'Unity > 문제해결' 카테고리의 다른 글
Unity: 어드레서블, 아마존 웹 서비스 AWS S3 403 Access Denied 문제 해결 (2) | 2022.01.07 |
---|---|
Unity: URP 스냅드래곤 빛 번짐, 스페큘러가 하얗게 타는 현상 (0) | 2021.12.08 |
Unity: ScnceManager.LoadSceneAsync 프레임 드랍 (0) | 2021.10.10 |
Unity: 스키닝 된 메쉬의 웨이트가 끊길 때 해결 방법 (0) | 2021.07.08 |
Unity: 안드로이드 빌드 Splash 후 검은 화면 해결 방법 (0) | 2021.07.08 |