UNPKG

4.67 kBSource Map (JSON)View Raw
1{"version":3,"file":"logProgramError.js","sources":["../../../src/shader/utils/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 */\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,SAAA,oBAAA,CAA8B,IAA2B,MACzD,EAAA;AACI,EAAA,MAAM,SAAY,GAAA,EAAA,CAAG,eAAgB,CAAA,MAAM,EACtC,KAAM,CAAA,IAAI,CACV,CAAA,GAAA,CAAI,CAAC,IAAA,EAAM,KAAU,KAAA,CAAA,EAAG,UAAU,IAAM,CAAA,CAAA,CAAA,CAAA;AAE7C,EAAM,MAAA,SAAA,GAAY,EAAG,CAAA,gBAAA,CAAiB,MAAM,CAAA,CAAA;AAC5C,EAAM,MAAA,WAAA,GAAc,SAAU,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAExC,EAAA,MAAM,SAAkC,EAAC,CAAA;AAEzC,EAAA,MAAM,WAAc,GAAA,WAAA,CAAY,GAAI,CAAA,CAAC,SAAS,UAAW,CAAA,IAAA,CAAK,OAAQ,CAAA,0BAAA,EAA4B,IAAI,CAAC,CAAC,CACnG,CAAA,MAAA,CAAO,CAAC,CACT,KAAA;AACI,IAAI,IAAA,CAAA,IAAK,CAAC,MAAA,CAAO,CACjB,CAAA,EAAA;AACI,MAAA,MAAA,CAAO,CAAK,CAAA,GAAA,IAAA,CAAA;AAEZ,MAAO,OAAA,IAAA,CAAA;AAAA,KACX;AAEA,IAAO,OAAA,KAAA,CAAA;AAAA,GACV,CAAA,CAAA;AAEL,EAAM,MAAA,OAAA,GAAU,CAAC,EAAE,CAAA,CAAA;AAEnB,EAAY,WAAA,CAAA,OAAA,CAAQ,CAAC,MACrB,KAAA;AACI,IAAA,SAAA,CAAU,MAAS,GAAA,CAAA,CAAA,GAAK,CAAK,EAAA,EAAA,SAAA,CAAU,MAAS,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA;AAChD,IAAQ,OAAA,CAAA,IAAA,CAAK,uDAAuD,iBAAiB,CAAA,CAAA;AAAA,GACxF,CAAA,CAAA;AAED,EAAM,MAAA,mBAAA,GAAsB,SACvB,CAAA,IAAA,CAAK,IAAI,CAAA,CAAA;AAEd,EAAA,OAAA,CAAQ,CAAK,CAAA,GAAA,mBAAA,CAAA;AAEb,EAAA,OAAA,CAAQ,MAAM,SAAS,CAAA,CAAA;AAGvB,EAAA,OAAA,CAAQ,eAAe,gCAAgC,CAAA,CAAA;AACvD,EAAQ,OAAA,CAAA,IAAA,CAAK,GAAG,OAAO,CAAA,CAAA;AAEvB,EAAA,OAAA,CAAQ,QAAS,EAAA,CAAA;AACrB,CAAA;AAWI,SAAA,eAAA,CAAA,EAAA,EACA,OACA,EAAA,YAAA,EACA,cAEJ,EAAA;AAEI,EAAA,IAAI,CAAC,EAAG,CAAA,mBAAA,CAAoB,OAAS,EAAA,EAAA,CAAG,WAAW,CACnD,EAAA;AACI,IAAA,IAAI,CAAC,EAAG,CAAA,kBAAA,CAAmB,YAAc,EAAA,EAAA,CAAG,cAAc,CAC1D,EAAA;AACI,MAAA,oBAAA,CAAqB,IAAI,YAAY,CAAA,CAAA;AAAA,KACzC;AAEA,IAAA,IAAI,CAAC,EAAG,CAAA,kBAAA,CAAmB,cAAgB,EAAA,EAAA,CAAG,cAAc,CAC5D,EAAA;AACI,MAAA,oBAAA,CAAqB,IAAI,cAAc,CAAA,CAAA;AAAA,KAC3C;AAEA,IAAA,OAAA,CAAQ,MAAM,4CAA4C,CAAA,CAAA;AAG1D,IAAA,IAAI,EAAG,CAAA,iBAAA,CAAkB,OAAO,CAAA,KAAM,EACtC,EAAA;AACI,MAAA,OAAA,CAAQ,IAAK,CAAA,wCAAA,EAA0C,EAAG,CAAA,iBAAA,CAAkB,OAAO,CAAC,CAAA,CAAA;AAAA,KACxF;AAAA,GACJ;AACJ;;;;"}
\No newline at end of file