Varying Semantic 중 Color가 iOS와 PC, Android가 다르게 동작한다.

모자란 TEXCOORD# 대신에 COLOR0과 COLOR1을 사용하여 조금이라도 절약을 하는데...


COLOR는 원래 fixed function 시절 부터 LDR color를 전달하기 위한 용도로 사용되었다.

따라서 이 COLOR semantic으로 전달되는 varying 값은 0~1 의 범위값을 가지며, clamp 된다.


하지만 디바이스 사양이 좋아지면서, iOS에서는 이 제한을 굳이 안 지키고, 범위를 초과하는 값다 잘 전달해 준다.


하지만 PC와 Android기기는 여전히 이 제한을 가지고 있다.


따라서 이 것을 사용하는 shader 코딩을 하고, 범위를 초과하는 값을 전달하는 경우에는 각 platform마다 다른 결과가 나온다.

Posted by 바람인생
,

surface shader가 아니라, 일반 vertex / fragment shader를 작성하게 되면, 많은 부분을 신경써야 한다.

그중에 최근 경험한 것이 shadow map 적용가능하게 하려면, shader에 한가지 코드를 추가해야 한다.

Fallback "VertexLit" 라는 문장이다.

Fallback은 shader 코드의 맨 마지막 block 에 추가한다.

이 문장이 없으면, Shader Inspector에 Cast Shadows가 "No"로 나온다. 이름은 Cast이지만, 이 값이 "No"로 나오면, Receive Shadows도 동작하지 않게 된다.



이상한 Unity3D shader의 세계~~~

Posted by 바람인생
,