setUniformsData

GPGPU.setUniformsData(pkg)

uniform変数のデータをセットします。

ソース

setUniformsData(pkg) {
    // すべてのuniform変数に対し
    for (let u of pkg.uniforms) {
        if (u.value instanceof Float32Array) {
            // 値が配列の場合

            switch (u.type) {
                case "mat4":
                    gl.uniformMatrix4fv(u.locUniform, false, u.value); chk();
                    break;
                case "mat3":
                    gl.uniformMatrix3fv(u.locUniform, false, u.value); chk();
                    break;
                case "vec4":
                    gl.uniform4fv(u.locUniform, u.value); chk();
                    break;
                case "vec3":
                    gl.uniform3fv(u.locUniform, u.value); chk();
                    break;
                case "vec2":
                    gl.uniform2fv(u.locUniform, u.value); chk();
                    break;
                case "float":
                    gl.uniform1fv(u.locUniform, u.value); chk();
                    break;
                default:
                    assert(false);
                    break;
            }
        }
        else {
            // 値が配列でない場合

            if (u.type == "int" || u.type == "bool") {

                gl.uniform1i(u.locUniform, u.value); chk();
            }
            else {

                gl.uniform1f(u.locUniform, u.value); chk();
            }
        }
    }
}