UNPKG

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 4.97 kB
{"version":3,"file":"generateProgram.mjs","sources":["../../../../../../src/rendering/renderers/gl/shader/program/generateProgram.ts"],"sourcesContent":["import { warn } from '../../../../../utils/logging/warn';\nimport { GlProgramData } from '../GlProgramData';\nimport { compileShader } from './compileShader';\nimport { defaultValue } from './defaultValue';\nimport { extractAttributesFromGlProgram } from './extractAttributesFromGlProgram';\nimport { getUboData } from './getUboData';\nimport { getUniformData } from './getUniformData';\nimport { logProgramError } from './logProgramError';\n\nimport type { GlRenderingContext } from '../../context/GlRenderingContext';\nimport type { GlProgram } from '../GlProgram';\nimport type { IGLUniformData } from '../GlProgramData';\n\n/**\n * generates a WebGL Program object from a high level Pixi Program.\n * @param gl - a rendering context on which to generate the program\n * @param program - the high level Pixi Program.\n * @private\n */\nexport function generateProgram(gl: GlRenderingContext, program: GlProgram): GlProgramData\n{\n const glVertShader = compileShader(gl, gl.VERTEX_SHADER, program.vertex);\n const glFragShader = compileShader(gl, gl.FRAGMENT_SHADER, program.fragment);\n\n const webGLProgram = gl.createProgram();\n\n gl.attachShader(webGLProgram, glVertShader);\n gl.attachShader(webGLProgram, glFragShader);\n\n const transformFeedbackVaryings = program.transformFeedbackVaryings;\n\n if (transformFeedbackVaryings)\n {\n if (typeof gl.transformFeedbackVaryings !== 'function')\n {\n // #if _DEBUG\n warn(`TransformFeedback is not supported but TransformFeedbackVaryings are given.`);\n // #endif\n }\n else\n {\n gl.transformFeedbackVaryings(\n webGLProgram,\n transformFeedbackVaryings.names,\n transformFeedbackVaryings.bufferMode === 'separate'\n ? gl.SEPARATE_ATTRIBS\n : gl.INTERLEAVED_ATTRIBS\n );\n }\n }\n\n gl.linkProgram(webGLProgram);\n\n if (!gl.getProgramParameter(webGLProgram, gl.LINK_STATUS))\n {\n logProgramError(gl, webGLProgram, glVertShader, glFragShader);\n }\n\n // GLSL 1.00: bind attributes sorted by name in ascending order\n // GLSL 3.00: don't change the attribute locations that where chosen by the compiler\n // or assigned by the layout specifier in the shader source code\n program._attributeData = extractAttributesFromGlProgram(\n webGLProgram,\n gl,\n !(/^[ \\t]*#[ \\t]*version[ \\t]+300[ \\t]+es[ \\t]*$/m).test(program.vertex)\n );\n\n program._uniformData = getUniformData(webGLProgram, gl);\n program._uniformBlockData = getUboData(webGLProgram, gl);\n\n gl.deleteShader(glVertShader);\n gl.deleteShader(glFragShader);\n\n const uniformData: {[key: string]: IGLUniformData} = {};\n\n for (const i in program._uniformData)\n {\n const data = program._uniformData[i];\n\n uniformData[i] = {\n location: gl.getUniformLocation(webGLProgram, i),\n value: defaultValue(data.type, data.size),\n };\n }\n\n const glProgram = new GlProgramData(webGLProgram, uniformData);\n\n return glProgram;\n}\n"],"names":[],"mappings":";;;;;;;;;;AAmBO,SAAS,eAAA,CAAgB,IAAwB,OAAA,EACxD;AACI,EAAA,MAAM,eAAe,aAAA,CAAc,EAAA,EAAI,EAAA,CAAG,aAAA,EAAe,QAAQ,MAAM,CAAA;AACvE,EAAA,MAAM,eAAe,aAAA,CAAc,EAAA,EAAI,EAAA,CAAG,eAAA,EAAiB,QAAQ,QAAQ,CAAA;AAE3E,EAAA,MAAM,YAAA,GAAe,GAAG,aAAA,EAAc;AAEtC,EAAA,EAAA,CAAG,YAAA,CAAa,cAAc,YAAY,CAAA;AAC1C,EAAA,EAAA,CAAG,YAAA,CAAa,cAAc,YAAY,CAAA;AAE1C,EAAA,MAAM,4BAA4B,OAAA,CAAQ,yBAAA;AAE1C,EAAA,IAAI,yBAAA,EACJ;AACI,IAAA,IAAI,OAAO,EAAA,CAAG,yBAAA,KAA8B,UAAA,EAC5C;AAEI,MAAA,IAAA,CAAK,CAAA,2EAAA,CAA6E,CAAA;AAAA,IAEtF,CAAA,MAEA;AACI,MAAA,EAAA,CAAG,yBAAA;AAAA,QACC,YAAA;AAAA,QACA,yBAAA,CAA0B,KAAA;AAAA,QAC1B,yBAAA,CAA0B,UAAA,KAAe,UAAA,GACnC,EAAA,CAAG,mBACH,EAAA,CAAG;AAAA,OACb;AAAA,IACJ;AAAA,EACJ;AAEA,EAAA,EAAA,CAAG,YAAY,YAAY,CAAA;AAE3B,EAAA,IAAI,CAAC,EAAA,CAAG,mBAAA,CAAoB,YAAA,EAAc,EAAA,CAAG,WAAW,CAAA,EACxD;AACI,IAAA,eAAA,CAAgB,EAAA,EAAI,YAAA,EAAc,YAAA,EAAc,YAAY,CAAA;AAAA,EAChE;AAKA,EAAA,OAAA,CAAQ,cAAA,GAAiB,8BAAA;AAAA,IACrB,YAAA;AAAA,IACA,EAAA;AAAA,IACA,CAAE,gDAAA,CAAkD,IAAA,CAAK,OAAA,CAAQ,MAAM;AAAA,GAC3E;AAEA,EAAA,OAAA,CAAQ,YAAA,GAAe,cAAA,CAAe,YAAA,EAAc,EAAE,CAAA;AACtD,EAAA,OAAA,CAAQ,iBAAA,GAAoB,UAAA,CAAW,YAAA,EAAc,EAAE,CAAA;AAEvD,EAAA,EAAA,CAAG,aAAa,YAAY,CAAA;AAC5B,EAAA,EAAA,CAAG,aAAa,YAAY,CAAA;AAE5B,EAAA,MAAM,cAA+C,EAAC;AAEtD,EAAA,KAAA,MAAW,CAAA,IAAK,QAAQ,YAAA,EACxB;AACI,IAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,YAAA,CAAa,CAAC,CAAA;AAEnC,IAAA,WAAA,CAAY,CAAC,CAAA,GAAI;AAAA,MACb,QAAA,EAAU,EAAA,CAAG,kBAAA,CAAmB,YAAA,EAAc,CAAC,CAAA;AAAA,MAC/C,KAAA,EAAO,YAAA,CAAa,IAAA,CAAK,IAAA,EAAM,KAAK,IAAI;AAAA,KAC5C;AAAA,EACJ;AAEA,EAAA,MAAM,SAAA,GAAY,IAAI,aAAA,CAAc,YAAA,EAAc,WAAW,CAAA;AAE7D,EAAA,OAAO,SAAA;AACX;;;;"}