{"version":3,"file":"logProgramError.mjs","sources":["../../../../../../src/rendering/renderers/gl/shader/program/logProgramError.ts"],"sourcesContent":["/**\n * will log a shader error highlighting the lines with the error\n * also will add numbers along the side.\n * @param gl - the WebGLContext\n * @param shader - the shader to log errors for\n */\nfunction logPrettyShaderError(gl: WebGLRenderingContext, shader: WebGLShader): void\n{\n    const shaderSrc = gl.getShaderSource(shader)\n        .split('\\n')\n        .map((line, index) => `${index}: ${line}`);\n\n    const shaderLog = gl.getShaderInfoLog(shader);\n    const splitShader = shaderLog.split('\\n');\n\n    const dedupe: Record<number, boolean> = {};\n\n    const lineNumbers = splitShader.map((line) => parseFloat(line.replace(/^ERROR\\: 0\\:([\\d]+)\\:.*$/, '$1')))\n        .filter((n) =>\n        {\n            if (n && !dedupe[n])\n            {\n                dedupe[n] = true;\n\n                return true;\n            }\n\n            return false;\n        });\n\n    const logArgs = [''];\n\n    lineNumbers.forEach((number) =>\n    {\n        shaderSrc[number - 1] = `%c${shaderSrc[number - 1]}%c`;\n        logArgs.push('background: #FF0000; color:#FFFFFF; font-size: 10px', 'font-size: 10px');\n    });\n\n    const fragmentSourceToLog = shaderSrc\n        .join('\\n');\n\n    logArgs[0] = fragmentSourceToLog;\n\n    console.error(shaderLog);\n\n    // eslint-disable-next-line no-console\n    console.groupCollapsed('click to view full shader code');\n    console.warn(...logArgs);\n    // eslint-disable-next-line no-console\n    console.groupEnd();\n}\n\n/**\n *\n * logs out any program errors\n * @param gl - The current WebGL context\n * @param program - the WebGL program to display errors for\n * @param vertexShader  - the fragment WebGL shader program\n * @param fragmentShader - the vertex WebGL shader program\n * @private\n */\nexport function logProgramError(\n    gl: WebGLRenderingContext,\n    program: WebGLProgram,\n    vertexShader: WebGLShader,\n    fragmentShader: WebGLShader\n): void\n{\n    // if linking fails, then log and cleanup\n    if (!gl.getProgramParameter(program, gl.LINK_STATUS))\n    {\n        if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS))\n        {\n            logPrettyShaderError(gl, vertexShader);\n        }\n\n        if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS))\n        {\n            logPrettyShaderError(gl, fragmentShader);\n        }\n\n        console.error('PixiJS Error: Could not initialize shader.');\n\n        // if there is a program info log, log it\n        if (gl.getProgramInfoLog(program) !== '')\n        {\n            console.warn('PixiJS Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program));\n        }\n    }\n}\n"],"names":[],"mappings":";AAMA,SAAS,oBAAA,CAAqB,IAA2B,MAAA,EACzD;AACI,EAAA,MAAM,YAAY,EAAA,CAAG,eAAA,CAAgB,MAAM,CAAA,CACtC,MAAM,IAAI,CAAA,CACV,GAAA,CAAI,CAAC,MAAM,KAAA,KAAU,CAAA,EAAG,KAAK,CAAA,EAAA,EAAK,IAAI,CAAA,CAAE,CAAA;AAE7C,EAAA,MAAM,SAAA,GAAY,EAAA,CAAG,gBAAA,CAAiB,MAAM,CAAA;AAC5C,EAAA,MAAM,WAAA,GAAc,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA;AAExC,EAAA,MAAM,SAAkC,EAAC;AAEzC,EAAA,MAAM,WAAA,GAAc,WAAA,CAAY,GAAA,CAAI,CAAC,SAAS,UAAA,CAAW,IAAA,CAAK,OAAA,CAAQ,0BAAA,EAA4B,IAAI,CAAC,CAAC,CAAA,CACnG,MAAA,CAAO,CAAC,CAAA,KACT;AACI,IAAA,IAAI,CAAA,IAAK,CAAC,MAAA,CAAO,CAAC,CAAA,EAClB;AACI,MAAA,MAAA,CAAO,CAAC,CAAA,GAAI,IAAA;AAEZ,MAAA,OAAO,IAAA;AAAA,IACX;AAEA,IAAA,OAAO,KAAA;AAAA,EACX,CAAC,CAAA;AAEL,EAAA,MAAM,OAAA,GAAU,CAAC,EAAE,CAAA;AAEnB,EAAA,WAAA,CAAY,OAAA,CAAQ,CAAC,MAAA,KACrB;AACI,IAAA,SAAA,CAAU,SAAS,CAAC,CAAA,GAAI,KAAK,SAAA,CAAU,MAAA,GAAS,CAAC,CAAC,CAAA,EAAA,CAAA;AAClD,IAAA,OAAA,CAAQ,IAAA,CAAK,uDAAuD,iBAAiB,CAAA;AAAA,EACzF,CAAC,CAAA;AAED,EAAA,MAAM,mBAAA,GAAsB,SAAA,CACvB,IAAA,CAAK,IAAI,CAAA;AAEd,EAAA,OAAA,CAAQ,CAAC,CAAA,GAAI,mBAAA;AAEb,EAAA,OAAA,CAAQ,MAAM,SAAS,CAAA;AAGvB,EAAA,OAAA,CAAQ,eAAe,gCAAgC,CAAA;AACvD,EAAA,OAAA,CAAQ,IAAA,CAAK,GAAG,OAAO,CAAA;AAEvB,EAAA,OAAA,CAAQ,QAAA,EAAS;AACrB;AAWO,SAAS,eAAA,CACZ,EAAA,EACA,OAAA,EACA,YAAA,EACA,cAAA,EAEJ;AAEI,EAAA,IAAI,CAAC,EAAA,CAAG,mBAAA,CAAoB,OAAA,EAAS,EAAA,CAAG,WAAW,CAAA,EACnD;AACI,IAAA,IAAI,CAAC,EAAA,CAAG,kBAAA,CAAmB,YAAA,EAAc,EAAA,CAAG,cAAc,CAAA,EAC1D;AACI,MAAA,oBAAA,CAAqB,IAAI,YAAY,CAAA;AAAA,IACzC;AAEA,IAAA,IAAI,CAAC,EAAA,CAAG,kBAAA,CAAmB,cAAA,EAAgB,EAAA,CAAG,cAAc,CAAA,EAC5D;AACI,MAAA,oBAAA,CAAqB,IAAI,cAAc,CAAA;AAAA,IAC3C;AAEA,IAAA,OAAA,CAAQ,MAAM,4CAA4C,CAAA;AAG1D,IAAA,IAAI,EAAA,CAAG,iBAAA,CAAkB,OAAO,CAAA,KAAM,EAAA,EACtC;AACI,MAAA,OAAA,CAAQ,IAAA,CAAK,wCAAA,EAA0C,EAAA,CAAG,iBAAA,CAAkB,OAAO,CAAC,CAAA;AAAA,IACxF;AAAA,EACJ;AACJ;;;;"}