sdfsdfs
This commit is contained in:
45
node_modules/pixi.js/lib/rendering/batcher/gl/utils/checkMaxIfStatementsInShader.mjs
generated
vendored
Normal file
45
node_modules/pixi.js/lib/rendering/batcher/gl/utils/checkMaxIfStatementsInShader.mjs
generated
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
"use strict";
|
||||
const fragTemplate = [
|
||||
"precision mediump float;",
|
||||
"void main(void){",
|
||||
"float test = 0.1;",
|
||||
"%forloop%",
|
||||
"gl_FragColor = vec4(0.0);",
|
||||
"}"
|
||||
].join("\n");
|
||||
function generateIfTestSrc(maxIfs) {
|
||||
let src = "";
|
||||
for (let i = 0; i < maxIfs; ++i) {
|
||||
if (i > 0) {
|
||||
src += "\nelse ";
|
||||
}
|
||||
if (i < maxIfs - 1) {
|
||||
src += `if(test == ${i}.0){}`;
|
||||
}
|
||||
}
|
||||
return src;
|
||||
}
|
||||
function checkMaxIfStatementsInShader(maxIfs, gl) {
|
||||
if (maxIfs === 0) {
|
||||
throw new Error("Invalid value of `0` passed to `checkMaxIfStatementsInShader`");
|
||||
}
|
||||
const shader = gl.createShader(gl.FRAGMENT_SHADER);
|
||||
try {
|
||||
while (true) {
|
||||
const fragmentSrc = fragTemplate.replace(/%forloop%/gi, generateIfTestSrc(maxIfs));
|
||||
gl.shaderSource(shader, fragmentSrc);
|
||||
gl.compileShader(shader);
|
||||
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
|
||||
maxIfs = maxIfs / 2 | 0;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
gl.deleteShader(shader);
|
||||
}
|
||||
return maxIfs;
|
||||
}
|
||||
|
||||
export { checkMaxIfStatementsInShader };
|
||||
//# sourceMappingURL=checkMaxIfStatementsInShader.mjs.map
|
Reference in New Issue
Block a user