基本类型转换
highp vec4 -> float4
mediump vec4 -> half4
lowp vec4 -> fixed4
highp vec3 -> float3
mediump vec3 -> half3
lowp vec3 -> fixed3
highp vec2 -> float2
mediump vec2 -> half2
lowp vec2 -> fixed2
highp float -> float
mediump float -> half
lowp float -> fixed
highp int -> int
vec4 -> float4
vec3 -> float2
vec2 -> float2
bvec4 -> bool4
bvec3 -> bool3
bvec2 -> bool2
ivec4 -> int4
ivec3 -> int3
ivec2 -> int2
mat4 -> float4x4
mat3 -> float3x3
mat2 -> float2x2
矩阵
- 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;
tmpvar_8[0].y = tmpvar_7.x;
tmpvar_8[0].z = tmpvar_1.x;
tmpvar_8[1].x = tmpvar_6.y;
tmpvar_8[1].y = tmpvar_7.y;
tmpvar_8[1].z = tmpvar_1.y;
tmpvar_8[2].x = tmpvar_6.z;
tmpvar_8[2].y = tmpvar_7.z;
tmpvar_8[2].z = tmpvar_1.z;
转换到 Unity 中就应该改成
float3x3 tmpvar_8;
tmpvar_8[0] = tmpvar_6.xyz;
tmpvar_8[1] = tmpvar_6.xyz;
tmpvar_8[2] = tmpvar_6.xyz;