将 GLSL 矩阵移植到 GLSL ES

Port GLSL matrix to GLSL ES

我在标准 OpenGL 着色器中有以下代码:

vec3 I4, C1, A0, G5;
mat3 yuv_weighted;

vec4 i4 = yuv_weighted[0] * mat4x3(I4, C1, A0, G5);

如何将其转换为不支持矩形矩阵的 OpenGL ES 2.0?

您可以尝试这样的操作:

vec3 I4, C1, A0, G5;
mat3 yuv_weighted;

vec4 i4 = vec4(dot(yuv_weighted[0], I4), dot(yuv_weighted[0], C1),
               dot(yuv_weighted[0], A0), dot(yuv_weighted[0], G5));

甚至

vec4 i4 = vec4(yuv_weighted[0]*mat3(I4, C1, A0), dot(yuv_weighted[0], G5));

虽然第一个版本可能更有效(不确定)。