commit(vec4(read().r * 4., read().g * 4., read().b * 4., read().a * 4.))
就等同于
commit(read() * 4.);
是不是简洁很多?当然了,在 GLSL 中还有其他类型的向量,名为 vec2
和 vec3。如果你创建一个更大的向量,并提供一个小一点的作为参数,GLSL 将自动对向量的值进行对齐:
vec2 foo = vec2(1., 2.);
commit(vec4(foo.r, foo.g, 0., 0.));
// 等同于
commit(vec4(foo.rg, 0., 0.));
现在我们将要使用这些了。如果你访问上述提到的网站,你会看到一个关于使用 JS 和 JS+turbo.js 的性能比较。在那个比较中,我们在曼德尔布罗特分形函数中计算随机点。让我们从 JavaScript 代码开始来分解测试的过程: