pixi.js
Version:
<p align="center"> <a href="https://pixijs.com" target="_blank" rel="noopener noreferrer"> <img height="150" src="https://files.pixijs.download/branding/pixijs-logo-transparent-dark.svg?v=1" alt="PixiJS logo"> </a> </p> <br/> <p align="center">
1 lines • 2.85 kB
Source Map (JSON)
{"version":3,"file":"checkMaxIfStatementsInShader.mjs","sources":["../../../../../src/rendering/batcher/gl/utils/checkMaxIfStatementsInShader.ts"],"sourcesContent":["import type { GlRenderingContext } from '../../../renderers/gl/context/GlRenderingContext';\n\nconst fragTemplate = [\n 'precision mediump float;',\n 'void main(void){',\n 'float test = 0.1;',\n '%forloop%',\n 'gl_FragColor = vec4(0.0);',\n '}',\n].join('\\n');\n\nfunction generateIfTestSrc(maxIfs: number): string\n{\n let src = '';\n\n for (let i = 0; i < maxIfs; ++i)\n {\n if (i > 0)\n {\n src += '\\nelse ';\n }\n\n if (i < maxIfs - 1)\n {\n src += `if(test == ${i}.0){}`;\n }\n }\n\n return src;\n}\n\n/**\n * @param maxIfs\n * @param gl\n * @internal\n */\nexport function checkMaxIfStatementsInShader(maxIfs: number, gl: GlRenderingContext): number\n{\n if (maxIfs === 0)\n {\n throw new Error('Invalid value of `0` passed to `checkMaxIfStatementsInShader`');\n }\n\n const shader = gl.createShader(gl.FRAGMENT_SHADER);\n\n try\n {\n while (true)\n {\n const fragmentSrc = fragTemplate.replace(/%forloop%/gi, generateIfTestSrc(maxIfs));\n\n gl.shaderSource(shader, fragmentSrc);\n gl.compileShader(shader);\n\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS))\n {\n maxIfs = (maxIfs / 2) | 0;\n }\n else\n {\n // valid!\n break;\n }\n }\n }\n finally\n {\n gl.deleteShader(shader);\n }\n\n return maxIfs;\n}\n"],"names":[],"mappings":";AAEA,MAAM,YAAA,GAAe;AAAA,EACjB,0BAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,WAAA;AAAA,EACA,2BAAA;AAAA,EACA;AACJ,CAAA,CAAE,KAAK,IAAI,CAAA;AAEX,SAAS,kBAAkB,MAAA,EAC3B;AACI,EAAA,IAAI,GAAA,GAAM,EAAA;AAEV,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,EAAQ,EAAE,CAAA,EAC9B;AACI,IAAA,IAAI,IAAI,CAAA,EACR;AACI,MAAA,GAAA,IAAO,SAAA;AAAA,IACX;AAEA,IAAA,IAAI,CAAA,GAAI,SAAS,CAAA,EACjB;AACI,MAAA,GAAA,IAAO,cAAc,CAAC,CAAA,KAAA,CAAA;AAAA,IAC1B;AAAA,EACJ;AAEA,EAAA,OAAO,GAAA;AACX;AAOO,SAAS,4BAAA,CAA6B,QAAgB,EAAA,EAC7D;AACI,EAAA,IAAI,WAAW,CAAA,EACf;AACI,IAAA,MAAM,IAAI,MAAM,+DAA+D,CAAA;AAAA,EACnF;AAEA,EAAA,MAAM,MAAA,GAAS,EAAA,CAAG,YAAA,CAAa,EAAA,CAAG,eAAe,CAAA;AAEjD,EAAA,IACA;AACI,IAAA,OAAO,IAAA,EACP;AACI,MAAA,MAAM,cAAc,YAAA,CAAa,OAAA,CAAQ,aAAA,EAAe,iBAAA,CAAkB,MAAM,CAAC,CAAA;AAEjF,MAAA,EAAA,CAAG,YAAA,CAAa,QAAQ,WAAW,CAAA;AACnC,MAAA,EAAA,CAAG,cAAc,MAAM,CAAA;AAEvB,MAAA,IAAI,CAAC,EAAA,CAAG,kBAAA,CAAmB,MAAA,EAAQ,EAAA,CAAG,cAAc,CAAA,EACpD;AACI,QAAA,MAAA,GAAU,SAAS,CAAA,GAAK,CAAA;AAAA,MAC5B,CAAA,MAEA;AAEI,QAAA;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,CAAA,SACA;AAEI,IAAA,EAAA,CAAG,aAAa,MAAM,CAAA;AAAA,EAC1B;AAEA,EAAA,OAAO,MAAA;AACX;;;;"}