Adreno导出的shader都是GLSL文件,我们需要转换为Unity shader才能在Unity中使用。shaderlabe 和 Cg/HLSL 语法基本一致,所以大部分转换可参考https://msdn.microsoft.com/zh-cn/library/windows/apps/dn166865/html#types 。
下面讲讲不一样的地方
1.类型
highp vec4 —> float4
mediump vec4 ——> half4
lowp vec3 —–> fixed3
highp float —> float
mediump float —-> half
lowp float —-> fixed
2.矩阵
GLSL中的矩阵是纵向的,而untiy中的矩阵是横向的。
例:
GLSL Matrix
x x x
y y y
z z z
Unity Matrix
x y z
x y z
x y z
在GLSL中见到形如以下的构建矩阵代码:
highp mat3 tmpvar_8;
tmpvar_8[0].x = tmpvar_6.x