@luma.gl/shadertools 8.5.9 → 8.5.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,8 +2,6 @@
2
2
 
3
3
  var moduleExports = require('./index');
4
4
 
5
- var _global = typeof window === 'undefined' ? global : window;
6
-
7
- _global.luma = _global.luma || {};
8
- module.exports = Object.assign(_global.luma, moduleExports);
5
+ globalThis.luma = globalThis.luma || {};
6
+ module.exports = Object.assign(globalThis.luma, moduleExports);
9
7
  //# sourceMappingURL=bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/bundle.js"],"names":["moduleExports","require","_global","window","global","luma","module","exports","Object","assign"],"mappings":";;AAAA,IAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AAEA,IAAMC,OAAO,GAAG,OAAOC,MAAP,KAAkB,WAAlB,GAAgCC,MAAhC,GAAyCD,MAAzD;;AAEAD,OAAO,CAACG,IAAR,GAAeH,OAAO,CAACG,IAAR,IAAgB,EAA/B;AAEAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcP,OAAO,CAACG,IAAtB,EAA4BL,aAA5B,CAAjB","sourcesContent":["const moduleExports = require('./index');\n\nconst _global = typeof window === 'undefined' ? global : window;\n// @ts-ignore\n_global.luma = _global.luma || {};\n// @ts-ignore\nmodule.exports = Object.assign(_global.luma, moduleExports);\n"],"file":"bundle.js"}
1
+ {"version":3,"sources":["../../src/bundle.js"],"names":["moduleExports","require","globalThis","luma","module","exports","Object","assign"],"mappings":";;AAAA,IAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AAGAC,UAAU,CAACC,IAAX,GAAkBD,UAAU,CAACC,IAAX,IAAmB,EAArC;AAEAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcL,UAAU,CAACC,IAAzB,EAA+BH,aAA/B,CAAjB","sourcesContent":["const moduleExports = require('./index');\n\n// @ts-ignore\nglobalThis.luma = globalThis.luma || {};\n// @ts-ignore\nmodule.exports = Object.assign(globalThis.luma, moduleExports);\n"],"file":"bundle.js"}
@@ -22,7 +22,7 @@ function getPlatformShaderDefines(gl) {
22
22
  return "#define AMD_GPU\n";
23
23
 
24
24
  default:
25
- return "#define DEFAULT_GPU\n// Prevent driver from optimizing away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n";
25
+ return "#define DEFAULT_GPU\n// Prevent driver from optimizing away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Intel's built-in 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n";
26
26
  }
27
27
  }
28
28
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/platform-defines.js"],"names":["getPlatformShaderDefines","gl","debugInfo","gpuVendor","toLowerCase","getVersionDefines","glslVersion","isFragment","versionDefines","FEATURES","GLSL_FRAG_DEPTH","GLSL_DERIVATIVES","GLSL_FRAG_DATA","behavior","GLSL_TEXTURE_LOD"],"mappings":";;;;;;;;AAAA;;AAEO,SAASA,wBAAT,CAAkCC,EAAlC,EAAsC;AAC3C,MAAMC,SAAS,GAAG,+BAAeD,EAAf,CAAlB;;AAEA,UAAQC,SAAS,CAACC,SAAV,CAAoBC,WAApB,EAAR;AACE,SAAK,QAAL;AACE;;AAMF,SAAK,OAAL;AACE;;AAUF,SAAK,KAAL;AAEE;;AAIF;AAIE;AA7BJ;AAmCD;;AAEM,SAASC,iBAAT,CAA2BJ,EAA3B,EAA+BK,WAA/B,EAA4CC,UAA5C,EAAwD;AAE7D,MAAIC,cAAc,gUAAlB;;AAiBA,MAAI,4BAAYP,EAAZ,EAAgBQ,oBAASC,eAAzB,CAAJ,EAA+C;AAC7CF,IAAAA,cAAc,2NAAd;AAUD;;AACD,MACE,4BAAYP,EAAZ,EAAgBQ,oBAASE,gBAAzB,KACA,wCAAwBV,EAAxB,EAA4BQ,oBAASE,gBAArC,CAFF,EAGE;AACAH,IAAAA,cAAc,qNAAd;AASD;;AACD,MACE,4BAAYP,EAAZ,EAAgBQ,oBAASG,cAAzB,KACA,wCAAwBX,EAAxB,EAA4BQ,oBAASG,cAArC,EAAqD;AAACC,IAAAA,QAAQ,EAAE;AAAX,GAArD,CAFF,EAGE;AACAL,IAAAA,cAAc,8LAAd;AASD;;AACD,MAAI,4BAAYP,EAAZ,EAAgBQ,oBAASK,gBAAzB,CAAJ,EAAgD;AAC9CN,IAAAA,cAAc,8MAAd;AAUD;;AACD,SAAOA,cAAP;AACD","sourcesContent":["import {getContextInfo, hasFeatures, canCompileGLGSExtension, FEATURES} from '../utils/webgl-info';\n\nexport function getPlatformShaderDefines(gl) {\n const debugInfo = getContextInfo(gl);\n\n switch (debugInfo.gpuVendor.toLowerCase()) {\n case 'nvidia':\n return `\\\n#define NVIDIA_GPU\n// Nvidia optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n`;\n\n case 'intel':\n return `\\\n#define INTEL_GPU\n// Intel optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Intel's built-in 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n`;\n\n case 'amd':\n // AMD Does not eliminate fp64 code\n return `\\\n#define AMD_GPU\n`;\n\n default:\n // We don't know what GPU it is, could be that the GPU driver or\n // browser is not implementing UNMASKED_RENDERER constant and not\n // reporting a correct name\n return `\\\n#define DEFAULT_GPU\n// Prevent driver from optimizing away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n`;\n }\n}\n\nexport function getVersionDefines(gl, glslVersion, isFragment) {\n // Add shadertools defines to let shaders portably v1/v3 check for features\n let versionDefines = `\\\n#if (__VERSION__ > 120)\n\n# define FEATURE_GLSL_DERIVATIVES\n# define FEATURE_GLSL_DRAW_BUFFERS\n# define FEATURE_GLSL_FRAG_DEPTH\n# define FEATURE_GLSL_TEXTURE_LOD\n\n// DEPRECATED FLAGS, remove in v9\n# define FRAG_DEPTH\n# define DERIVATIVES\n# define DRAW_BUFFERS\n# define TEXTURE_LOD\n\n#endif // __VERSION\n`;\n\n if (hasFeatures(gl, FEATURES.GLSL_FRAG_DEPTH)) {\n versionDefines += `\\\n\n// FRAG_DEPTH => gl_FragDepth is available\n#ifdef GL_EXT_frag_depth\n#extension GL_EXT_frag_depth : enable\n# define FEATURE_GLSL_FRAG_DEPTH\n# define FRAG_DEPTH\n# define gl_FragDepth gl_FragDepthEXT\n#endif\n`;\n }\n if (\n hasFeatures(gl, FEATURES.GLSL_DERIVATIVES) &&\n canCompileGLGSExtension(gl, FEATURES.GLSL_DERIVATIVES)\n ) {\n versionDefines += `\\\n\n// DERIVATIVES => dxdF, dxdY and fwidth are available\n#ifdef GL_OES_standard_derivatives\n#extension GL_OES_standard_derivatives : enable\n# define FEATURE_GLSL_DERIVATIVES\n# define DERIVATIVES\n#endif\n`;\n }\n if (\n hasFeatures(gl, FEATURES.GLSL_FRAG_DATA) &&\n canCompileGLGSExtension(gl, FEATURES.GLSL_FRAG_DATA, {behavior: 'require'})\n ) {\n versionDefines += `\\\n\n// DRAW_BUFFERS => gl_FragData[] is available\n#ifdef GL_EXT_draw_buffers\n#extension GL_EXT_draw_buffers : require\n#define FEATURE_GLSL_DRAW_BUFFERS\n#define DRAW_BUFFERS\n#endif\n`;\n }\n if (hasFeatures(gl, FEATURES.GLSL_TEXTURE_LOD)) {\n versionDefines += `\\\n// TEXTURE_LOD => texture2DLod etc are available\n#ifdef GL_EXT_shader_texture_lod\n#extension GL_EXT_shader_texture_lod : enable\n\n# define FEATURE_GLSL_TEXTURE_LOD\n# define TEXTURE_LOD\n\n#endif\n`;\n }\n return versionDefines;\n}\n"],"file":"platform-defines.js"}
1
+ {"version":3,"sources":["../../../src/lib/platform-defines.js"],"names":["getPlatformShaderDefines","gl","debugInfo","gpuVendor","toLowerCase","getVersionDefines","glslVersion","isFragment","versionDefines","FEATURES","GLSL_FRAG_DEPTH","GLSL_DERIVATIVES","GLSL_FRAG_DATA","behavior","GLSL_TEXTURE_LOD"],"mappings":";;;;;;;;AAAA;;AAEO,SAASA,wBAAT,CAAkCC,EAAlC,EAAsC;AAC3C,MAAMC,SAAS,GAAG,+BAAeD,EAAf,CAAlB;;AAEA,UAAQC,SAAS,CAACC,SAAV,CAAoBC,WAApB,EAAR;AACE,SAAK,QAAL;AACE;;AAMF,SAAK,OAAL;AACE;;AAUF,SAAK,KAAL;AAEE;;AAIF;AAIE;AA7BJ;AAuCD;;AAEM,SAASC,iBAAT,CAA2BJ,EAA3B,EAA+BK,WAA/B,EAA4CC,UAA5C,EAAwD;AAE7D,MAAIC,cAAc,gUAAlB;;AAiBA,MAAI,4BAAYP,EAAZ,EAAgBQ,oBAASC,eAAzB,CAAJ,EAA+C;AAC7CF,IAAAA,cAAc,2NAAd;AAUD;;AACD,MACE,4BAAYP,EAAZ,EAAgBQ,oBAASE,gBAAzB,KACA,wCAAwBV,EAAxB,EAA4BQ,oBAASE,gBAArC,CAFF,EAGE;AACAH,IAAAA,cAAc,qNAAd;AASD;;AACD,MACE,4BAAYP,EAAZ,EAAgBQ,oBAASG,cAAzB,KACA,wCAAwBX,EAAxB,EAA4BQ,oBAASG,cAArC,EAAqD;AAACC,IAAAA,QAAQ,EAAE;AAAX,GAArD,CAFF,EAGE;AACAL,IAAAA,cAAc,8LAAd;AASD;;AACD,MAAI,4BAAYP,EAAZ,EAAgBQ,oBAASK,gBAAzB,CAAJ,EAAgD;AAC9CN,IAAAA,cAAc,8MAAd;AAUD;;AACD,SAAOA,cAAP;AACD","sourcesContent":["import {getContextInfo, hasFeatures, canCompileGLGSExtension, FEATURES} from '../utils/webgl-info';\n\nexport function getPlatformShaderDefines(gl) {\n const debugInfo = getContextInfo(gl);\n\n switch (debugInfo.gpuVendor.toLowerCase()) {\n case 'nvidia':\n return `\\\n#define NVIDIA_GPU\n// Nvidia optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n`;\n\n case 'intel':\n return `\\\n#define INTEL_GPU\n// Intel optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Intel's built-in 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n`;\n\n case 'amd':\n // AMD Does not eliminate fp64 code\n return `\\\n#define AMD_GPU\n`;\n\n default:\n // We don't know what GPU it is, could be that the GPU driver or\n // browser is not implementing UNMASKED_RENDERER constant and not\n // reporting a correct name\n return `\\\n#define DEFAULT_GPU\n// Prevent driver from optimizing away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Intel's built-in 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n`;\n }\n}\n\nexport function getVersionDefines(gl, glslVersion, isFragment) {\n // Add shadertools defines to let shaders portably v1/v3 check for features\n let versionDefines = `\\\n#if (__VERSION__ > 120)\n\n# define FEATURE_GLSL_DERIVATIVES\n# define FEATURE_GLSL_DRAW_BUFFERS\n# define FEATURE_GLSL_FRAG_DEPTH\n# define FEATURE_GLSL_TEXTURE_LOD\n\n// DEPRECATED FLAGS, remove in v9\n# define FRAG_DEPTH\n# define DERIVATIVES\n# define DRAW_BUFFERS\n# define TEXTURE_LOD\n\n#endif // __VERSION\n`;\n\n if (hasFeatures(gl, FEATURES.GLSL_FRAG_DEPTH)) {\n versionDefines += `\\\n\n// FRAG_DEPTH => gl_FragDepth is available\n#ifdef GL_EXT_frag_depth\n#extension GL_EXT_frag_depth : enable\n# define FEATURE_GLSL_FRAG_DEPTH\n# define FRAG_DEPTH\n# define gl_FragDepth gl_FragDepthEXT\n#endif\n`;\n }\n if (\n hasFeatures(gl, FEATURES.GLSL_DERIVATIVES) &&\n canCompileGLGSExtension(gl, FEATURES.GLSL_DERIVATIVES)\n ) {\n versionDefines += `\\\n\n// DERIVATIVES => dxdF, dxdY and fwidth are available\n#ifdef GL_OES_standard_derivatives\n#extension GL_OES_standard_derivatives : enable\n# define FEATURE_GLSL_DERIVATIVES\n# define DERIVATIVES\n#endif\n`;\n }\n if (\n hasFeatures(gl, FEATURES.GLSL_FRAG_DATA) &&\n canCompileGLGSExtension(gl, FEATURES.GLSL_FRAG_DATA, {behavior: 'require'})\n ) {\n versionDefines += `\\\n\n// DRAW_BUFFERS => gl_FragData[] is available\n#ifdef GL_EXT_draw_buffers\n#extension GL_EXT_draw_buffers : require\n#define FEATURE_GLSL_DRAW_BUFFERS\n#define DRAW_BUFFERS\n#endif\n`;\n }\n if (hasFeatures(gl, FEATURES.GLSL_TEXTURE_LOD)) {\n versionDefines += `\\\n// TEXTURE_LOD => texture2DLod etc are available\n#ifdef GL_EXT_shader_texture_lod\n#extension GL_EXT_shader_texture_lod : enable\n\n# define FEATURE_GLSL_TEXTURE_LOD\n# define TEXTURE_LOD\n\n#endif\n`;\n }\n return versionDefines;\n}\n"],"file":"platform-defines.js"}
@@ -62,15 +62,11 @@ function identifyGPUVendor(vendor, renderer) {
62
62
  return 'INTEL';
63
63
  }
64
64
 
65
- if (vendor.match(/Apple/i) || renderer.match(/Apple/i)) {
66
- return 'APPLE';
67
- }
68
-
69
65
  if (vendor.match(/AMD/i) || renderer.match(/AMD/i) || vendor.match(/ATI/i) || renderer.match(/ATI/i)) {
70
66
  return 'AMD';
71
67
  }
72
68
 
73
- return 'UNKNOWN';
69
+ return 'UNKNOWN GPU';
74
70
  }
75
71
 
76
72
  var compiledGlslExtensions = {};
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/webgl-info.js"],"names":["GL_VENDOR","GL_RENDERER","GL_VERSION","GL_SHADING_LANGUAGE_VERSION","WEBGL_FEATURES","GLSL_FRAG_DATA","GLSL_FRAG_DEPTH","GLSL_DERIVATIVES","GLSL_TEXTURE_LOD","FEATURES","Object","keys","forEach","key","isWebGL2","gl","WebGL2RenderingContext","Boolean","_version","getContextInfo","info","getExtension","vendor","getParameter","UNMASKED_VENDOR_WEBGL","renderer","UNMASKED_RENDERER_WEBGL","gpuVendor","identifyGPUVendor","gpuInfo","version","shadingLanguageVersion","match","compiledGlslExtensions","canCompileGLGSExtension","cap","opts","feature","extensionName","behavior","source","shader","createShader","shaderSource","compileShader","canCompile","getShaderParameter","deleteShader","getFeature","value","hasFeatures","features","Array","isArray","every"],"mappings":"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","sourcesContent":["// Feature detection for WebGL\n//\n// Provides a function that enables simple checking of which WebGL features are\n// available in an WebGL1 or WebGL2 environment.\n\n/* eslint-disable no-inline-comments, max-len */\nimport isOldIE from './is-old-ie';\nimport assert from './assert';\n\nconst GL_VENDOR = 0x1f00;\nconst GL_RENDERER = 0x1f01;\nconst GL_VERSION = 0x1f02;\nconst GL_SHADING_LANGUAGE_VERSION = 0x8b8c;\n\n// Defines luma.gl \"feature\" names and semantics\nconst WEBGL_FEATURES = {\n // GLSL extensions\n GLSL_FRAG_DATA: ['WEBGL_draw_buffers', true], // TODO - name makes no sense in GLSL 3.00\n GLSL_FRAG_DEPTH: ['EXT_frag_depth', true],\n GLSL_DERIVATIVES: ['OES_standard_derivatives', true],\n GLSL_TEXTURE_LOD: ['EXT_shader_texture_lod', true]\n};\n\n// Create a key-mirrored FEATURES array\nconst FEATURES = {};\nObject.keys(WEBGL_FEATURES).forEach(key => {\n FEATURES[key] = key;\n});\n\nexport {FEATURES};\n\nfunction isWebGL2(gl) {\n if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {\n return true;\n }\n return Boolean(gl && gl._version === 2);\n}\n\nexport function getContextInfo(gl) {\n const info = gl.getExtension('WEBGL_debug_renderer_info');\n const vendor = gl.getParameter((info && info.UNMASKED_VENDOR_WEBGL) || GL_VENDOR);\n const renderer = gl.getParameter((info && info.UNMASKED_RENDERER_WEBGL) || GL_RENDERER);\n const gpuVendor = identifyGPUVendor(vendor, renderer);\n const gpuInfo = {\n gpuVendor,\n vendor,\n renderer,\n version: gl.getParameter(GL_VERSION),\n shadingLanguageVersion: gl.getParameter(GL_SHADING_LANGUAGE_VERSION)\n };\n return gpuInfo;\n}\n\nfunction identifyGPUVendor(vendor, renderer) {\n if (vendor.match(/NVIDIA/i) || renderer.match(/NVIDIA/i)) {\n return 'NVIDIA';\n }\n if (vendor.match(/INTEL/i) || renderer.match(/INTEL/i)) {\n return 'INTEL';\n }\n if (vendor.match(/Apple/i) || renderer.match(/Apple/i)) {\n return 'APPLE';\n }\n if (\n vendor.match(/AMD/i) ||\n renderer.match(/AMD/i) ||\n vendor.match(/ATI/i) ||\n renderer.match(/ATI/i)\n ) {\n return 'AMD';\n }\n return 'UNKNOWN';\n}\n\nconst compiledGlslExtensions = {};\n\n// Enables feature detection in IE11 due to a bug where gl.getExtension may return true\n// but fail to compile when the extension is enabled in the shader. Specifically,\n// the OES_standard_derivatives and WEBGL_draw_buffers extensions fails to compile in IE11 even though its included\n// in the list of supported extensions.\n// opts allows user agent to be overridden for testing\n/*\n* Inputs :\n* gl : WebGL context\n* cap : Key of WEBGL_FEATURES object identifying the extension\n* opts :\n* behavior : behavior of extension to be tested, by defualt `enable` is used\n* Returns : true, if shader is compiled successfully, false otherwise\n*/\nexport function canCompileGLGSExtension(gl, cap, opts = {}) {\n const feature = WEBGL_FEATURES[cap];\n assert(feature, cap);\n\n if (!isOldIE(opts)) {\n return true;\n }\n\n if (cap in compiledGlslExtensions) {\n return compiledGlslExtensions[cap];\n }\n\n const extensionName = feature[0];\n const behavior = opts.behavior || 'enable';\n const source = `#extension GL_${extensionName} : ${behavior}\\nvoid main(void) {}`;\n\n const shader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n const canCompile = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n gl.deleteShader(shader);\n compiledGlslExtensions[cap] = canCompile;\n return canCompile;\n}\n\n// TODO - cache the value\nfunction getFeature(gl, cap) {\n const feature = WEBGL_FEATURES[cap];\n assert(feature, cap);\n\n // Get extension name from table\n const extensionName = isWebGL2(gl) ? feature[1] || feature[0] : feature[0];\n\n // Check if the value is dependent on checking an extension\n const value =\n typeof extensionName === 'string' ? Boolean(gl.getExtension(extensionName)) : extensionName;\n\n assert(value === false || value === true);\n\n return value;\n}\n\nexport function hasFeatures(gl, features) {\n features = Array.isArray(features) ? features : [features];\n return features.every(feature => getFeature(gl, feature));\n}\n"],"file":"webgl-info.js"}
1
+ {"version":3,"sources":["../../../src/utils/webgl-info.js"],"names":["GL_VENDOR","GL_RENDERER","GL_VERSION","GL_SHADING_LANGUAGE_VERSION","WEBGL_FEATURES","GLSL_FRAG_DATA","GLSL_FRAG_DEPTH","GLSL_DERIVATIVES","GLSL_TEXTURE_LOD","FEATURES","Object","keys","forEach","key","isWebGL2","gl","WebGL2RenderingContext","Boolean","_version","getContextInfo","info","getExtension","vendor","getParameter","UNMASKED_VENDOR_WEBGL","renderer","UNMASKED_RENDERER_WEBGL","gpuVendor","identifyGPUVendor","gpuInfo","version","shadingLanguageVersion","match","compiledGlslExtensions","canCompileGLGSExtension","cap","opts","feature","extensionName","behavior","source","shader","createShader","shaderSource","compileShader","canCompile","getShaderParameter","deleteShader","getFeature","value","hasFeatures","features","Array","isArray","every"],"mappings":"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","sourcesContent":["// Feature detection for WebGL\n//\n// Provides a function that enables simple checking of which WebGL features are\n// available in an WebGL1 or WebGL2 environment.\n\n/* eslint-disable no-inline-comments, max-len */\nimport isOldIE from './is-old-ie';\nimport assert from './assert';\n\nconst GL_VENDOR = 0x1f00;\nconst GL_RENDERER = 0x1f01;\nconst GL_VERSION = 0x1f02;\nconst GL_SHADING_LANGUAGE_VERSION = 0x8b8c;\n\n// Defines luma.gl \"feature\" names and semantics\nconst WEBGL_FEATURES = {\n // GLSL extensions\n GLSL_FRAG_DATA: ['WEBGL_draw_buffers', true], // TODO - name makes no sense in GLSL 3.00\n GLSL_FRAG_DEPTH: ['EXT_frag_depth', true],\n GLSL_DERIVATIVES: ['OES_standard_derivatives', true],\n GLSL_TEXTURE_LOD: ['EXT_shader_texture_lod', true]\n};\n\n// Create a key-mirrored FEATURES array\nconst FEATURES = {};\nObject.keys(WEBGL_FEATURES).forEach(key => {\n FEATURES[key] = key;\n});\n\nexport {FEATURES};\n\nfunction isWebGL2(gl) {\n if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {\n return true;\n }\n return Boolean(gl && gl._version === 2);\n}\n\nexport function getContextInfo(gl) {\n const info = gl.getExtension('WEBGL_debug_renderer_info');\n const vendor = gl.getParameter((info && info.UNMASKED_VENDOR_WEBGL) || GL_VENDOR);\n const renderer = gl.getParameter((info && info.UNMASKED_RENDERER_WEBGL) || GL_RENDERER);\n const gpuVendor = identifyGPUVendor(vendor, renderer);\n const gpuInfo = {\n gpuVendor,\n vendor,\n renderer,\n version: gl.getParameter(GL_VERSION),\n shadingLanguageVersion: gl.getParameter(GL_SHADING_LANGUAGE_VERSION)\n };\n return gpuInfo;\n}\n\nfunction identifyGPUVendor(vendor, renderer) {\n if (vendor.match(/NVIDIA/i) || renderer.match(/NVIDIA/i)) {\n return 'NVIDIA';\n }\n if (vendor.match(/INTEL/i) || renderer.match(/INTEL/i)) {\n return 'INTEL';\n }\n if (\n vendor.match(/AMD/i) ||\n renderer.match(/AMD/i) ||\n vendor.match(/ATI/i) ||\n renderer.match(/ATI/i)\n ) {\n return 'AMD';\n }\n return 'UNKNOWN GPU';\n}\n\nconst compiledGlslExtensions = {};\n\n// Enables feature detection in IE11 due to a bug where gl.getExtension may return true\n// but fail to compile when the extension is enabled in the shader. Specifically,\n// the OES_standard_derivatives and WEBGL_draw_buffers extensions fails to compile in IE11 even though its included\n// in the list of supported extensions.\n// opts allows user agent to be overridden for testing\n/*\n* Inputs :\n* gl : WebGL context\n* cap : Key of WEBGL_FEATURES object identifying the extension\n* opts :\n* behavior : behavior of extension to be tested, by defualt `enable` is used\n* Returns : true, if shader is compiled successfully, false otherwise\n*/\nexport function canCompileGLGSExtension(gl, cap, opts = {}) {\n const feature = WEBGL_FEATURES[cap];\n assert(feature, cap);\n\n if (!isOldIE(opts)) {\n return true;\n }\n\n if (cap in compiledGlslExtensions) {\n return compiledGlslExtensions[cap];\n }\n\n const extensionName = feature[0];\n const behavior = opts.behavior || 'enable';\n const source = `#extension GL_${extensionName} : ${behavior}\\nvoid main(void) {}`;\n\n const shader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n const canCompile = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n gl.deleteShader(shader);\n compiledGlslExtensions[cap] = canCompile;\n return canCompile;\n}\n\n// TODO - cache the value\nfunction getFeature(gl, cap) {\n const feature = WEBGL_FEATURES[cap];\n assert(feature, cap);\n\n // Get extension name from table\n const extensionName = isWebGL2(gl) ? feature[1] || feature[0] : feature[0];\n\n // Check if the value is dependent on checking an extension\n const value =\n typeof extensionName === 'string' ? Boolean(gl.getExtension(extensionName)) : extensionName;\n\n assert(value === false || value === true);\n\n return value;\n}\n\nexport function hasFeatures(gl, features) {\n features = Array.isArray(features) ? features : [features];\n return features.every(feature => getFeature(gl, feature));\n}\n"],"file":"webgl-info.js"}
@@ -1,7 +1,5 @@
1
1
  const moduleExports = require('./index');
2
2
 
3
- const _global = typeof window === 'undefined' ? global : window;
4
-
5
- _global.luma = _global.luma || {};
6
- module.exports = Object.assign(_global.luma, moduleExports);
3
+ globalThis.luma = globalThis.luma || {};
4
+ module.exports = Object.assign(globalThis.luma, moduleExports);
7
5
  //# sourceMappingURL=bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/bundle.js"],"names":["moduleExports","require","_global","window","global","luma","module","exports","Object","assign"],"mappings":"AAAA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AAEA,MAAMC,OAAO,GAAG,OAAOC,MAAP,KAAkB,WAAlB,GAAgCC,MAAhC,GAAyCD,MAAzD;;AAEAD,OAAO,CAACG,IAAR,GAAeH,OAAO,CAACG,IAAR,IAAgB,EAA/B;AAEAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcP,OAAO,CAACG,IAAtB,EAA4BL,aAA5B,CAAjB","sourcesContent":["const moduleExports = require('./index');\n\nconst _global = typeof window === 'undefined' ? global : window;\n// @ts-ignore\n_global.luma = _global.luma || {};\n// @ts-ignore\nmodule.exports = Object.assign(_global.luma, moduleExports);\n"],"file":"bundle.js"}
1
+ {"version":3,"sources":["../../src/bundle.js"],"names":["moduleExports","require","globalThis","luma","module","exports","Object","assign"],"mappings":"AAAA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AAGAC,UAAU,CAACC,IAAX,GAAkBD,UAAU,CAACC,IAAX,IAAmB,EAArC;AAEAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcL,UAAU,CAACC,IAAzB,EAA+BH,aAA/B,CAAjB","sourcesContent":["const moduleExports = require('./index');\n\n// @ts-ignore\nglobalThis.luma = globalThis.luma || {};\n// @ts-ignore\nmodule.exports = Object.assign(globalThis.luma, moduleExports);\n"],"file":"bundle.js"}
@@ -31,6 +31,10 @@ export function getPlatformShaderDefines(gl) {
31
31
  #define DEFAULT_GPU
32
32
  // Prevent driver from optimizing away the calculation necessary for emulated fp64
33
33
  #define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1
34
+ // Intel's built-in 'tan' function doesn't have acceptable precision
35
+ #define LUMA_FP32_TAN_PRECISION_WORKAROUND 1
36
+ // Intel GPU doesn't have full 32 bits precision in same cases, causes overflow
37
+ #define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1
34
38
  `;
35
39
  }
36
40
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/platform-defines.js"],"names":["getContextInfo","hasFeatures","canCompileGLGSExtension","FEATURES","getPlatformShaderDefines","gl","debugInfo","gpuVendor","toLowerCase","getVersionDefines","glslVersion","isFragment","versionDefines","GLSL_FRAG_DEPTH","GLSL_DERIVATIVES","GLSL_FRAG_DATA","behavior","GLSL_TEXTURE_LOD"],"mappings":"AAAA,SAAQA,cAAR,EAAwBC,WAAxB,EAAqCC,uBAArC,EAA8DC,QAA9D,QAA6E,qBAA7E;AAEA,OAAO,SAASC,wBAAT,CAAkCC,EAAlC,EAAsC;AAC3C,QAAMC,SAAS,GAAGN,cAAc,CAACK,EAAD,CAAhC;;AAEA,UAAQC,SAAS,CAACC,SAAV,CAAoBC,WAApB,EAAR;AACE,SAAK,QAAL;AACE,aAAQ;AACd;AACA;AACA;AACA,CAJM;;AAMF,SAAK,OAAL;AACE,aAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CARM;;AAUF,SAAK,KAAL;AAEE,aAAQ;AACd;AACA,CAFM;;AAIF;AAIE,aAAQ;AACd;AACA;AACA;AACA,CAJM;AA7BJ;AAmCD;AAED,OAAO,SAASC,iBAAT,CAA2BJ,EAA3B,EAA+BK,WAA/B,EAA4CC,UAA5C,EAAwD;AAE7D,MAAIC,cAAc,GAAI;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAfE;;AAiBA,MAAIX,WAAW,CAACI,EAAD,EAAKF,QAAQ,CAACU,eAAd,CAAf,EAA+C;AAC7CD,IAAAA,cAAc,IAAK;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CATI;AAUD;;AACD,MACEX,WAAW,CAACI,EAAD,EAAKF,QAAQ,CAACW,gBAAd,CAAX,IACAZ,uBAAuB,CAACG,EAAD,EAAKF,QAAQ,CAACW,gBAAd,CAFzB,EAGE;AACAF,IAAAA,cAAc,IAAK;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CARI;AASD;;AACD,MACEX,WAAW,CAACI,EAAD,EAAKF,QAAQ,CAACY,cAAd,CAAX,IACAb,uBAAuB,CAACG,EAAD,EAAKF,QAAQ,CAACY,cAAd,EAA8B;AAACC,IAAAA,QAAQ,EAAE;AAAX,GAA9B,CAFzB,EAGE;AACAJ,IAAAA,cAAc,IAAK;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CARI;AASD;;AACD,MAAIX,WAAW,CAACI,EAAD,EAAKF,QAAQ,CAACc,gBAAd,CAAf,EAAgD;AAC9CL,IAAAA,cAAc,IAAK;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CATI;AAUD;;AACD,SAAOA,cAAP;AACD","sourcesContent":["import {getContextInfo, hasFeatures, canCompileGLGSExtension, FEATURES} from '../utils/webgl-info';\n\nexport function getPlatformShaderDefines(gl) {\n const debugInfo = getContextInfo(gl);\n\n switch (debugInfo.gpuVendor.toLowerCase()) {\n case 'nvidia':\n return `\\\n#define NVIDIA_GPU\n// Nvidia optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n`;\n\n case 'intel':\n return `\\\n#define INTEL_GPU\n// Intel optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Intel's built-in 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n`;\n\n case 'amd':\n // AMD Does not eliminate fp64 code\n return `\\\n#define AMD_GPU\n`;\n\n default:\n // We don't know what GPU it is, could be that the GPU driver or\n // browser is not implementing UNMASKED_RENDERER constant and not\n // reporting a correct name\n return `\\\n#define DEFAULT_GPU\n// Prevent driver from optimizing away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n`;\n }\n}\n\nexport function getVersionDefines(gl, glslVersion, isFragment) {\n // Add shadertools defines to let shaders portably v1/v3 check for features\n let versionDefines = `\\\n#if (__VERSION__ > 120)\n\n# define FEATURE_GLSL_DERIVATIVES\n# define FEATURE_GLSL_DRAW_BUFFERS\n# define FEATURE_GLSL_FRAG_DEPTH\n# define FEATURE_GLSL_TEXTURE_LOD\n\n// DEPRECATED FLAGS, remove in v9\n# define FRAG_DEPTH\n# define DERIVATIVES\n# define DRAW_BUFFERS\n# define TEXTURE_LOD\n\n#endif // __VERSION\n`;\n\n if (hasFeatures(gl, FEATURES.GLSL_FRAG_DEPTH)) {\n versionDefines += `\\\n\n// FRAG_DEPTH => gl_FragDepth is available\n#ifdef GL_EXT_frag_depth\n#extension GL_EXT_frag_depth : enable\n# define FEATURE_GLSL_FRAG_DEPTH\n# define FRAG_DEPTH\n# define gl_FragDepth gl_FragDepthEXT\n#endif\n`;\n }\n if (\n hasFeatures(gl, FEATURES.GLSL_DERIVATIVES) &&\n canCompileGLGSExtension(gl, FEATURES.GLSL_DERIVATIVES)\n ) {\n versionDefines += `\\\n\n// DERIVATIVES => dxdF, dxdY and fwidth are available\n#ifdef GL_OES_standard_derivatives\n#extension GL_OES_standard_derivatives : enable\n# define FEATURE_GLSL_DERIVATIVES\n# define DERIVATIVES\n#endif\n`;\n }\n if (\n hasFeatures(gl, FEATURES.GLSL_FRAG_DATA) &&\n canCompileGLGSExtension(gl, FEATURES.GLSL_FRAG_DATA, {behavior: 'require'})\n ) {\n versionDefines += `\\\n\n// DRAW_BUFFERS => gl_FragData[] is available\n#ifdef GL_EXT_draw_buffers\n#extension GL_EXT_draw_buffers : require\n#define FEATURE_GLSL_DRAW_BUFFERS\n#define DRAW_BUFFERS\n#endif\n`;\n }\n if (hasFeatures(gl, FEATURES.GLSL_TEXTURE_LOD)) {\n versionDefines += `\\\n// TEXTURE_LOD => texture2DLod etc are available\n#ifdef GL_EXT_shader_texture_lod\n#extension GL_EXT_shader_texture_lod : enable\n\n# define FEATURE_GLSL_TEXTURE_LOD\n# define TEXTURE_LOD\n\n#endif\n`;\n }\n return versionDefines;\n}\n"],"file":"platform-defines.js"}
1
+ {"version":3,"sources":["../../../src/lib/platform-defines.js"],"names":["getContextInfo","hasFeatures","canCompileGLGSExtension","FEATURES","getPlatformShaderDefines","gl","debugInfo","gpuVendor","toLowerCase","getVersionDefines","glslVersion","isFragment","versionDefines","GLSL_FRAG_DEPTH","GLSL_DERIVATIVES","GLSL_FRAG_DATA","behavior","GLSL_TEXTURE_LOD"],"mappings":"AAAA,SAAQA,cAAR,EAAwBC,WAAxB,EAAqCC,uBAArC,EAA8DC,QAA9D,QAA6E,qBAA7E;AAEA,OAAO,SAASC,wBAAT,CAAkCC,EAAlC,EAAsC;AAC3C,QAAMC,SAAS,GAAGN,cAAc,CAACK,EAAD,CAAhC;;AAEA,UAAQC,SAAS,CAACC,SAAV,CAAoBC,WAApB,EAAR;AACE,SAAK,QAAL;AACE,aAAQ;AACd;AACA;AACA;AACA,CAJM;;AAMF,SAAK,OAAL;AACE,aAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CARM;;AAUF,SAAK,KAAL;AAEE,aAAQ;AACd;AACA,CAFM;;AAIF;AAIE,aAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CARM;AA7BJ;AAuCD;AAED,OAAO,SAASC,iBAAT,CAA2BJ,EAA3B,EAA+BK,WAA/B,EAA4CC,UAA5C,EAAwD;AAE7D,MAAIC,cAAc,GAAI;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAfE;;AAiBA,MAAIX,WAAW,CAACI,EAAD,EAAKF,QAAQ,CAACU,eAAd,CAAf,EAA+C;AAC7CD,IAAAA,cAAc,IAAK;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CATI;AAUD;;AACD,MACEX,WAAW,CAACI,EAAD,EAAKF,QAAQ,CAACW,gBAAd,CAAX,IACAZ,uBAAuB,CAACG,EAAD,EAAKF,QAAQ,CAACW,gBAAd,CAFzB,EAGE;AACAF,IAAAA,cAAc,IAAK;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CARI;AASD;;AACD,MACEX,WAAW,CAACI,EAAD,EAAKF,QAAQ,CAACY,cAAd,CAAX,IACAb,uBAAuB,CAACG,EAAD,EAAKF,QAAQ,CAACY,cAAd,EAA8B;AAACC,IAAAA,QAAQ,EAAE;AAAX,GAA9B,CAFzB,EAGE;AACAJ,IAAAA,cAAc,IAAK;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CARI;AASD;;AACD,MAAIX,WAAW,CAACI,EAAD,EAAKF,QAAQ,CAACc,gBAAd,CAAf,EAAgD;AAC9CL,IAAAA,cAAc,IAAK;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CATI;AAUD;;AACD,SAAOA,cAAP;AACD","sourcesContent":["import {getContextInfo, hasFeatures, canCompileGLGSExtension, FEATURES} from '../utils/webgl-info';\n\nexport function getPlatformShaderDefines(gl) {\n const debugInfo = getContextInfo(gl);\n\n switch (debugInfo.gpuVendor.toLowerCase()) {\n case 'nvidia':\n return `\\\n#define NVIDIA_GPU\n// Nvidia optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n`;\n\n case 'intel':\n return `\\\n#define INTEL_GPU\n// Intel optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Intel's built-in 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n`;\n\n case 'amd':\n // AMD Does not eliminate fp64 code\n return `\\\n#define AMD_GPU\n`;\n\n default:\n // We don't know what GPU it is, could be that the GPU driver or\n // browser is not implementing UNMASKED_RENDERER constant and not\n // reporting a correct name\n return `\\\n#define DEFAULT_GPU\n// Prevent driver from optimizing away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Intel's built-in 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n`;\n }\n}\n\nexport function getVersionDefines(gl, glslVersion, isFragment) {\n // Add shadertools defines to let shaders portably v1/v3 check for features\n let versionDefines = `\\\n#if (__VERSION__ > 120)\n\n# define FEATURE_GLSL_DERIVATIVES\n# define FEATURE_GLSL_DRAW_BUFFERS\n# define FEATURE_GLSL_FRAG_DEPTH\n# define FEATURE_GLSL_TEXTURE_LOD\n\n// DEPRECATED FLAGS, remove in v9\n# define FRAG_DEPTH\n# define DERIVATIVES\n# define DRAW_BUFFERS\n# define TEXTURE_LOD\n\n#endif // __VERSION\n`;\n\n if (hasFeatures(gl, FEATURES.GLSL_FRAG_DEPTH)) {\n versionDefines += `\\\n\n// FRAG_DEPTH => gl_FragDepth is available\n#ifdef GL_EXT_frag_depth\n#extension GL_EXT_frag_depth : enable\n# define FEATURE_GLSL_FRAG_DEPTH\n# define FRAG_DEPTH\n# define gl_FragDepth gl_FragDepthEXT\n#endif\n`;\n }\n if (\n hasFeatures(gl, FEATURES.GLSL_DERIVATIVES) &&\n canCompileGLGSExtension(gl, FEATURES.GLSL_DERIVATIVES)\n ) {\n versionDefines += `\\\n\n// DERIVATIVES => dxdF, dxdY and fwidth are available\n#ifdef GL_OES_standard_derivatives\n#extension GL_OES_standard_derivatives : enable\n# define FEATURE_GLSL_DERIVATIVES\n# define DERIVATIVES\n#endif\n`;\n }\n if (\n hasFeatures(gl, FEATURES.GLSL_FRAG_DATA) &&\n canCompileGLGSExtension(gl, FEATURES.GLSL_FRAG_DATA, {behavior: 'require'})\n ) {\n versionDefines += `\\\n\n// DRAW_BUFFERS => gl_FragData[] is available\n#ifdef GL_EXT_draw_buffers\n#extension GL_EXT_draw_buffers : require\n#define FEATURE_GLSL_DRAW_BUFFERS\n#define DRAW_BUFFERS\n#endif\n`;\n }\n if (hasFeatures(gl, FEATURES.GLSL_TEXTURE_LOD)) {\n versionDefines += `\\\n// TEXTURE_LOD => texture2DLod etc are available\n#ifdef GL_EXT_shader_texture_lod\n#extension GL_EXT_shader_texture_lod : enable\n\n# define FEATURE_GLSL_TEXTURE_LOD\n# define TEXTURE_LOD\n\n#endif\n`;\n }\n return versionDefines;\n}\n"],"file":"platform-defines.js"}
@@ -48,15 +48,11 @@ function identifyGPUVendor(vendor, renderer) {
48
48
  return 'INTEL';
49
49
  }
50
50
 
51
- if (vendor.match(/Apple/i) || renderer.match(/Apple/i)) {
52
- return 'APPLE';
53
- }
54
-
55
51
  if (vendor.match(/AMD/i) || renderer.match(/AMD/i) || vendor.match(/ATI/i) || renderer.match(/ATI/i)) {
56
52
  return 'AMD';
57
53
  }
58
54
 
59
- return 'UNKNOWN';
55
+ return 'UNKNOWN GPU';
60
56
  }
61
57
 
62
58
  const compiledGlslExtensions = {};
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/webgl-info.js"],"names":["isOldIE","assert","GL_VENDOR","GL_RENDERER","GL_VERSION","GL_SHADING_LANGUAGE_VERSION","WEBGL_FEATURES","GLSL_FRAG_DATA","GLSL_FRAG_DEPTH","GLSL_DERIVATIVES","GLSL_TEXTURE_LOD","FEATURES","Object","keys","forEach","key","isWebGL2","gl","WebGL2RenderingContext","Boolean","_version","getContextInfo","info","getExtension","vendor","getParameter","UNMASKED_VENDOR_WEBGL","renderer","UNMASKED_RENDERER_WEBGL","gpuVendor","identifyGPUVendor","gpuInfo","version","shadingLanguageVersion","match","compiledGlslExtensions","canCompileGLGSExtension","cap","opts","feature","extensionName","behavior","source","shader","createShader","shaderSource","compileShader","canCompile","getShaderParameter","deleteShader","getFeature","value","hasFeatures","features","Array","isArray","every"],"mappings":"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","sourcesContent":["// Feature detection for WebGL\n//\n// Provides a function that enables simple checking of which WebGL features are\n// available in an WebGL1 or WebGL2 environment.\n\n/* eslint-disable no-inline-comments, max-len */\nimport isOldIE from './is-old-ie';\nimport assert from './assert';\n\nconst GL_VENDOR = 0x1f00;\nconst GL_RENDERER = 0x1f01;\nconst GL_VERSION = 0x1f02;\nconst GL_SHADING_LANGUAGE_VERSION = 0x8b8c;\n\n// Defines luma.gl \"feature\" names and semantics\nconst WEBGL_FEATURES = {\n // GLSL extensions\n GLSL_FRAG_DATA: ['WEBGL_draw_buffers', true], // TODO - name makes no sense in GLSL 3.00\n GLSL_FRAG_DEPTH: ['EXT_frag_depth', true],\n GLSL_DERIVATIVES: ['OES_standard_derivatives', true],\n GLSL_TEXTURE_LOD: ['EXT_shader_texture_lod', true]\n};\n\n// Create a key-mirrored FEATURES array\nconst FEATURES = {};\nObject.keys(WEBGL_FEATURES).forEach(key => {\n FEATURES[key] = key;\n});\n\nexport {FEATURES};\n\nfunction isWebGL2(gl) {\n if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {\n return true;\n }\n return Boolean(gl && gl._version === 2);\n}\n\nexport function getContextInfo(gl) {\n const info = gl.getExtension('WEBGL_debug_renderer_info');\n const vendor = gl.getParameter((info && info.UNMASKED_VENDOR_WEBGL) || GL_VENDOR);\n const renderer = gl.getParameter((info && info.UNMASKED_RENDERER_WEBGL) || GL_RENDERER);\n const gpuVendor = identifyGPUVendor(vendor, renderer);\n const gpuInfo = {\n gpuVendor,\n vendor,\n renderer,\n version: gl.getParameter(GL_VERSION),\n shadingLanguageVersion: gl.getParameter(GL_SHADING_LANGUAGE_VERSION)\n };\n return gpuInfo;\n}\n\nfunction identifyGPUVendor(vendor, renderer) {\n if (vendor.match(/NVIDIA/i) || renderer.match(/NVIDIA/i)) {\n return 'NVIDIA';\n }\n if (vendor.match(/INTEL/i) || renderer.match(/INTEL/i)) {\n return 'INTEL';\n }\n if (vendor.match(/Apple/i) || renderer.match(/Apple/i)) {\n return 'APPLE';\n }\n if (\n vendor.match(/AMD/i) ||\n renderer.match(/AMD/i) ||\n vendor.match(/ATI/i) ||\n renderer.match(/ATI/i)\n ) {\n return 'AMD';\n }\n return 'UNKNOWN';\n}\n\nconst compiledGlslExtensions = {};\n\n// Enables feature detection in IE11 due to a bug where gl.getExtension may return true\n// but fail to compile when the extension is enabled in the shader. Specifically,\n// the OES_standard_derivatives and WEBGL_draw_buffers extensions fails to compile in IE11 even though its included\n// in the list of supported extensions.\n// opts allows user agent to be overridden for testing\n/*\n* Inputs :\n* gl : WebGL context\n* cap : Key of WEBGL_FEATURES object identifying the extension\n* opts :\n* behavior : behavior of extension to be tested, by defualt `enable` is used\n* Returns : true, if shader is compiled successfully, false otherwise\n*/\nexport function canCompileGLGSExtension(gl, cap, opts = {}) {\n const feature = WEBGL_FEATURES[cap];\n assert(feature, cap);\n\n if (!isOldIE(opts)) {\n return true;\n }\n\n if (cap in compiledGlslExtensions) {\n return compiledGlslExtensions[cap];\n }\n\n const extensionName = feature[0];\n const behavior = opts.behavior || 'enable';\n const source = `#extension GL_${extensionName} : ${behavior}\\nvoid main(void) {}`;\n\n const shader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n const canCompile = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n gl.deleteShader(shader);\n compiledGlslExtensions[cap] = canCompile;\n return canCompile;\n}\n\n// TODO - cache the value\nfunction getFeature(gl, cap) {\n const feature = WEBGL_FEATURES[cap];\n assert(feature, cap);\n\n // Get extension name from table\n const extensionName = isWebGL2(gl) ? feature[1] || feature[0] : feature[0];\n\n // Check if the value is dependent on checking an extension\n const value =\n typeof extensionName === 'string' ? Boolean(gl.getExtension(extensionName)) : extensionName;\n\n assert(value === false || value === true);\n\n return value;\n}\n\nexport function hasFeatures(gl, features) {\n features = Array.isArray(features) ? features : [features];\n return features.every(feature => getFeature(gl, feature));\n}\n"],"file":"webgl-info.js"}
1
+ {"version":3,"sources":["../../../src/utils/webgl-info.js"],"names":["isOldIE","assert","GL_VENDOR","GL_RENDERER","GL_VERSION","GL_SHADING_LANGUAGE_VERSION","WEBGL_FEATURES","GLSL_FRAG_DATA","GLSL_FRAG_DEPTH","GLSL_DERIVATIVES","GLSL_TEXTURE_LOD","FEATURES","Object","keys","forEach","key","isWebGL2","gl","WebGL2RenderingContext","Boolean","_version","getContextInfo","info","getExtension","vendor","getParameter","UNMASKED_VENDOR_WEBGL","renderer","UNMASKED_RENDERER_WEBGL","gpuVendor","identifyGPUVendor","gpuInfo","version","shadingLanguageVersion","match","compiledGlslExtensions","canCompileGLGSExtension","cap","opts","feature","extensionName","behavior","source","shader","createShader","shaderSource","compileShader","canCompile","getShaderParameter","deleteShader","getFeature","value","hasFeatures","features","Array","isArray","every"],"mappings":"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","sourcesContent":["// Feature detection for WebGL\n//\n// Provides a function that enables simple checking of which WebGL features are\n// available in an WebGL1 or WebGL2 environment.\n\n/* eslint-disable no-inline-comments, max-len */\nimport isOldIE from './is-old-ie';\nimport assert from './assert';\n\nconst GL_VENDOR = 0x1f00;\nconst GL_RENDERER = 0x1f01;\nconst GL_VERSION = 0x1f02;\nconst GL_SHADING_LANGUAGE_VERSION = 0x8b8c;\n\n// Defines luma.gl \"feature\" names and semantics\nconst WEBGL_FEATURES = {\n // GLSL extensions\n GLSL_FRAG_DATA: ['WEBGL_draw_buffers', true], // TODO - name makes no sense in GLSL 3.00\n GLSL_FRAG_DEPTH: ['EXT_frag_depth', true],\n GLSL_DERIVATIVES: ['OES_standard_derivatives', true],\n GLSL_TEXTURE_LOD: ['EXT_shader_texture_lod', true]\n};\n\n// Create a key-mirrored FEATURES array\nconst FEATURES = {};\nObject.keys(WEBGL_FEATURES).forEach(key => {\n FEATURES[key] = key;\n});\n\nexport {FEATURES};\n\nfunction isWebGL2(gl) {\n if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {\n return true;\n }\n return Boolean(gl && gl._version === 2);\n}\n\nexport function getContextInfo(gl) {\n const info = gl.getExtension('WEBGL_debug_renderer_info');\n const vendor = gl.getParameter((info && info.UNMASKED_VENDOR_WEBGL) || GL_VENDOR);\n const renderer = gl.getParameter((info && info.UNMASKED_RENDERER_WEBGL) || GL_RENDERER);\n const gpuVendor = identifyGPUVendor(vendor, renderer);\n const gpuInfo = {\n gpuVendor,\n vendor,\n renderer,\n version: gl.getParameter(GL_VERSION),\n shadingLanguageVersion: gl.getParameter(GL_SHADING_LANGUAGE_VERSION)\n };\n return gpuInfo;\n}\n\nfunction identifyGPUVendor(vendor, renderer) {\n if (vendor.match(/NVIDIA/i) || renderer.match(/NVIDIA/i)) {\n return 'NVIDIA';\n }\n if (vendor.match(/INTEL/i) || renderer.match(/INTEL/i)) {\n return 'INTEL';\n }\n if (\n vendor.match(/AMD/i) ||\n renderer.match(/AMD/i) ||\n vendor.match(/ATI/i) ||\n renderer.match(/ATI/i)\n ) {\n return 'AMD';\n }\n return 'UNKNOWN GPU';\n}\n\nconst compiledGlslExtensions = {};\n\n// Enables feature detection in IE11 due to a bug where gl.getExtension may return true\n// but fail to compile when the extension is enabled in the shader. Specifically,\n// the OES_standard_derivatives and WEBGL_draw_buffers extensions fails to compile in IE11 even though its included\n// in the list of supported extensions.\n// opts allows user agent to be overridden for testing\n/*\n* Inputs :\n* gl : WebGL context\n* cap : Key of WEBGL_FEATURES object identifying the extension\n* opts :\n* behavior : behavior of extension to be tested, by defualt `enable` is used\n* Returns : true, if shader is compiled successfully, false otherwise\n*/\nexport function canCompileGLGSExtension(gl, cap, opts = {}) {\n const feature = WEBGL_FEATURES[cap];\n assert(feature, cap);\n\n if (!isOldIE(opts)) {\n return true;\n }\n\n if (cap in compiledGlslExtensions) {\n return compiledGlslExtensions[cap];\n }\n\n const extensionName = feature[0];\n const behavior = opts.behavior || 'enable';\n const source = `#extension GL_${extensionName} : ${behavior}\\nvoid main(void) {}`;\n\n const shader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n const canCompile = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n gl.deleteShader(shader);\n compiledGlslExtensions[cap] = canCompile;\n return canCompile;\n}\n\n// TODO - cache the value\nfunction getFeature(gl, cap) {\n const feature = WEBGL_FEATURES[cap];\n assert(feature, cap);\n\n // Get extension name from table\n const extensionName = isWebGL2(gl) ? feature[1] || feature[0] : feature[0];\n\n // Check if the value is dependent on checking an extension\n const value =\n typeof extensionName === 'string' ? Boolean(gl.getExtension(extensionName)) : extensionName;\n\n assert(value === false || value === true);\n\n return value;\n}\n\nexport function hasFeatures(gl, features) {\n features = Array.isArray(features) ? features : [features];\n return features.every(feature => getFeature(gl, feature));\n}\n"],"file":"webgl-info.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luma.gl/shadertools",
3
- "version": "8.5.9",
3
+ "version": "8.5.12",
4
4
  "description": "Shader module system for luma.gl",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -39,5 +39,5 @@
39
39
  "@babel/runtime": "^7.0.0",
40
40
  "@math.gl/core": "^3.5.0"
41
41
  },
42
- "gitHead": "8c70c28a90b7507592a6029f51428f7397daed49"
42
+ "gitHead": "0a16c6910a0daaa25e1822fa7210b258c9cad60f"
43
43
  }
package/src/bundle.js CHANGED
@@ -1,7 +1,6 @@
1
1
  const moduleExports = require('./index');
2
2
 
3
- const _global = typeof window === 'undefined' ? global : window;
4
3
  // @ts-ignore
5
- _global.luma = _global.luma || {};
4
+ globalThis.luma = globalThis.luma || {};
6
5
  // @ts-ignore
7
- module.exports = Object.assign(_global.luma, moduleExports);
6
+ module.exports = Object.assign(globalThis.luma, moduleExports);
@@ -36,6 +36,10 @@ export function getPlatformShaderDefines(gl) {
36
36
  #define DEFAULT_GPU
37
37
  // Prevent driver from optimizing away the calculation necessary for emulated fp64
38
38
  #define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1
39
+ // Intel's built-in 'tan' function doesn't have acceptable precision
40
+ #define LUMA_FP32_TAN_PRECISION_WORKAROUND 1
41
+ // Intel GPU doesn't have full 32 bits precision in same cases, causes overflow
42
+ #define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1
39
43
  `;
40
44
  }
41
45
  }
@@ -58,9 +58,6 @@ function identifyGPUVendor(vendor, renderer) {
58
58
  if (vendor.match(/INTEL/i) || renderer.match(/INTEL/i)) {
59
59
  return 'INTEL';
60
60
  }
61
- if (vendor.match(/Apple/i) || renderer.match(/Apple/i)) {
62
- return 'APPLE';
63
- }
64
61
  if (
65
62
  vendor.match(/AMD/i) ||
66
63
  renderer.match(/AMD/i) ||
@@ -69,7 +66,7 @@ function identifyGPUVendor(vendor, renderer) {
69
66
  ) {
70
67
  return 'AMD';
71
68
  }
72
- return 'UNKNOWN';
69
+ return 'UNKNOWN GPU';
73
70
  }
74
71
 
75
72
  const compiledGlslExtensions = {};