Unity를 사용하여 게임을 개발하고 있습니다.
게임 런칭을 앞두고 안드로이드 테스트를 무사히 마치고 아이폰 테스트도 큰 문제없이 잘돌아가는 것까지 확인을 하고 마무리 정리를 하려고 Xcode 디버깅 로그를 보니 생각지도 않던 경고가 계속 나오게 되었습니다.
번들을 로딩할 때마다 나오는 것이 신경쓰였습니다.
WARNING: Shader Unsupported: 'anyshader' - Pass 'FORWARD' has no vertex shader
위와 같은 warning 로그가 반복적으로 출력이 되고 있었습니다.
전혀 원인을 알 수도 없었고 해당 쉐이더는 에셋스토어에서 구매한 쉐이더를 생성한 부분이라 쉐이더를 수정하는 것은 더욱 상상할 수 없는 것이었습니다.
그래서..
구글링으로 해결 방법을 찾아봤으나 대부분 서드파티 업데이트로 해결되었습니다.
제가 사용한 쉐이더 역시 문제는 없었지만 커스텀 형식으로 사용하기 위해 생성된 쉐이더가 문제였습니다.
원인을 알아야 수정을 할텐데..
하루동안 찾고 헤메고 다녔지만 결론은 iOS 에디터에서 원인을 찾을 수 있었습니다.
위와 같은 경고는 쉐이더가 컴파일 되지 않았기 때문에 나오는 오류입니다.
결국 정상적으로 컴파일 되도록 만들어야 합니다.
에디터에서 해당 쉐이더를 열어 컴파일 하거나 쉐이더 사용 번들을 실행해 보면 결과가 나오겠죠.
만약 쉐이더에 문제가 있다면 Unity 에디터에서 컴파일 오류를 알려줍니다.
저의 경우는 쉐이더 내부에서 사용하는 전처리기 정의값이 다르게 적용되어 있었습니다.
Unity 버전이 업데이트 되면서 전처리기를 상당부분 변경하고 있습니다.
Unity 2017.3 버전 Release Note에 보면
...
* Graphics: GPU Instancing: Instance properties are now packed as arrays of structures. Internally, we changed the constant buffer layout, where multiple instance properties are present. There are three changes in the instancing declaration macros, but the old shaders can be upgraded automatically. For your reference, the three changes are:
1. UNITY_INSTANCING_CBUFFER_START/END renamed to UNITY_INSTANCING_BUFFER_START/END.
2. UNITY_INSTANCING_BUFFER_END now takes an arrayName in the parentheses.
3. UNITY_ACCESS_INSTANCED_PROP must now be provided with the arrayName in the first argument to indicate where this property comes from. Note that if graphics jobs are not enabled, the CPU-side processing of instance property values are optimized and off-loaded to a worker thread to further reduce CPU cost.
...
'Development' 카테고리의 다른 글
Apple 리젝사유 및 해결방법 (0) | 2018.08.02 |
---|---|
게임 출시전 구글 사전 보고서 오류 발생 (0) | 2018.07.31 |