GLSL 向量加法与多个浮点数

GLSL vector addition vs multiple floats

假设我有这个:

float x2 = q.x + q.x;
float y2 = q.y + q.y;
float z2 = q.z + q.z;

对比这个:

vec3 q2 = q.xyz + q.xyz;

矢量运算更好/更快还是这在 GLSL 级别上不是问题?

是的,它更快,GPU 针对矢量化操作进行了优化,使用 AMDs ShaderAnalyzer or NVIDIAs nSight 等工具,您可以看到生成的程序集显示您的第一个代码片段产生 3 个标量操作,而第二个代码片段是单个矢量操作。