@pixi/core
Version:
Core PixiJS
167 lines (148 loc) • 5.81 kB
JavaScript
const uniformParsers = [
{
test: (data) => data.type === "float" && data.size === 1 && !data.isArray,
code: (name) => `
if(uv["${name}"] !== ud["${name}"].value)
{
ud["${name}"].value = uv["${name}"]
gl.uniform1f(ud["${name}"].location, uv["${name}"])
}
`
},
{
test: (data, uniform) => (data.type === "sampler2D" || data.type === "samplerCube" || data.type === "sampler2DArray") && data.size === 1 && !data.isArray && (uniform == null || uniform.castToBaseTexture !== void 0),
code: (name) => `t = syncData.textureCount++;
renderer.texture.bind(uv["${name}"], t);
if(ud["${name}"].value !== t)
{
ud["${name}"].value = t;
gl.uniform1i(ud["${name}"].location, t);
; // eslint-disable-line max-len
}`
},
{
test: (data, uniform) => data.type === "mat3" && data.size === 1 && !data.isArray && uniform.a !== void 0,
code: (name) => `
gl.uniformMatrix3fv(ud["${name}"].location, false, uv["${name}"].toArray(true));
`,
codeUbo: (name) => `
var ${name}_matrix = uv.${name}.toArray(true);
data[offset] = ${name}_matrix[0];
data[offset+1] = ${name}_matrix[1];
data[offset+2] = ${name}_matrix[2];
data[offset + 4] = ${name}_matrix[3];
data[offset + 5] = ${name}_matrix[4];
data[offset + 6] = ${name}_matrix[5];
data[offset + 8] = ${name}_matrix[6];
data[offset + 9] = ${name}_matrix[7];
data[offset + 10] = ${name}_matrix[8];
`
},
{
test: (data, uniform) => data.type === "vec2" && data.size === 1 && !data.isArray && uniform.x !== void 0,
code: (name) => `
cv = ud["${name}"].value;
v = uv["${name}"];
if(cv[0] !== v.x || cv[1] !== v.y)
{
cv[0] = v.x;
cv[1] = v.y;
gl.uniform2f(ud["${name}"].location, v.x, v.y);
}`,
codeUbo: (name) => `
v = uv.${name};
data[offset] = v.x;
data[offset+1] = v.y;
`
},
{
test: (data) => data.type === "vec2" && data.size === 1 && !data.isArray,
code: (name) => `
cv = ud["${name}"].value;
v = uv["${name}"];
if(cv[0] !== v[0] || cv[1] !== v[1])
{
cv[0] = v[0];
cv[1] = v[1];
gl.uniform2f(ud["${name}"].location, v[0], v[1]);
}
`
},
{
test: (data, uniform) => data.type === "vec4" && data.size === 1 && !data.isArray && uniform.width !== void 0,
code: (name) => `
cv = ud["${name}"].value;
v = uv["${name}"];
if(cv[0] !== v.x || cv[1] !== v.y || cv[2] !== v.width || cv[3] !== v.height)
{
cv[0] = v.x;
cv[1] = v.y;
cv[2] = v.width;
cv[3] = v.height;
gl.uniform4f(ud["${name}"].location, v.x, v.y, v.width, v.height)
}`,
codeUbo: (name) => `
v = uv.${name};
data[offset] = v.x;
data[offset+1] = v.y;
data[offset+2] = v.width;
data[offset+3] = v.height;
`
},
{
test: (data, uniform) => data.type === "vec4" && data.size === 1 && !data.isArray && uniform.red !== void 0,
code: (name) => `
cv = ud["${name}"].value;
v = uv["${name}"];
if(cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue || cv[3] !== v.alpha)
{
cv[0] = v.red;
cv[1] = v.green;
cv[2] = v.blue;
cv[3] = v.alpha;
gl.uniform4f(ud["${name}"].location, v.red, v.green, v.blue, v.alpha)
}`,
codeUbo: (name) => `
v = uv.${name};
data[offset] = v.red;
data[offset+1] = v.green;
data[offset+2] = v.blue;
data[offset+3] = v.alpha;
`
},
{
test: (data, uniform) => data.type === "vec3" && data.size === 1 && !data.isArray && uniform.red !== void 0,
code: (name) => `
cv = ud["${name}"].value;
v = uv["${name}"];
if(cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue || cv[3] !== v.a)
{
cv[0] = v.red;
cv[1] = v.green;
cv[2] = v.blue;
gl.uniform3f(ud["${name}"].location, v.red, v.green, v.blue)
}`,
codeUbo: (name) => `
v = uv.${name};
data[offset] = v.red;
data[offset+1] = v.green;
data[offset+2] = v.blue;
`
},
{
test: (data) => data.type === "vec4" && data.size === 1 && !data.isArray,
code: (name) => `
cv = ud["${name}"].value;
v = uv["${name}"];
if(cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])
{
cv[0] = v[0];
cv[1] = v[1];
cv[2] = v[2];
cv[3] = v[3];
gl.uniform4f(ud["${name}"].location, v[0], v[1], v[2], v[3])
}`
}
];
export { uniformParsers };
//# sourceMappingURL=uniformParsers.mjs.map