@luma.gl/shadertools 8.5.19 → 8.5.21

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.
Files changed (114) hide show
  1. package/dist/es5/bundle.js.map +1 -1
  2. package/dist/es5/index.js.map +1 -1
  3. package/dist/es5/lib/assemble-shaders.js.map +1 -1
  4. package/dist/es5/lib/constants.js.map +1 -1
  5. package/dist/es5/lib/filters/prop-types.js.map +1 -1
  6. package/dist/es5/lib/inject-shader.js.map +1 -1
  7. package/dist/es5/lib/platform-defines.js.map +1 -1
  8. package/dist/es5/lib/resolve-modules.js.map +1 -1
  9. package/dist/es5/lib/shader-module.js.map +1 -1
  10. package/dist/es5/lib/transpile-shader.js.map +1 -1
  11. package/dist/es5/modules/dirlight/dirlight.js.map +1 -1
  12. package/dist/es5/modules/fp32/fp32.js.map +1 -1
  13. package/dist/es5/modules/fp64/fp64-arithmetic.glsl.js.map +1 -1
  14. package/dist/es5/modules/fp64/fp64-functions.glsl.js.map +1 -1
  15. package/dist/es5/modules/fp64/fp64-utils.js.map +1 -1
  16. package/dist/es5/modules/fp64/fp64.js.map +1 -1
  17. package/dist/es5/modules/fxaa/fxaa.js.map +1 -1
  18. package/dist/es5/modules/geometry/geometry.js.map +1 -1
  19. package/dist/es5/modules/image-adjust-filters/brightnesscontrast.js.map +1 -1
  20. package/dist/es5/modules/image-adjust-filters/denoise.js.map +1 -1
  21. package/dist/es5/modules/image-adjust-filters/huesaturation.js.map +1 -1
  22. package/dist/es5/modules/image-adjust-filters/noise.js.map +1 -1
  23. package/dist/es5/modules/image-adjust-filters/sepia.js.map +1 -1
  24. package/dist/es5/modules/image-adjust-filters/vibrance.js.map +1 -1
  25. package/dist/es5/modules/image-adjust-filters/vignette.js.map +1 -1
  26. package/dist/es5/modules/image-blur-filters/tiltshift.js.map +1 -1
  27. package/dist/es5/modules/image-blur-filters/triangleblur.js.map +1 -1
  28. package/dist/es5/modules/image-blur-filters/zoomblur.js.map +1 -1
  29. package/dist/es5/modules/image-fun-filters/colorhalftone.js.map +1 -1
  30. package/dist/es5/modules/image-fun-filters/dotscreen.js.map +1 -1
  31. package/dist/es5/modules/image-fun-filters/edgework.js.map +1 -1
  32. package/dist/es5/modules/image-fun-filters/hexagonalpixelate.js.map +1 -1
  33. package/dist/es5/modules/image-fun-filters/ink.js.map +1 -1
  34. package/dist/es5/modules/image-fun-filters/magnify.js.map +1 -1
  35. package/dist/es5/modules/image-warp-filters/bulgepinch.js.map +1 -1
  36. package/dist/es5/modules/image-warp-filters/swirl.js.map +1 -1
  37. package/dist/es5/modules/image-warp-filters/warp.js.map +1 -1
  38. package/dist/es5/modules/index.js.map +1 -1
  39. package/dist/es5/modules/lights/lights.glsl.js.map +1 -1
  40. package/dist/es5/modules/lights/lights.js.map +1 -1
  41. package/dist/es5/modules/module-injectors.js.map +1 -1
  42. package/dist/es5/modules/pbr/pbr-fragment.glsl.js.map +1 -1
  43. package/dist/es5/modules/pbr/pbr-vertex.glsl.js.map +1 -1
  44. package/dist/es5/modules/pbr/pbr.js.map +1 -1
  45. package/dist/es5/modules/phong-lighting/phong-lighting.glsl.js.map +1 -1
  46. package/dist/es5/modules/phong-lighting/phong-lighting.js.map +1 -1
  47. package/dist/es5/modules/picking/picking.js.map +1 -1
  48. package/dist/es5/modules/project/project.js.map +1 -1
  49. package/dist/es5/modules/transform/transform.js.map +1 -1
  50. package/dist/es5/modules/utils/random.js.map +1 -1
  51. package/dist/es5/utils/assert.js.map +1 -1
  52. package/dist/es5/utils/index.js.map +1 -1
  53. package/dist/es5/utils/is-old-ie.js.map +1 -1
  54. package/dist/es5/utils/shader-utils.js.map +1 -1
  55. package/dist/es5/utils/webgl-info.js.map +1 -1
  56. package/dist/esm/bundle.js.map +1 -1
  57. package/dist/esm/index.js.map +1 -1
  58. package/dist/esm/lib/assemble-shaders.js.map +1 -1
  59. package/dist/esm/lib/constants.js.map +1 -1
  60. package/dist/esm/lib/filters/prop-types.js.map +1 -1
  61. package/dist/esm/lib/inject-shader.js.map +1 -1
  62. package/dist/esm/lib/platform-defines.js.map +1 -1
  63. package/dist/esm/lib/resolve-modules.js.map +1 -1
  64. package/dist/esm/lib/shader-module.js.map +1 -1
  65. package/dist/esm/lib/transpile-shader.js.map +1 -1
  66. package/dist/esm/modules/dirlight/dirlight.js.map +1 -1
  67. package/dist/esm/modules/fp32/fp32.js.map +1 -1
  68. package/dist/esm/modules/fp64/fp64-arithmetic.glsl.js.map +1 -1
  69. package/dist/esm/modules/fp64/fp64-functions.glsl.js.map +1 -1
  70. package/dist/esm/modules/fp64/fp64-utils.js.map +1 -1
  71. package/dist/esm/modules/fp64/fp64.js.map +1 -1
  72. package/dist/esm/modules/fxaa/fxaa.js.map +1 -1
  73. package/dist/esm/modules/geometry/geometry.js.map +1 -1
  74. package/dist/esm/modules/image-adjust-filters/brightnesscontrast.js.map +1 -1
  75. package/dist/esm/modules/image-adjust-filters/denoise.js.map +1 -1
  76. package/dist/esm/modules/image-adjust-filters/huesaturation.js.map +1 -1
  77. package/dist/esm/modules/image-adjust-filters/noise.js.map +1 -1
  78. package/dist/esm/modules/image-adjust-filters/sepia.js.map +1 -1
  79. package/dist/esm/modules/image-adjust-filters/vibrance.js.map +1 -1
  80. package/dist/esm/modules/image-adjust-filters/vignette.js.map +1 -1
  81. package/dist/esm/modules/image-blur-filters/tiltshift.js.map +1 -1
  82. package/dist/esm/modules/image-blur-filters/triangleblur.js.map +1 -1
  83. package/dist/esm/modules/image-blur-filters/zoomblur.js.map +1 -1
  84. package/dist/esm/modules/image-fun-filters/colorhalftone.js.map +1 -1
  85. package/dist/esm/modules/image-fun-filters/dotscreen.js.map +1 -1
  86. package/dist/esm/modules/image-fun-filters/edgework.js.map +1 -1
  87. package/dist/esm/modules/image-fun-filters/hexagonalpixelate.js.map +1 -1
  88. package/dist/esm/modules/image-fun-filters/ink.js.map +1 -1
  89. package/dist/esm/modules/image-fun-filters/magnify.js.map +1 -1
  90. package/dist/esm/modules/image-warp-filters/bulgepinch.js.map +1 -1
  91. package/dist/esm/modules/image-warp-filters/swirl.js.map +1 -1
  92. package/dist/esm/modules/image-warp-filters/warp.js.map +1 -1
  93. package/dist/esm/modules/index.js.map +1 -1
  94. package/dist/esm/modules/lights/lights.glsl.js.map +1 -1
  95. package/dist/esm/modules/lights/lights.js.map +1 -1
  96. package/dist/esm/modules/module-injectors.js.map +1 -1
  97. package/dist/esm/modules/pbr/pbr-fragment.glsl.js.map +1 -1
  98. package/dist/esm/modules/pbr/pbr-vertex.glsl.js.map +1 -1
  99. package/dist/esm/modules/pbr/pbr.js.map +1 -1
  100. package/dist/esm/modules/phong-lighting/phong-lighting.glsl.js.map +1 -1
  101. package/dist/esm/modules/phong-lighting/phong-lighting.js.map +1 -1
  102. package/dist/esm/modules/picking/picking.js.map +1 -1
  103. package/dist/esm/modules/project/project.js.map +1 -1
  104. package/dist/esm/modules/transform/transform.js.map +1 -1
  105. package/dist/esm/modules/utils/random.js.map +1 -1
  106. package/dist/esm/utils/assert.js.map +1 -1
  107. package/dist/esm/utils/index.js.map +1 -1
  108. package/dist/esm/utils/is-old-ie.js.map +1 -1
  109. package/dist/esm/utils/shader-utils.js.map +1 -1
  110. package/dist/esm/utils/webgl-info.js.map +1 -1
  111. package/package.json +2 -2
  112. package/src/.DS_Store +0 -0
  113. package/src/lib/.DS_Store +0 -0
  114. package/src/modules/.DS_Store +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/phong-lighting/phong-lighting.js"],"names":["INITIAL_MODULE_OPTIONS","getMaterialUniforms","material","ambient","diffuse","shininess","specularColor","lighting_uAmbient","lighting_uDiffuse","lighting_uShininess","lighting_uSpecularColor","map","x","getUniforms","opts","lighting_uEnabled","gouraudLighting","name","dependencies","lights","vs","lightingShader","defines","LIGHTING_VERTEX","phongLighting","fs","LIGHTING_FRAGMENT"],"mappings":";;;;;;;;;AAEA;;AACA;;AAEA,IAAMA,sBAAsB,GAAG,EAA/B;;AAEA,SAASC,mBAAT,CAA6BC,QAA7B,EAAuC;AACrC,0BAAsFA,QAAtF,CAAOC,OAAP;AAAA,MAAOA,OAAP,kCAAiB,IAAjB;AAAA,0BAAsFD,QAAtF,CAAuBE,OAAvB;AAAA,MAAuBA,OAAvB,kCAAiC,GAAjC;AAAA,4BAAsFF,QAAtF,CAAsCG,SAAtC;AAAA,MAAsCA,SAAtC,oCAAkD,EAAlD;AAAA,8BAAsFH,QAAtF,CAAsDI,aAAtD;AAAA,MAAsDA,aAAtD,sCAAsE,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,CAAtE;AAEA,SAAO;AACLC,IAAAA,iBAAiB,EAAEJ,OADd;AAELK,IAAAA,iBAAiB,EAAEJ,OAFd;AAGLK,IAAAA,mBAAmB,EAAEJ,SAHhB;AAILK,IAAAA,uBAAuB,EAAEJ,aAAa,CAACK,GAAd,CAAkB,UAAAC,CAAC;AAAA,aAAIA,CAAC,GAAG,GAAR;AAAA,KAAnB;AAJpB,GAAP;AAMD;;AAED,SAASC,WAAT,GAAoD;AAAA,MAA/BC,IAA+B,uEAAxBd,sBAAwB;;AAClD,MAAI,EAAE,cAAcc,IAAhB,CAAJ,EAA2B;AACzB,WAAO,EAAP;AACD;;AAED,MAAOZ,QAAP,GAAmBY,IAAnB,CAAOZ,QAAP;;AAEA,MAAI,CAACA,QAAL,EAAe;AACb,WAAO;AAACa,MAAAA,iBAAiB,EAAE;AAApB,KAAP;AACD;;AAED,SAAOd,mBAAmB,CAACC,QAAD,CAA1B;AACD;;AAGM,IAAMc,eAAe,GAAG;AAC7BC,EAAAA,IAAI,EAAE,kBADuB;AAE7BC,EAAAA,YAAY,EAAE,CAACC,cAAD,CAFe;AAG7BC,EAAAA,EAAE,EAAEC,sBAHyB;AAI7BC,EAAAA,OAAO,EAAE;AACPC,IAAAA,eAAe,EAAE;AADV,GAJoB;AAO7BV,EAAAA,WAAW,EAAXA;AAP6B,CAAxB;;AAWA,IAAMW,aAAa,GAAG;AAC3BP,EAAAA,IAAI,EAAE,gBADqB;AAE3BC,EAAAA,YAAY,EAAE,CAACC,cAAD,CAFa;AAG3BM,EAAAA,EAAE,EAAEJ,sBAHuB;AAI3BC,EAAAA,OAAO,EAAE;AACPI,IAAAA,iBAAiB,EAAE;AADZ,GAJkB;AAO3Bb,EAAAA,WAAW,EAAXA;AAP2B,CAAtB","sourcesContent":["/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nimport {lights} from '../lights/lights';\nimport lightingShader from './phong-lighting.glsl';\n\nconst INITIAL_MODULE_OPTIONS = {};\n\nfunction getMaterialUniforms(material) {\n const {ambient = 0.35, diffuse = 0.6, shininess = 32, specularColor = [30, 30, 30]} = material;\n\n return {\n lighting_uAmbient: ambient,\n lighting_uDiffuse: diffuse,\n lighting_uShininess: shininess,\n lighting_uSpecularColor: specularColor.map(x => x / 255)\n };\n}\n\nfunction getUniforms(opts = INITIAL_MODULE_OPTIONS) {\n if (!('material' in opts)) {\n return {};\n }\n\n const {material} = opts;\n\n if (!material) {\n return {lighting_uEnabled: false};\n }\n\n return getMaterialUniforms(material);\n}\n\n/** @type {ShaderModule} */\nexport const gouraudLighting = {\n name: 'gouraud-lighting',\n dependencies: [lights],\n vs: lightingShader,\n defines: {\n LIGHTING_VERTEX: 1\n },\n getUniforms\n};\n\n/** @type {ShaderModule} */\nexport const phongLighting = {\n name: 'phong-lighting',\n dependencies: [lights],\n fs: lightingShader,\n defines: {\n LIGHTING_FRAGMENT: 1\n },\n getUniforms\n};\n"],"file":"phong-lighting.js"}
1
+ {"version":3,"file":"phong-lighting.js","names":["INITIAL_MODULE_OPTIONS","getMaterialUniforms","material","ambient","diffuse","shininess","specularColor","lighting_uAmbient","lighting_uDiffuse","lighting_uShininess","lighting_uSpecularColor","map","x","getUniforms","opts","lighting_uEnabled","gouraudLighting","name","dependencies","lights","vs","lightingShader","defines","LIGHTING_VERTEX","phongLighting","fs","LIGHTING_FRAGMENT"],"sources":["../../../../src/modules/phong-lighting/phong-lighting.js"],"sourcesContent":["/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nimport {lights} from '../lights/lights';\nimport lightingShader from './phong-lighting.glsl';\n\nconst INITIAL_MODULE_OPTIONS = {};\n\nfunction getMaterialUniforms(material) {\n const {ambient = 0.35, diffuse = 0.6, shininess = 32, specularColor = [30, 30, 30]} = material;\n\n return {\n lighting_uAmbient: ambient,\n lighting_uDiffuse: diffuse,\n lighting_uShininess: shininess,\n lighting_uSpecularColor: specularColor.map(x => x / 255)\n };\n}\n\nfunction getUniforms(opts = INITIAL_MODULE_OPTIONS) {\n if (!('material' in opts)) {\n return {};\n }\n\n const {material} = opts;\n\n if (!material) {\n return {lighting_uEnabled: false};\n }\n\n return getMaterialUniforms(material);\n}\n\n/** @type {ShaderModule} */\nexport const gouraudLighting = {\n name: 'gouraud-lighting',\n dependencies: [lights],\n vs: lightingShader,\n defines: {\n LIGHTING_VERTEX: 1\n },\n getUniforms\n};\n\n/** @type {ShaderModule} */\nexport const phongLighting = {\n name: 'phong-lighting',\n dependencies: [lights],\n fs: lightingShader,\n defines: {\n LIGHTING_FRAGMENT: 1\n },\n getUniforms\n};\n"],"mappings":";;;;;;;;;AAEA;;AACA;;AAEA,IAAMA,sBAAsB,GAAG,EAA/B;;AAEA,SAASC,mBAAT,CAA6BC,QAA7B,EAAuC;EACrC,wBAAsFA,QAAtF,CAAOC,OAAP;EAAA,IAAOA,OAAP,kCAAiB,IAAjB;EAAA,wBAAsFD,QAAtF,CAAuBE,OAAvB;EAAA,IAAuBA,OAAvB,kCAAiC,GAAjC;EAAA,0BAAsFF,QAAtF,CAAsCG,SAAtC;EAAA,IAAsCA,SAAtC,oCAAkD,EAAlD;EAAA,4BAAsFH,QAAtF,CAAsDI,aAAtD;EAAA,IAAsDA,aAAtD,sCAAsE,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,CAAtE;EAEA,OAAO;IACLC,iBAAiB,EAAEJ,OADd;IAELK,iBAAiB,EAAEJ,OAFd;IAGLK,mBAAmB,EAAEJ,SAHhB;IAILK,uBAAuB,EAAEJ,aAAa,CAACK,GAAd,CAAkB,UAAAC,CAAC;MAAA,OAAIA,CAAC,GAAG,GAAR;IAAA,CAAnB;EAJpB,CAAP;AAMD;;AAED,SAASC,WAAT,GAAoD;EAAA,IAA/BC,IAA+B,uEAAxBd,sBAAwB;;EAClD,IAAI,EAAE,cAAcc,IAAhB,CAAJ,EAA2B;IACzB,OAAO,EAAP;EACD;;EAED,IAAOZ,QAAP,GAAmBY,IAAnB,CAAOZ,QAAP;;EAEA,IAAI,CAACA,QAAL,EAAe;IACb,OAAO;MAACa,iBAAiB,EAAE;IAApB,CAAP;EACD;;EAED,OAAOd,mBAAmB,CAACC,QAAD,CAA1B;AACD;;AAGM,IAAMc,eAAe,GAAG;EAC7BC,IAAI,EAAE,kBADuB;EAE7BC,YAAY,EAAE,CAACC,cAAD,CAFe;EAG7BC,EAAE,EAAEC,sBAHyB;EAI7BC,OAAO,EAAE;IACPC,eAAe,EAAE;EADV,CAJoB;EAO7BV,WAAW,EAAXA;AAP6B,CAAxB;;AAWA,IAAMW,aAAa,GAAG;EAC3BP,IAAI,EAAE,gBADqB;EAE3BC,YAAY,EAAE,CAACC,cAAD,CAFa;EAG3BM,EAAE,EAAEJ,sBAHuB;EAI3BC,OAAO,EAAE;IACPI,iBAAiB,EAAE;EADZ,CAJkB;EAO3Bb,WAAW,EAAXA;AAP2B,CAAtB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/picking/picking.js"],"names":["DEFAULT_HIGHLIGHT_COLOR","Uint8Array","DEFAULT_MODULE_OPTIONS","pickingSelectedColor","pickingHighlightColor","pickingActive","pickingAttribute","getUniforms","opts","uniforms","undefined","picking_uSelectedColorValid","selectedColor","slice","picking_uSelectedColor","color","Array","from","x","Number","isFinite","picking_uHighlightColor","picking_uActive","Boolean","picking_uAttribute","vs","fs","picking","name"],"mappings":";;;;;;AAEA,IAAMA,uBAAuB,GAAG,IAAIC,UAAJ,CAAe,CAAC,CAAD,EAAI,GAAJ,EAAS,GAAT,EAAc,GAAd,CAAf,CAAhC;AAEA,IAAMC,sBAAsB,GAAG;AAC7BC,EAAAA,oBAAoB,EAAE,IADO;AAE7BC,EAAAA,qBAAqB,EAAEJ,uBAFM;AAG7BK,EAAAA,aAAa,EAAE,KAHc;AAI7BC,EAAAA,gBAAgB,EAAE;AAJW,CAA/B;;AAQA,SAASC,WAAT,GAAoD;AAAA,MAA/BC,IAA+B,uEAAxBN,sBAAwB;AAClD,MAAMO,QAAQ,GAAG,EAAjB;;AACA,MAAID,IAAI,CAACL,oBAAL,KAA8BO,SAAlC,EAA6C;AAC3C,QAAI,CAACF,IAAI,CAACL,oBAAV,EAAgC;AAC9BM,MAAAA,QAAQ,CAACE,2BAAT,GAAuC,CAAvC;AACD,KAFD,MAEO;AACL,UAAMC,aAAa,GAAGJ,IAAI,CAACL,oBAAL,CAA0BU,KAA1B,CAAgC,CAAhC,EAAmC,CAAnC,CAAtB;AACAJ,MAAAA,QAAQ,CAACE,2BAAT,GAAuC,CAAvC;AACAF,MAAAA,QAAQ,CAACK,sBAAT,GAAkCF,aAAlC;AACD;AACF;;AACD,MAAIJ,IAAI,CAACJ,qBAAT,EAAgC;AAC9B,QAAMW,KAAK,GAAGC,KAAK,CAACC,IAAN,CAAWT,IAAI,CAACJ,qBAAhB,EAAuC,UAAAc,CAAC;AAAA,aAAIA,CAAC,GAAG,GAAR;AAAA,KAAxC,CAAd;;AACA,QAAI,CAACC,MAAM,CAACC,QAAP,CAAgBL,KAAK,CAAC,CAAD,CAArB,CAAL,EAAgC;AAC9BA,MAAAA,KAAK,CAAC,CAAD,CAAL,GAAW,CAAX;AACD;;AACDN,IAAAA,QAAQ,CAACY,uBAAT,GAAmCN,KAAnC;AACD;;AACD,MAAIP,IAAI,CAACH,aAAL,KAAuBK,SAA3B,EAAsC;AACpCD,IAAAA,QAAQ,CAACa,eAAT,GAA2BC,OAAO,CAACf,IAAI,CAACH,aAAN,CAAlC;AACAI,IAAAA,QAAQ,CAACe,kBAAT,GAA8BD,OAAO,CAACf,IAAI,CAACF,gBAAN,CAArC;AACD;;AACD,SAAOG,QAAP;AACD;;AAED,IAAMgB,EAAE,isCAAR;AAoDA,IAAMC,EAAE,uhCAAR;AAqDO,IAAMC,OAAO,GAAG;AACrBC,EAAAA,IAAI,EAAE,SADe;AAErBH,EAAAA,EAAE,EAAFA,EAFqB;AAGrBC,EAAAA,EAAE,EAAFA,EAHqB;AAIrBnB,EAAAA,WAAW,EAAXA;AAJqB,CAAhB","sourcesContent":["/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nconst DEFAULT_HIGHLIGHT_COLOR = new Uint8Array([0, 255, 255, 255]);\n\nconst DEFAULT_MODULE_OPTIONS = {\n pickingSelectedColor: null, // Set to a picking color to visually highlight that item\n pickingHighlightColor: DEFAULT_HIGHLIGHT_COLOR, // Color of visual highlight of \"selected\" item\n pickingActive: false, // Set to true when rendering to off-screen \"picking\" buffer\n pickingAttribute: false // Set to true when picking an attribute value instead of object index\n};\n\n/* eslint-disable camelcase */\nfunction getUniforms(opts = DEFAULT_MODULE_OPTIONS) {\n const uniforms = {};\n if (opts.pickingSelectedColor !== undefined) {\n if (!opts.pickingSelectedColor) {\n uniforms.picking_uSelectedColorValid = 0;\n } else {\n const selectedColor = opts.pickingSelectedColor.slice(0, 3);\n uniforms.picking_uSelectedColorValid = 1;\n uniforms.picking_uSelectedColor = selectedColor;\n }\n }\n if (opts.pickingHighlightColor) {\n const color = Array.from(opts.pickingHighlightColor, x => x / 255);\n if (!Number.isFinite(color[3])) {\n color[3] = 1;\n }\n uniforms.picking_uHighlightColor = color;\n }\n if (opts.pickingActive !== undefined) {\n uniforms.picking_uActive = Boolean(opts.pickingActive);\n uniforms.picking_uAttribute = Boolean(opts.pickingAttribute);\n }\n return uniforms;\n}\n\nconst vs = `\\\nuniform bool picking_uActive;\nuniform bool picking_uAttribute;\nuniform vec3 picking_uSelectedColor;\nuniform bool picking_uSelectedColorValid;\n\nout vec4 picking_vRGBcolor_Avalid;\n\nconst float COLOR_SCALE = 1. / 255.;\n\nbool picking_isColorValid(vec3 color) {\n return dot(color, vec3(1.0)) > 0.001;\n}\n\nbool isVertexPicked(vec3 vertexColor) {\n return\n picking_uSelectedColorValid &&\n !picking_isColorValid(abs(vertexColor - picking_uSelectedColor));\n}\n\nvoid picking_setPickingColor(vec3 pickingColor) {\n if (picking_uActive) {\n // Use alpha as the validity flag. If pickingColor is [0, 0, 0] fragment is non-pickable\n picking_vRGBcolor_Avalid.a = float(picking_isColorValid(pickingColor));\n\n if (!picking_uAttribute) {\n // Stores the picking color so that the fragment shader can render it during picking\n picking_vRGBcolor_Avalid.rgb = pickingColor * COLOR_SCALE;\n }\n } else {\n // Do the comparison with selected item color in vertex shader as it should mean fewer compares\n picking_vRGBcolor_Avalid.a = float(isVertexPicked(pickingColor));\n }\n}\n\nvoid picking_setPickingAttribute(float value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.r = value;\n }\n}\nvoid picking_setPickingAttribute(vec2 value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.rg = value;\n }\n}\nvoid picking_setPickingAttribute(vec3 value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.rgb = value;\n }\n}\n`;\n\nconst fs = `\\\nuniform bool picking_uActive;\nuniform vec3 picking_uSelectedColor;\nuniform vec4 picking_uHighlightColor;\n\nin vec4 picking_vRGBcolor_Avalid;\n\n/*\n * Returns highlight color if this item is selected.\n */\nvec4 picking_filterHighlightColor(vec4 color) {\n if (picking_uActive) {\n return color;\n }\n bool selected = bool(picking_vRGBcolor_Avalid.a);\n\n if (selected) {\n float highLightAlpha = picking_uHighlightColor.a;\n float blendedAlpha = highLightAlpha + color.a * (1.0 - highLightAlpha);\n float highLightRatio = highLightAlpha / blendedAlpha;\n\n vec3 blendedRGB = mix(color.rgb, picking_uHighlightColor.rgb, highLightRatio);\n return vec4(blendedRGB, blendedAlpha);\n } else {\n return color;\n }\n}\n\n/*\n * Returns picking color if picking enabled else unmodified argument.\n */\nvec4 picking_filterPickingColor(vec4 color) {\n if (picking_uActive) {\n if (picking_vRGBcolor_Avalid.a == 0.0) {\n discard;\n }\n return picking_vRGBcolor_Avalid;\n }\n return color;\n}\n\n/*\n * Returns picking color if picking is enabled if not\n * highlight color if this item is selected, otherwise unmodified argument.\n */\nvec4 picking_filterColor(vec4 color) {\n vec4 highightColor = picking_filterHighlightColor(color);\n return picking_filterPickingColor(highightColor);\n}\n\n`;\n\n/** @type {ShaderModule} */\nexport const picking = {\n name: 'picking',\n vs,\n fs,\n getUniforms\n};\n"],"file":"picking.js"}
1
+ {"version":3,"file":"picking.js","names":["DEFAULT_HIGHLIGHT_COLOR","Uint8Array","DEFAULT_MODULE_OPTIONS","pickingSelectedColor","pickingHighlightColor","pickingActive","pickingAttribute","getUniforms","opts","uniforms","undefined","picking_uSelectedColorValid","selectedColor","slice","picking_uSelectedColor","color","Array","from","x","Number","isFinite","picking_uHighlightColor","picking_uActive","Boolean","picking_uAttribute","vs","fs","picking","name"],"sources":["../../../../src/modules/picking/picking.js"],"sourcesContent":["/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nconst DEFAULT_HIGHLIGHT_COLOR = new Uint8Array([0, 255, 255, 255]);\n\nconst DEFAULT_MODULE_OPTIONS = {\n pickingSelectedColor: null, // Set to a picking color to visually highlight that item\n pickingHighlightColor: DEFAULT_HIGHLIGHT_COLOR, // Color of visual highlight of \"selected\" item\n pickingActive: false, // Set to true when rendering to off-screen \"picking\" buffer\n pickingAttribute: false // Set to true when picking an attribute value instead of object index\n};\n\n/* eslint-disable camelcase */\nfunction getUniforms(opts = DEFAULT_MODULE_OPTIONS) {\n const uniforms = {};\n if (opts.pickingSelectedColor !== undefined) {\n if (!opts.pickingSelectedColor) {\n uniforms.picking_uSelectedColorValid = 0;\n } else {\n const selectedColor = opts.pickingSelectedColor.slice(0, 3);\n uniforms.picking_uSelectedColorValid = 1;\n uniforms.picking_uSelectedColor = selectedColor;\n }\n }\n if (opts.pickingHighlightColor) {\n const color = Array.from(opts.pickingHighlightColor, x => x / 255);\n if (!Number.isFinite(color[3])) {\n color[3] = 1;\n }\n uniforms.picking_uHighlightColor = color;\n }\n if (opts.pickingActive !== undefined) {\n uniforms.picking_uActive = Boolean(opts.pickingActive);\n uniforms.picking_uAttribute = Boolean(opts.pickingAttribute);\n }\n return uniforms;\n}\n\nconst vs = `\\\nuniform bool picking_uActive;\nuniform bool picking_uAttribute;\nuniform vec3 picking_uSelectedColor;\nuniform bool picking_uSelectedColorValid;\n\nout vec4 picking_vRGBcolor_Avalid;\n\nconst float COLOR_SCALE = 1. / 255.;\n\nbool picking_isColorValid(vec3 color) {\n return dot(color, vec3(1.0)) > 0.001;\n}\n\nbool isVertexPicked(vec3 vertexColor) {\n return\n picking_uSelectedColorValid &&\n !picking_isColorValid(abs(vertexColor - picking_uSelectedColor));\n}\n\nvoid picking_setPickingColor(vec3 pickingColor) {\n if (picking_uActive) {\n // Use alpha as the validity flag. If pickingColor is [0, 0, 0] fragment is non-pickable\n picking_vRGBcolor_Avalid.a = float(picking_isColorValid(pickingColor));\n\n if (!picking_uAttribute) {\n // Stores the picking color so that the fragment shader can render it during picking\n picking_vRGBcolor_Avalid.rgb = pickingColor * COLOR_SCALE;\n }\n } else {\n // Do the comparison with selected item color in vertex shader as it should mean fewer compares\n picking_vRGBcolor_Avalid.a = float(isVertexPicked(pickingColor));\n }\n}\n\nvoid picking_setPickingAttribute(float value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.r = value;\n }\n}\nvoid picking_setPickingAttribute(vec2 value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.rg = value;\n }\n}\nvoid picking_setPickingAttribute(vec3 value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.rgb = value;\n }\n}\n`;\n\nconst fs = `\\\nuniform bool picking_uActive;\nuniform vec3 picking_uSelectedColor;\nuniform vec4 picking_uHighlightColor;\n\nin vec4 picking_vRGBcolor_Avalid;\n\n/*\n * Returns highlight color if this item is selected.\n */\nvec4 picking_filterHighlightColor(vec4 color) {\n if (picking_uActive) {\n return color;\n }\n bool selected = bool(picking_vRGBcolor_Avalid.a);\n\n if (selected) {\n float highLightAlpha = picking_uHighlightColor.a;\n float blendedAlpha = highLightAlpha + color.a * (1.0 - highLightAlpha);\n float highLightRatio = highLightAlpha / blendedAlpha;\n\n vec3 blendedRGB = mix(color.rgb, picking_uHighlightColor.rgb, highLightRatio);\n return vec4(blendedRGB, blendedAlpha);\n } else {\n return color;\n }\n}\n\n/*\n * Returns picking color if picking enabled else unmodified argument.\n */\nvec4 picking_filterPickingColor(vec4 color) {\n if (picking_uActive) {\n if (picking_vRGBcolor_Avalid.a == 0.0) {\n discard;\n }\n return picking_vRGBcolor_Avalid;\n }\n return color;\n}\n\n/*\n * Returns picking color if picking is enabled if not\n * highlight color if this item is selected, otherwise unmodified argument.\n */\nvec4 picking_filterColor(vec4 color) {\n vec4 highightColor = picking_filterHighlightColor(color);\n return picking_filterPickingColor(highightColor);\n}\n\n`;\n\n/** @type {ShaderModule} */\nexport const picking = {\n name: 'picking',\n vs,\n fs,\n getUniforms\n};\n"],"mappings":";;;;;;AAEA,IAAMA,uBAAuB,GAAG,IAAIC,UAAJ,CAAe,CAAC,CAAD,EAAI,GAAJ,EAAS,GAAT,EAAc,GAAd,CAAf,CAAhC;AAEA,IAAMC,sBAAsB,GAAG;EAC7BC,oBAAoB,EAAE,IADO;EAE7BC,qBAAqB,EAAEJ,uBAFM;EAG7BK,aAAa,EAAE,KAHc;EAI7BC,gBAAgB,EAAE;AAJW,CAA/B;;AAQA,SAASC,WAAT,GAAoD;EAAA,IAA/BC,IAA+B,uEAAxBN,sBAAwB;EAClD,IAAMO,QAAQ,GAAG,EAAjB;;EACA,IAAID,IAAI,CAACL,oBAAL,KAA8BO,SAAlC,EAA6C;IAC3C,IAAI,CAACF,IAAI,CAACL,oBAAV,EAAgC;MAC9BM,QAAQ,CAACE,2BAAT,GAAuC,CAAvC;IACD,CAFD,MAEO;MACL,IAAMC,aAAa,GAAGJ,IAAI,CAACL,oBAAL,CAA0BU,KAA1B,CAAgC,CAAhC,EAAmC,CAAnC,CAAtB;MACAJ,QAAQ,CAACE,2BAAT,GAAuC,CAAvC;MACAF,QAAQ,CAACK,sBAAT,GAAkCF,aAAlC;IACD;EACF;;EACD,IAAIJ,IAAI,CAACJ,qBAAT,EAAgC;IAC9B,IAAMW,KAAK,GAAGC,KAAK,CAACC,IAAN,CAAWT,IAAI,CAACJ,qBAAhB,EAAuC,UAAAc,CAAC;MAAA,OAAIA,CAAC,GAAG,GAAR;IAAA,CAAxC,CAAd;;IACA,IAAI,CAACC,MAAM,CAACC,QAAP,CAAgBL,KAAK,CAAC,CAAD,CAArB,CAAL,EAAgC;MAC9BA,KAAK,CAAC,CAAD,CAAL,GAAW,CAAX;IACD;;IACDN,QAAQ,CAACY,uBAAT,GAAmCN,KAAnC;EACD;;EACD,IAAIP,IAAI,CAACH,aAAL,KAAuBK,SAA3B,EAAsC;IACpCD,QAAQ,CAACa,eAAT,GAA2BC,OAAO,CAACf,IAAI,CAACH,aAAN,CAAlC;IACAI,QAAQ,CAACe,kBAAT,GAA8BD,OAAO,CAACf,IAAI,CAACF,gBAAN,CAArC;EACD;;EACD,OAAOG,QAAP;AACD;;AAED,IAAMgB,EAAE,isCAAR;AAoDA,IAAMC,EAAE,uhCAAR;AAqDO,IAAMC,OAAO,GAAG;EACrBC,IAAI,EAAE,SADe;EAErBH,EAAE,EAAFA,EAFqB;EAGrBC,EAAE,EAAFA,EAHqB;EAIrBnB,WAAW,EAAXA;AAJqB,CAAhB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/project/project.js"],"names":["IDENTITY_MATRIX","DEFAULT_MODULE_OPTIONS","modelMatrix","viewMatrix","projectionMatrix","cameraPositionWorld","getUniforms","opts","prevUniforms","uniforms","undefined","viewProjectionMatrix","Matrix4","multiplyRight","common","vs","fs","project","name"],"mappings":";;;;;;;AAEA;;AAEA,IAAMA,eAAe,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,CAA5B,EAA+B,CAA/B,EAAkC,CAAlC,EAAqC,CAArC,EAAwC,CAAxC,EAA2C,CAA3C,EAA8C,CAA9C,CAAxB;AAEA,IAAMC,sBAAsB,GAAG;AAC7BC,EAAAA,WAAW,EAAEF,eADgB;AAE7BG,EAAAA,UAAU,EAAEH,eAFiB;AAG7BI,EAAAA,gBAAgB,EAAEJ,eAHW;AAI7BK,EAAAA,mBAAmB,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP;AAJQ,CAA/B;;AAOA,SAASC,WAAT,GAAuE;AAAA,MAAlDC,IAAkD,uEAA3CN,sBAA2C;AAAA,MAAnBO,YAAmB,uEAAJ,EAAI;AAKrE,MAAMC,QAAQ,GAAG,EAAjB;;AACA,MAAIF,IAAI,CAACL,WAAL,KAAqBQ,SAAzB,EAAoC;AAClCD,IAAAA,QAAQ,CAACP,WAAT,GAAuBK,IAAI,CAACL,WAA5B;AACD;;AACD,MAAIK,IAAI,CAACJ,UAAL,KAAoBO,SAAxB,EAAmC;AACjCD,IAAAA,QAAQ,CAACN,UAAT,GAAsBI,IAAI,CAACJ,UAA3B;AACD;;AACD,MAAII,IAAI,CAACH,gBAAL,KAA0BM,SAA9B,EAAyC;AACvCD,IAAAA,QAAQ,CAACL,gBAAT,GAA4BG,IAAI,CAACH,gBAAjC;AACD;;AACD,MAAIG,IAAI,CAACF,mBAAL,KAA6BK,SAAjC,EAA4C;AAC1CD,IAAAA,QAAQ,CAACJ,mBAAT,GAA+BE,IAAI,CAACF,mBAApC;AACD;;AAGD,MAAIE,IAAI,CAACH,gBAAL,KAA0BM,SAA1B,IAAuCH,IAAI,CAACJ,UAAL,KAAoBO,SAA/D,EAA0E;AACxED,IAAAA,QAAQ,CAACE,oBAAT,GAAgC,IAAIC,aAAJ,CAAYL,IAAI,CAACH,gBAAjB,EAAmCS,aAAnC,CAC9BN,IAAI,CAACJ,UADyB,CAAhC;AAGD;;AAED,SAAOM,QAAP;AACD;;AAED,IAAMK,MAAM,iOAAZ;AAaA,IAAMC,EAAE,aACND,MADM,4uCAAR;AAwDA,IAAME,EAAE,eACNF,MADM,CAAR;AAKO,IAAMG,OAAO,GAAG;AACrBC,EAAAA,IAAI,EAAE,SADe;AAErBZ,EAAAA,WAAW,EAAXA,WAFqB;AAGrBS,EAAAA,EAAE,EAAFA,EAHqB;AAIrBC,EAAAA,EAAE,EAAFA;AAJqB,CAAhB","sourcesContent":["/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nimport {Matrix4} from '@math.gl/core';\n\nconst IDENTITY_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n\nconst DEFAULT_MODULE_OPTIONS = {\n modelMatrix: IDENTITY_MATRIX,\n viewMatrix: IDENTITY_MATRIX,\n projectionMatrix: IDENTITY_MATRIX,\n cameraPositionWorld: [0, 0, 0]\n};\n\nfunction getUniforms(opts = DEFAULT_MODULE_OPTIONS, prevUniforms = {}) {\n // const viewProjectionInverse = viewProjection.invert();\n // viewInverseMatrix: view.invert(),\n // viewProjectionInverseMatrix: viewProjectionInverse\n\n const uniforms = {};\n if (opts.modelMatrix !== undefined) {\n uniforms.modelMatrix = opts.modelMatrix;\n }\n if (opts.viewMatrix !== undefined) {\n uniforms.viewMatrix = opts.viewMatrix;\n }\n if (opts.projectionMatrix !== undefined) {\n uniforms.projectionMatrix = opts.projectionMatrix;\n }\n if (opts.cameraPositionWorld !== undefined) {\n uniforms.cameraPositionWorld = opts.cameraPositionWorld;\n }\n\n // COMPOSITE UNIFORMS\n if (opts.projectionMatrix !== undefined || opts.viewMatrix !== undefined) {\n uniforms.viewProjectionMatrix = new Matrix4(opts.projectionMatrix).multiplyRight(\n opts.viewMatrix\n );\n }\n\n return uniforms;\n}\n\nconst common = `\\\nvarying vec4 project_vPositionWorld;\nvarying vec3 project_vNormalWorld;\n\nvec4 project_getPosition_World() {\n return project_vPositionWorld;\n}\n\nvec3 project_getNormal_World() {\n return project_vNormalWorld;\n}\n`;\n\nconst vs = `\\\n${common}\n\n// Unprefixed uniforms\nuniform mat4 modelMatrix;\nuniform mat4 viewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewProjectionMatrix;\nuniform vec3 cameraPositionWorld;\n\nstruct World {\n vec3 position;\n vec3 normal;\n};\n\nWorld world;\n\nvoid project_setPosition(vec4 position) {\n project_vPositionWorld = position;\n}\n\nvoid project_setNormal(vec3 normal) {\n project_vNormalWorld = normal;\n}\n\nvoid project_setPositionAndNormal_World(vec3 position, vec3 normal) {\n world.position = position;\n world.normal = normal;\n}\n\nvoid project_setPositionAndNormal_Model(vec3 position, vec3 normal) {\n world.position = (modelMatrix * vec4(position, 1.)).xyz;\n world.normal = mat3(modelMatrix) * normal;\n}\n\nvec4 project_model_to_clipspace(vec4 position) {\n return viewProjectionMatrix * modelMatrix * position;\n}\n\nvec4 project_model_to_clipspace(vec3 position) {\n return viewProjectionMatrix * modelMatrix * vec4(position, 1.);\n}\n\nvec4 project_world_to_clipspace(vec3 position) {\n return viewProjectionMatrix * vec4(position, 1.);\n}\n\nvec4 project_view_to_clipspace(vec3 position) {\n return projectionMatrix * vec4(position, 1.);\n}\n\nvec4 project_to_clipspace(vec3 position) {\n return viewProjectionMatrix * vec4(position, 1.);\n}\n`;\n\nconst fs = `\n${common}\\\n`;\n\n/** @type {ShaderModule} */\nexport const project = {\n name: 'project',\n getUniforms,\n vs,\n fs\n};\n"],"file":"project.js"}
1
+ {"version":3,"file":"project.js","names":["IDENTITY_MATRIX","DEFAULT_MODULE_OPTIONS","modelMatrix","viewMatrix","projectionMatrix","cameraPositionWorld","getUniforms","opts","prevUniforms","uniforms","undefined","viewProjectionMatrix","Matrix4","multiplyRight","common","vs","fs","project","name"],"sources":["../../../../src/modules/project/project.js"],"sourcesContent":["/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nimport {Matrix4} from '@math.gl/core';\n\nconst IDENTITY_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n\nconst DEFAULT_MODULE_OPTIONS = {\n modelMatrix: IDENTITY_MATRIX,\n viewMatrix: IDENTITY_MATRIX,\n projectionMatrix: IDENTITY_MATRIX,\n cameraPositionWorld: [0, 0, 0]\n};\n\nfunction getUniforms(opts = DEFAULT_MODULE_OPTIONS, prevUniforms = {}) {\n // const viewProjectionInverse = viewProjection.invert();\n // viewInverseMatrix: view.invert(),\n // viewProjectionInverseMatrix: viewProjectionInverse\n\n const uniforms = {};\n if (opts.modelMatrix !== undefined) {\n uniforms.modelMatrix = opts.modelMatrix;\n }\n if (opts.viewMatrix !== undefined) {\n uniforms.viewMatrix = opts.viewMatrix;\n }\n if (opts.projectionMatrix !== undefined) {\n uniforms.projectionMatrix = opts.projectionMatrix;\n }\n if (opts.cameraPositionWorld !== undefined) {\n uniforms.cameraPositionWorld = opts.cameraPositionWorld;\n }\n\n // COMPOSITE UNIFORMS\n if (opts.projectionMatrix !== undefined || opts.viewMatrix !== undefined) {\n uniforms.viewProjectionMatrix = new Matrix4(opts.projectionMatrix).multiplyRight(\n opts.viewMatrix\n );\n }\n\n return uniforms;\n}\n\nconst common = `\\\nvarying vec4 project_vPositionWorld;\nvarying vec3 project_vNormalWorld;\n\nvec4 project_getPosition_World() {\n return project_vPositionWorld;\n}\n\nvec3 project_getNormal_World() {\n return project_vNormalWorld;\n}\n`;\n\nconst vs = `\\\n${common}\n\n// Unprefixed uniforms\nuniform mat4 modelMatrix;\nuniform mat4 viewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewProjectionMatrix;\nuniform vec3 cameraPositionWorld;\n\nstruct World {\n vec3 position;\n vec3 normal;\n};\n\nWorld world;\n\nvoid project_setPosition(vec4 position) {\n project_vPositionWorld = position;\n}\n\nvoid project_setNormal(vec3 normal) {\n project_vNormalWorld = normal;\n}\n\nvoid project_setPositionAndNormal_World(vec3 position, vec3 normal) {\n world.position = position;\n world.normal = normal;\n}\n\nvoid project_setPositionAndNormal_Model(vec3 position, vec3 normal) {\n world.position = (modelMatrix * vec4(position, 1.)).xyz;\n world.normal = mat3(modelMatrix) * normal;\n}\n\nvec4 project_model_to_clipspace(vec4 position) {\n return viewProjectionMatrix * modelMatrix * position;\n}\n\nvec4 project_model_to_clipspace(vec3 position) {\n return viewProjectionMatrix * modelMatrix * vec4(position, 1.);\n}\n\nvec4 project_world_to_clipspace(vec3 position) {\n return viewProjectionMatrix * vec4(position, 1.);\n}\n\nvec4 project_view_to_clipspace(vec3 position) {\n return projectionMatrix * vec4(position, 1.);\n}\n\nvec4 project_to_clipspace(vec3 position) {\n return viewProjectionMatrix * vec4(position, 1.);\n}\n`;\n\nconst fs = `\n${common}\\\n`;\n\n/** @type {ShaderModule} */\nexport const project = {\n name: 'project',\n getUniforms,\n vs,\n fs\n};\n"],"mappings":";;;;;;;AAEA;;AAEA,IAAMA,eAAe,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,CAA5B,EAA+B,CAA/B,EAAkC,CAAlC,EAAqC,CAArC,EAAwC,CAAxC,EAA2C,CAA3C,EAA8C,CAA9C,CAAxB;AAEA,IAAMC,sBAAsB,GAAG;EAC7BC,WAAW,EAAEF,eADgB;EAE7BG,UAAU,EAAEH,eAFiB;EAG7BI,gBAAgB,EAAEJ,eAHW;EAI7BK,mBAAmB,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP;AAJQ,CAA/B;;AAOA,SAASC,WAAT,GAAuE;EAAA,IAAlDC,IAAkD,uEAA3CN,sBAA2C;EAAA,IAAnBO,YAAmB,uEAAJ,EAAI;EAKrE,IAAMC,QAAQ,GAAG,EAAjB;;EACA,IAAIF,IAAI,CAACL,WAAL,KAAqBQ,SAAzB,EAAoC;IAClCD,QAAQ,CAACP,WAAT,GAAuBK,IAAI,CAACL,WAA5B;EACD;;EACD,IAAIK,IAAI,CAACJ,UAAL,KAAoBO,SAAxB,EAAmC;IACjCD,QAAQ,CAACN,UAAT,GAAsBI,IAAI,CAACJ,UAA3B;EACD;;EACD,IAAII,IAAI,CAACH,gBAAL,KAA0BM,SAA9B,EAAyC;IACvCD,QAAQ,CAACL,gBAAT,GAA4BG,IAAI,CAACH,gBAAjC;EACD;;EACD,IAAIG,IAAI,CAACF,mBAAL,KAA6BK,SAAjC,EAA4C;IAC1CD,QAAQ,CAACJ,mBAAT,GAA+BE,IAAI,CAACF,mBAApC;EACD;;EAGD,IAAIE,IAAI,CAACH,gBAAL,KAA0BM,SAA1B,IAAuCH,IAAI,CAACJ,UAAL,KAAoBO,SAA/D,EAA0E;IACxED,QAAQ,CAACE,oBAAT,GAAgC,IAAIC,aAAJ,CAAYL,IAAI,CAACH,gBAAjB,EAAmCS,aAAnC,CAC9BN,IAAI,CAACJ,UADyB,CAAhC;EAGD;;EAED,OAAOM,QAAP;AACD;;AAED,IAAMK,MAAM,iOAAZ;AAaA,IAAMC,EAAE,aACND,MADM,4uCAAR;AAwDA,IAAME,EAAE,eACNF,MADM,CAAR;AAKO,IAAMG,OAAO,GAAG;EACrBC,IAAI,EAAE,SADe;EAErBZ,WAAW,EAAXA,WAFqB;EAGrBS,EAAE,EAAFA,EAHqB;EAIrBC,EAAE,EAAFA;AAJqB,CAAhB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/transform/transform.js"],"names":["vs","transform","name","fs"],"mappings":";;;;;;AAEA,IAAMA,EAAE,s7BAAR;AA0CO,IAAMC,SAAS,GAAG;AACvBC,EAAAA,IAAI,EAAE,WADiB;AAEvBF,EAAAA,EAAE,EAAFA,EAFuB;AAGvBG,EAAAA,EAAE,EAAE;AAHmB,CAAlB","sourcesContent":["/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nconst vs = `\\\nattribute float transform_elementID;\n\n// returns half of pixel size, used to move the pixel position to center of the pixel.\nvec2 transform_getPixelSizeHalf(vec2 size) {\n return vec2(1.) / (2. * size);\n}\n\n// returns current elements pixel indeces [x, y],\n// where x ranges in [0 to texSize-1] and y ranges in [0 to texSize-1]\nvec2 transform_getPixelIndices(vec2 texSize, vec2 pixelSizeHalf) {\n // Add safe offset (half of pixel height) before doing floor\n float yIndex = floor((transform_elementID / texSize[0]) + pixelSizeHalf[1]);\n float xIndex = transform_elementID - (yIndex * texSize[0]);\n return vec2(xIndex, yIndex);\n}\n\n// returns current elementID's texture co-ordianate\nvec2 transform_getTexCoord(vec2 size) {\n vec2 pixelSizeHalf = transform_getPixelSizeHalf(size);\n vec2 indices = transform_getPixelIndices(size, pixelSizeHalf);\n vec2 coord = indices / size + pixelSizeHalf;\n return coord;\n}\n\n// returns current elementID's position\nvec2 transform_getPos(vec2 size) {\n vec2 texCoord = transform_getTexCoord(size);\n // Change from [0 1] range to [-1 1]\n vec2 pos = (texCoord * (2.0, 2.0)) - (1., 1.);\n return pos;\n}\n\n// returns current elementID's pixel value\nvec4 transform_getInput(sampler2D texSampler, vec2 size) {\n vec2 texCoord = transform_getTexCoord(size);\n vec4 textureColor = texture2D(texSampler, texCoord);\n return textureColor;\n}\n`;\n\n/** @type {ShaderModule} */\nexport const transform = {\n name: 'transform',\n vs,\n fs: null\n};\n"],"file":"transform.js"}
1
+ {"version":3,"file":"transform.js","names":["vs","transform","name","fs"],"sources":["../../../../src/modules/transform/transform.js"],"sourcesContent":["/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nconst vs = `\\\nattribute float transform_elementID;\n\n// returns half of pixel size, used to move the pixel position to center of the pixel.\nvec2 transform_getPixelSizeHalf(vec2 size) {\n return vec2(1.) / (2. * size);\n}\n\n// returns current elements pixel indeces [x, y],\n// where x ranges in [0 to texSize-1] and y ranges in [0 to texSize-1]\nvec2 transform_getPixelIndices(vec2 texSize, vec2 pixelSizeHalf) {\n // Add safe offset (half of pixel height) before doing floor\n float yIndex = floor((transform_elementID / texSize[0]) + pixelSizeHalf[1]);\n float xIndex = transform_elementID - (yIndex * texSize[0]);\n return vec2(xIndex, yIndex);\n}\n\n// returns current elementID's texture co-ordianate\nvec2 transform_getTexCoord(vec2 size) {\n vec2 pixelSizeHalf = transform_getPixelSizeHalf(size);\n vec2 indices = transform_getPixelIndices(size, pixelSizeHalf);\n vec2 coord = indices / size + pixelSizeHalf;\n return coord;\n}\n\n// returns current elementID's position\nvec2 transform_getPos(vec2 size) {\n vec2 texCoord = transform_getTexCoord(size);\n // Change from [0 1] range to [-1 1]\n vec2 pos = (texCoord * (2.0, 2.0)) - (1., 1.);\n return pos;\n}\n\n// returns current elementID's pixel value\nvec4 transform_getInput(sampler2D texSampler, vec2 size) {\n vec2 texCoord = transform_getTexCoord(size);\n vec4 textureColor = texture2D(texSampler, texCoord);\n return textureColor;\n}\n`;\n\n/** @type {ShaderModule} */\nexport const transform = {\n name: 'transform',\n vs,\n fs: null\n};\n"],"mappings":";;;;;;AAEA,IAAMA,EAAE,s7BAAR;AA0CO,IAAMC,SAAS,GAAG;EACvBC,IAAI,EAAE,WADiB;EAEvBF,EAAE,EAAFA,EAFuB;EAGvBG,EAAE,EAAE;AAHmB,CAAlB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/utils/random.js"],"names":["fs","random","name"],"mappings":";;;;;;AAEA,IAAMA,EAAE,+HAAR;AAOO,IAAMC,MAAM,GAAG;AACpBC,EAAAA,IAAI,EAAE,QADc;AAEpBF,EAAAA,EAAE,EAAFA;AAFoB,CAAf","sourcesContent":["/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nconst fs = `\\\nfloat random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n}\n`;\n\nexport const random = {\n name: 'random',\n fs\n};\n"],"file":"random.js"}
1
+ {"version":3,"file":"random.js","names":["fs","random","name"],"sources":["../../../../src/modules/utils/random.js"],"sourcesContent":["/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nconst fs = `\\\nfloat random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n}\n`;\n\nexport const random = {\n name: 'random',\n fs\n};\n"],"mappings":";;;;;;AAEA,IAAMA,EAAE,+HAAR;AAOO,IAAMC,MAAM,GAAG;EACpBC,IAAI,EAAE,QADc;EAEpBF,EAAE,EAAFA;AAFoB,CAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/assert.js"],"names":["assert","condition","message","Error"],"mappings":";;;;;;;AAEe,SAASA,MAAT,CAAgBC,SAAhB,EAA2BC,OAA3B,EAAoC;AACjD,MAAI,CAACD,SAAL,EAAgB;AACd,UAAM,IAAIE,KAAJ,CAAUD,OAAO,IAAI,gCAArB,CAAN;AACD;AACF","sourcesContent":["// Recommendation is to ignore message but current test suite checks agains the\n// message so keep it for now.\nexport default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'shadertools: assertion failed.');\n }\n}\n"],"file":"assert.js"}
1
+ {"version":3,"file":"assert.js","names":["assert","condition","message","Error"],"sources":["../../../src/utils/assert.js"],"sourcesContent":["// Recommendation is to ignore message but current test suite checks agains the\n// message so keep it for now.\nexport default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'shadertools: assertion failed.');\n }\n}\n"],"mappings":";;;;;;;AAEe,SAASA,MAAT,CAAgBC,SAAhB,EAA2BC,OAA3B,EAAoC;EACjD,IAAI,CAACD,SAAL,EAAgB;IACd,MAAM,IAAIE,KAAJ,CAAUD,OAAO,IAAI,gCAArB,CAAN;EACD;AACF"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA","sourcesContent":["export {default as assert} from './assert';\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/utils/index.js"],"sourcesContent":["export {default as assert} from './assert';\n"],"mappings":";;;;;;;;;;;;;;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/is-old-ie.js"],"names":["isOldIE","opts","navigator","window","userAgent","isMSIE","indexOf","isTrident"],"mappings":";;;;;;;AACe,SAASA,OAAT,GAA4B;AAAA,MAAXC,IAAW,uEAAJ,EAAI;AACzC,MAAMC,SAAS,GAAG,OAAOC,MAAP,KAAkB,WAAlB,GAAgCA,MAAM,CAACD,SAAP,IAAoB,EAApD,GAAyD,EAA3E;AAEA,MAAME,SAAS,GAAGH,IAAI,CAACG,SAAL,IAAkBF,SAAS,CAACE,SAA5B,IAAyC,EAA3D;AAGA,MAAMC,MAAM,GAAGD,SAAS,CAACE,OAAV,CAAkB,OAAlB,MAA+B,CAAC,CAA/C;AACA,MAAMC,SAAS,GAAGH,SAAS,CAACE,OAAV,CAAkB,UAAlB,MAAkC,CAAC,CAArD;AACA,SAAOD,MAAM,IAAIE,SAAjB;AACD","sourcesContent":["// opts allows user agent to be overridden for testing\nexport default function isOldIE(opts = {}) {\n const navigator = typeof window !== 'undefined' ? window.navigator || {} : {};\n // @ts-ignore\n const userAgent = opts.userAgent || navigator.userAgent || '';\n // We only care about older versions of IE (IE 11 and below). Newer versions of IE (Edge)\n // have much better web standards support.\n const isMSIE = userAgent.indexOf('MSIE ') !== -1;\n const isTrident = userAgent.indexOf('Trident/') !== -1;\n return isMSIE || isTrident;\n}\n"],"file":"is-old-ie.js"}
1
+ {"version":3,"file":"is-old-ie.js","names":["isOldIE","opts","navigator","window","userAgent","isMSIE","indexOf","isTrident"],"sources":["../../../src/utils/is-old-ie.js"],"sourcesContent":["// opts allows user agent to be overridden for testing\nexport default function isOldIE(opts = {}) {\n const navigator = typeof window !== 'undefined' ? window.navigator || {} : {};\n // @ts-ignore\n const userAgent = opts.userAgent || navigator.userAgent || '';\n // We only care about older versions of IE (IE 11 and below). Newer versions of IE (Edge)\n // have much better web standards support.\n const isMSIE = userAgent.indexOf('MSIE ') !== -1;\n const isTrident = userAgent.indexOf('Trident/') !== -1;\n return isMSIE || isTrident;\n}\n"],"mappings":";;;;;;;AACe,SAASA,OAAT,GAA4B;EAAA,IAAXC,IAAW,uEAAJ,EAAI;EACzC,IAAMC,SAAS,GAAG,OAAOC,MAAP,KAAkB,WAAlB,GAAgCA,MAAM,CAACD,SAAP,IAAoB,EAApD,GAAyD,EAA3E;EAEA,IAAME,SAAS,GAAGH,IAAI,CAACG,SAAL,IAAkBF,SAAS,CAACE,SAA5B,IAAyC,EAA3D;EAGA,IAAMC,MAAM,GAAGD,SAAS,CAACE,OAAV,CAAkB,OAAlB,MAA+B,CAAC,CAA/C;EACA,IAAMC,SAAS,GAAGH,SAAS,CAACE,OAAV,CAAkB,UAAlB,MAAkC,CAAC,CAArD;EACA,OAAOD,MAAM,IAAIE,SAAjB;AACD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/shader-utils.js"],"names":["FS100","FS_GLES","FS300","getQualifierDetails","line","qualifiers","Array","isArray","words","replace","split","qualifier","type","definition","includes","name","getPassthroughFS","options","version","input","inputType","output","outputValue","convertToVec4","typeToChannelSuffix","typeToChannelCount","variable"],"mappings":"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","sourcesContent":["import {assert} from '../utils';\nconst FS100 = `void main() {gl_FragColor = vec4(0);}`;\nconst FS_GLES = `\\\nout vec4 transform_output;\nvoid main() {\n transform_output = vec4(0);\n}`;\nconst FS300 = `#version 300 es\\n${FS_GLES}`;\n\n// Prase given glsl line and return qualifier details or null\nexport function getQualifierDetails(line, qualifiers) {\n qualifiers = Array.isArray(qualifiers) ? qualifiers : [qualifiers];\n const words = line.replace(/^\\s+/, '').split(/\\s+/);\n // TODO add support for precession qualifiers (highp, mediump and lowp)\n const [qualifier, type, definition] = words;\n if (!qualifiers.includes(qualifier) || !type || !definition) {\n return null;\n }\n const name = definition.split(';')[0];\n return {qualifier, type, name};\n}\n\n// Given the shader version, input and output variable names,\n// builds and return a pass through fragment shader.\nexport function getPassthroughFS(options = {}) {\n const {version = 100, input, inputType, output} = options;\n if (!input) {\n if (version === 300) {\n // Fast-path for WebGL 2.0\n return FS300;\n } else if (version > 300) {\n // Use the supplied version for OpenGL/ES 3.2+\n return `#version ${version}\\n${FS_GLES}`;\n }\n // Fast-path for WebGL 1.0\n return FS100;\n }\n const outputValue = convertToVec4(input, inputType);\n if (version >= 300) {\n // If version is 300, assume WebGL 2.0\n return `\\\n#version ${version} ${version === 300 ? 'es' : ''}\nin ${inputType} ${input};\nout vec4 ${output};\nvoid main() {\n ${output} = ${outputValue};\n}`;\n }\n // WebGL 1.0\n return `\\\nvarying ${inputType} ${input};\nvoid main() {\n gl_FragColor = ${outputValue};\n}`;\n}\n\n// convert glsl type to suffix\nexport function typeToChannelSuffix(type) {\n switch (type) {\n case 'float':\n return 'x';\n case 'vec2':\n return 'xy';\n case 'vec3':\n return 'xyz';\n case 'vec4':\n return 'xyzw';\n default:\n assert(false);\n return null;\n }\n}\n\n// convert glsl type to channel count\nexport function typeToChannelCount(type) {\n switch (type) {\n case 'float':\n return 1;\n case 'vec2':\n return 2;\n case 'vec3':\n return 3;\n case 'vec4':\n return 4;\n default:\n assert(false);\n return null;\n }\n}\n\n// Returns glsl instruction for converting to vec4\nexport function convertToVec4(variable, type) {\n switch (type) {\n case 'float':\n return `vec4(${variable}, 0.0, 0.0, 1.0)`;\n case 'vec2':\n return `vec4(${variable}, 0.0, 1.0)`;\n case 'vec3':\n return `vec4(${variable}, 1.0)`;\n case 'vec4':\n return variable;\n default:\n assert(false);\n return null;\n }\n}\n"],"file":"shader-utils.js"}
1
+ {"version":3,"file":"shader-utils.js","names":["FS100","FS_GLES","FS300","getQualifierDetails","line","qualifiers","Array","isArray","words","replace","split","qualifier","type","definition","includes","name","getPassthroughFS","options","version","input","inputType","output","outputValue","convertToVec4","typeToChannelSuffix","assert","typeToChannelCount","variable"],"sources":["../../../src/utils/shader-utils.js"],"sourcesContent":["import {assert} from '../utils';\nconst FS100 = `void main() {gl_FragColor = vec4(0);}`;\nconst FS_GLES = `\\\nout vec4 transform_output;\nvoid main() {\n transform_output = vec4(0);\n}`;\nconst FS300 = `#version 300 es\\n${FS_GLES}`;\n\n// Prase given glsl line and return qualifier details or null\nexport function getQualifierDetails(line, qualifiers) {\n qualifiers = Array.isArray(qualifiers) ? qualifiers : [qualifiers];\n const words = line.replace(/^\\s+/, '').split(/\\s+/);\n // TODO add support for precession qualifiers (highp, mediump and lowp)\n const [qualifier, type, definition] = words;\n if (!qualifiers.includes(qualifier) || !type || !definition) {\n return null;\n }\n const name = definition.split(';')[0];\n return {qualifier, type, name};\n}\n\n// Given the shader version, input and output variable names,\n// builds and return a pass through fragment shader.\nexport function getPassthroughFS(options = {}) {\n const {version = 100, input, inputType, output} = options;\n if (!input) {\n if (version === 300) {\n // Fast-path for WebGL 2.0\n return FS300;\n } else if (version > 300) {\n // Use the supplied version for OpenGL/ES 3.2+\n return `#version ${version}\\n${FS_GLES}`;\n }\n // Fast-path for WebGL 1.0\n return FS100;\n }\n const outputValue = convertToVec4(input, inputType);\n if (version >= 300) {\n // If version is 300, assume WebGL 2.0\n return `\\\n#version ${version} ${version === 300 ? 'es' : ''}\nin ${inputType} ${input};\nout vec4 ${output};\nvoid main() {\n ${output} = ${outputValue};\n}`;\n }\n // WebGL 1.0\n return `\\\nvarying ${inputType} ${input};\nvoid main() {\n gl_FragColor = ${outputValue};\n}`;\n}\n\n// convert glsl type to suffix\nexport function typeToChannelSuffix(type) {\n switch (type) {\n case 'float':\n return 'x';\n case 'vec2':\n return 'xy';\n case 'vec3':\n return 'xyz';\n case 'vec4':\n return 'xyzw';\n default:\n assert(false);\n return null;\n }\n}\n\n// convert glsl type to channel count\nexport function typeToChannelCount(type) {\n switch (type) {\n case 'float':\n return 1;\n case 'vec2':\n return 2;\n case 'vec3':\n return 3;\n case 'vec4':\n return 4;\n default:\n assert(false);\n return null;\n }\n}\n\n// Returns glsl instruction for converting to vec4\nexport function convertToVec4(variable, type) {\n switch (type) {\n case 'float':\n return `vec4(${variable}, 0.0, 0.0, 1.0)`;\n case 'vec2':\n return `vec4(${variable}, 0.0, 1.0)`;\n case 'vec3':\n return `vec4(${variable}, 1.0)`;\n case 'vec4':\n return variable;\n default:\n assert(false);\n return null;\n }\n}\n"],"mappings":"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"}
@@ -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 (\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
+ {"version":3,"file":"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","assert","isOldIE","extensionName","behavior","source","shader","createShader","shaderSource","compileShader","canCompile","getShaderParameter","deleteShader","getFeature","value","hasFeatures","features","Array","isArray","every"],"sources":["../../../src/utils/webgl-info.js"],"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"],"mappings":"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"}
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","luma","module","exports","Object","assign"],"sources":["../../src/bundle.js"],"sourcesContent":["const moduleExports = require('./index');\n\n// @ts-ignore\nglobalThis.luma = globalThis.luma || {};\n// @ts-ignore\nmodule.exports = Object.assign(globalThis.luma, moduleExports);\n"],"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.js"],"names":["assembleShaders","combineInjects","normalizeShaderModule","getQualifierDetails","getPassthroughFS","typeToChannelSuffix","typeToChannelCount","convertToVec4"],"mappings":"AAGA,SAAQA,eAAR,QAA8B,wBAA9B;AAGA,SAAQC,cAAR,QAA6B,qBAA7B;AACA,SAAQC,qBAAR,QAAoC,qBAApC;AAGA,SACEC,mBADF,EAEEC,gBAFF,EAGEC,mBAHF,EAIEC,kBAJF,EAKEC,aALF,QAMO,sBANP;AASA,cAAc,WAAd","sourcesContent":["// shadertools exports\n\n// DOCUMENTED APIS\nexport {assembleShaders} from './lib/assemble-shaders';\n\n// HELPERS\nexport {combineInjects} from './lib/inject-shader';\nexport {normalizeShaderModule} from './lib/shader-module';\n\n// UTILS\nexport {\n getQualifierDetails,\n getPassthroughFS,\n typeToChannelSuffix,\n typeToChannelCount,\n convertToVec4\n} from './utils/shader-utils';\n\n// SHADER MODULES\nexport * from './modules';\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["assembleShaders","combineInjects","normalizeShaderModule","getQualifierDetails","getPassthroughFS","typeToChannelSuffix","typeToChannelCount","convertToVec4"],"sources":["../../src/index.js"],"sourcesContent":["// shadertools exports\n\n// DOCUMENTED APIS\nexport {assembleShaders} from './lib/assemble-shaders';\n\n// HELPERS\nexport {combineInjects} from './lib/inject-shader';\nexport {normalizeShaderModule} from './lib/shader-module';\n\n// UTILS\nexport {\n getQualifierDetails,\n getPassthroughFS,\n typeToChannelSuffix,\n typeToChannelCount,\n convertToVec4\n} from './utils/shader-utils';\n\n// SHADER MODULES\nexport * from './modules';\n"],"mappings":"AAGA,SAAQA,eAAR,QAA8B,wBAA9B;AAGA,SAAQC,cAAR,QAA6B,qBAA7B;AACA,SAAQC,qBAAR,QAAoC,qBAApC;AAGA,SACEC,mBADF,EAEEC,gBAFF,EAGEC,mBAHF,EAIEC,kBAJF,EAKEC,aALF,QAMO,sBANP;AASA,cAAc,WAAd"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/assemble-shaders.js"],"names":["VERTEX_SHADER","FRAGMENT_SHADER","resolveModules","getPlatformShaderDefines","getVersionDefines","injectShader","DECLARATION_INJECT_MARKER","transpileShader","assert","INJECT_SHADER_DECLARATIONS","SHADER_TYPE","FRAGMENT_SHADER_PROLOGUE","assembleShaders","gl","opts","vs","fs","modules","assembleShader","Object","assign","source","type","getUniforms","assembleGetUniforms","id","defines","hookFunctions","inject","transpileToGLSL100","prologue","log","isVertex","sourceLines","split","glslVersion","versionLine","coreSource","indexOf","slice","join","allDefines","forEach","module","getDefines","assembledSource","getShaderName","getShaderType","getApplicationDefines","hookFunctionMap","normalizeHookFunctions","hookInjections","declInjections","mainInjections","key","injection","order","match","hash","name","checkDeprecations","moduleSource","getModuleSource","injections","injectionType","push","getHookFunctions","uniforms","moduleUniforms","toUpperCase","injectShaderName","count","sourceText","define","value","Number","isFinite","result","hookName","hookFunction","signature","header","sort","a","b","footer","hook","trim","stage","replace"],"mappings":"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","sourcesContent":["import {VERTEX_SHADER, FRAGMENT_SHADER} from './constants';\nimport {resolveModules} from './resolve-modules';\nimport {getPlatformShaderDefines, getVersionDefines} from './platform-defines';\nimport injectShader, {DECLARATION_INJECT_MARKER} from './inject-shader';\nimport transpileShader from './transpile-shader';\nimport {assert} from '../utils';\n\nconst INJECT_SHADER_DECLARATIONS = `\\n\\n${DECLARATION_INJECT_MARKER}\\n\\n`;\n\nconst SHADER_TYPE = {\n [VERTEX_SHADER]: 'vertex',\n [FRAGMENT_SHADER]: 'fragment'\n};\n\n// Precision prologue to inject before functions are injected in shader\n// TODO - extract any existing prologue in the fragment source and move it up...\nconst FRAGMENT_SHADER_PROLOGUE = `\\\nprecision highp float;\n\n`;\n\n// Inject a list of modules\nexport function assembleShaders(gl, opts) {\n const {vs, fs} = opts;\n const modules = resolveModules(opts.modules || []);\n return {\n gl,\n vs: assembleShader(gl, Object.assign({}, opts, {source: vs, type: VERTEX_SHADER, modules})),\n fs: assembleShader(gl, Object.assign({}, opts, {source: fs, type: FRAGMENT_SHADER, modules})),\n getUniforms: assembleGetUniforms(modules)\n };\n}\n\n// Pulls together complete source code for either a vertex or a fragment shader\n// adding prologues, requested module chunks, and any final injections.\nfunction assembleShader(\n gl,\n {\n id,\n source,\n type,\n modules,\n defines = {},\n hookFunctions = [],\n inject = {},\n transpileToGLSL100 = false,\n prologue = true,\n log\n }\n) {\n assert(typeof source === 'string', 'shader source must be a string');\n\n const isVertex = type === VERTEX_SHADER;\n\n const sourceLines = source.split('\\n');\n let glslVersion = 100;\n let versionLine = '';\n let coreSource = source;\n // Extract any version directive string from source.\n // TODO : keep all pre-processor statements at the begining of the shader.\n if (sourceLines[0].indexOf('#version ') === 0) {\n glslVersion = 300; // TODO - regexp that matches actual version number\n versionLine = sourceLines[0];\n coreSource = sourceLines.slice(1).join('\\n');\n } else {\n versionLine = `#version ${glslVersion}`;\n }\n\n // Combine Module and Application Defines\n const allDefines = {};\n modules.forEach(module => {\n Object.assign(allDefines, module.getDefines());\n });\n Object.assign(allDefines, defines);\n\n // Add platform defines (use these to work around platform-specific bugs and limitations)\n // Add common defines (GLSL version compatibility, feature detection)\n // Add precision declaration for fragment shaders\n let assembledSource = prologue\n ? `\\\n${versionLine}\n${getShaderName({id, source, type})}\n${getShaderType({type})}\n${getPlatformShaderDefines(gl)}\n${getVersionDefines(gl, glslVersion, !isVertex)}\n${getApplicationDefines(allDefines)}\n${isVertex ? '' : FRAGMENT_SHADER_PROLOGUE}\n`\n : `${versionLine}\n`;\n\n const hookFunctionMap = normalizeHookFunctions(hookFunctions);\n\n // Add source of dependent modules in resolved order\n const hookInjections = {};\n const declInjections = {};\n const mainInjections = {};\n\n for (const key in inject) {\n const injection =\n typeof inject[key] === 'string' ? {injection: inject[key], order: 0} : inject[key];\n const match = key.match(/^(v|f)s:(#)?([\\w-]+)$/);\n if (match) {\n const hash = match[2];\n const name = match[3];\n if (hash) {\n if (name === 'decl') {\n declInjections[key] = [injection];\n } else {\n mainInjections[key] = [injection];\n }\n } else {\n hookInjections[key] = [injection];\n }\n } else {\n // Regex injection\n mainInjections[key] = [injection];\n }\n }\n\n for (const module of modules) {\n if (log) {\n module.checkDeprecations(coreSource, log);\n }\n const moduleSource = module.getModuleSource(type, glslVersion);\n // Add the module source, and a #define that declares it presence\n assembledSource += moduleSource;\n\n const injections = module.injections[type];\n for (const key in injections) {\n const match = key.match(/^(v|f)s:#([\\w-]+)$/);\n if (match) {\n const name = match[2];\n const injectionType = name === 'decl' ? declInjections : mainInjections;\n injectionType[key] = injectionType[key] || [];\n injectionType[key].push(injections[key]);\n } else {\n hookInjections[key] = hookInjections[key] || [];\n hookInjections[key].push(injections[key]);\n }\n }\n }\n\n // For injectShader\n assembledSource += INJECT_SHADER_DECLARATIONS;\n\n assembledSource = injectShader(assembledSource, type, declInjections);\n\n assembledSource += getHookFunctions(hookFunctionMap[type], hookInjections);\n\n // Add the version directive and actual source of this shader\n assembledSource += coreSource;\n\n // Apply any requested shader injections\n assembledSource = injectShader(assembledSource, type, mainInjections);\n\n assembledSource = transpileShader(\n assembledSource,\n transpileToGLSL100 ? 100 : glslVersion,\n isVertex\n );\n\n return assembledSource;\n}\n\n// Returns a combined `getUniforms` covering the options for all the modules,\n// the created function will pass on options to the inidividual `getUniforms`\n// function of each shader module and combine the results into one object that\n// can be passed to setUniforms.\nfunction assembleGetUniforms(modules) {\n return function getUniforms(opts) {\n const uniforms = {};\n for (const module of modules) {\n // `modules` is already sorted by dependency level. This guarantees that\n // modules have access to the uniforms that are generated by their dependencies.\n const moduleUniforms = module.getUniforms(opts, uniforms);\n Object.assign(uniforms, moduleUniforms);\n }\n return uniforms;\n };\n}\n\nfunction getShaderType({type}) {\n return `\n#define SHADER_TYPE_${SHADER_TYPE[type].toUpperCase()}\n`;\n}\n\n// Generate \"glslify-compatible\" SHADER_NAME defines\n// These are understood by the GLSL error parsing function\n// If id is provided and no SHADER_NAME constant is present in source, create one\nfunction getShaderName({id, source, type}) {\n const injectShaderName = id && typeof id === 'string' && source.indexOf('SHADER_NAME') === -1;\n return injectShaderName\n ? `\n#define SHADER_NAME ${id}_${SHADER_TYPE[type]}\n\n`\n : '';\n}\n\n// Generates application defines from an object\nfunction getApplicationDefines(defines = {}) {\n let count = 0;\n let sourceText = '';\n for (const define in defines) {\n if (count === 0) {\n sourceText += '\\n// APPLICATION DEFINES\\n';\n }\n count++;\n\n const value = defines[define];\n if (value || Number.isFinite(value)) {\n sourceText += `#define ${define.toUpperCase()} ${defines[define]}\\n`;\n }\n }\n if (count === 0) {\n sourceText += '\\n';\n }\n return sourceText;\n}\n\nfunction getHookFunctions(hookFunctions, hookInjections) {\n let result = '';\n for (const hookName in hookFunctions) {\n const hookFunction = hookFunctions[hookName];\n result += `void ${hookFunction.signature} {\\n`;\n if (hookFunction.header) {\n result += ` ${hookFunction.header}`;\n }\n if (hookInjections[hookName]) {\n const injections = hookInjections[hookName];\n injections.sort((a, b) => a.order - b.order);\n for (const injection of injections) {\n result += ` ${injection.injection}\\n`;\n }\n }\n if (hookFunction.footer) {\n result += ` ${hookFunction.footer}`;\n }\n result += '}\\n';\n }\n\n return result;\n}\n\nfunction normalizeHookFunctions(hookFunctions) {\n const result = {\n vs: {},\n fs: {}\n };\n\n hookFunctions.forEach(hook => {\n let opts;\n if (typeof hook !== 'string') {\n opts = hook;\n hook = opts.hook;\n } else {\n opts = {};\n }\n hook = hook.trim();\n const [stage, signature] = hook.split(':');\n const name = hook.replace(/\\(.+/, '');\n result[stage][name] = Object.assign(opts, {signature});\n });\n\n return result;\n}\n"],"file":"assemble-shaders.js"}
1
+ {"version":3,"file":"assemble-shaders.js","names":["VERTEX_SHADER","FRAGMENT_SHADER","resolveModules","getPlatformShaderDefines","getVersionDefines","injectShader","DECLARATION_INJECT_MARKER","transpileShader","assert","INJECT_SHADER_DECLARATIONS","SHADER_TYPE","FRAGMENT_SHADER_PROLOGUE","assembleShaders","gl","opts","vs","fs","modules","assembleShader","Object","assign","source","type","getUniforms","assembleGetUniforms","id","defines","hookFunctions","inject","transpileToGLSL100","prologue","log","isVertex","sourceLines","split","glslVersion","versionLine","coreSource","indexOf","slice","join","allDefines","forEach","module","getDefines","assembledSource","getShaderName","getShaderType","getApplicationDefines","hookFunctionMap","normalizeHookFunctions","hookInjections","declInjections","mainInjections","key","injection","order","match","hash","name","checkDeprecations","moduleSource","getModuleSource","injections","injectionType","push","getHookFunctions","uniforms","moduleUniforms","toUpperCase","injectShaderName","count","sourceText","define","value","Number","isFinite","result","hookName","hookFunction","signature","header","sort","a","b","footer","hook","trim","stage","replace"],"sources":["../../../src/lib/assemble-shaders.js"],"sourcesContent":["import {VERTEX_SHADER, FRAGMENT_SHADER} from './constants';\nimport {resolveModules} from './resolve-modules';\nimport {getPlatformShaderDefines, getVersionDefines} from './platform-defines';\nimport injectShader, {DECLARATION_INJECT_MARKER} from './inject-shader';\nimport transpileShader from './transpile-shader';\nimport {assert} from '../utils';\n\nconst INJECT_SHADER_DECLARATIONS = `\\n\\n${DECLARATION_INJECT_MARKER}\\n\\n`;\n\nconst SHADER_TYPE = {\n [VERTEX_SHADER]: 'vertex',\n [FRAGMENT_SHADER]: 'fragment'\n};\n\n// Precision prologue to inject before functions are injected in shader\n// TODO - extract any existing prologue in the fragment source and move it up...\nconst FRAGMENT_SHADER_PROLOGUE = `\\\nprecision highp float;\n\n`;\n\n// Inject a list of modules\nexport function assembleShaders(gl, opts) {\n const {vs, fs} = opts;\n const modules = resolveModules(opts.modules || []);\n return {\n gl,\n vs: assembleShader(gl, Object.assign({}, opts, {source: vs, type: VERTEX_SHADER, modules})),\n fs: assembleShader(gl, Object.assign({}, opts, {source: fs, type: FRAGMENT_SHADER, modules})),\n getUniforms: assembleGetUniforms(modules)\n };\n}\n\n// Pulls together complete source code for either a vertex or a fragment shader\n// adding prologues, requested module chunks, and any final injections.\nfunction assembleShader(\n gl,\n {\n id,\n source,\n type,\n modules,\n defines = {},\n hookFunctions = [],\n inject = {},\n transpileToGLSL100 = false,\n prologue = true,\n log\n }\n) {\n assert(typeof source === 'string', 'shader source must be a string');\n\n const isVertex = type === VERTEX_SHADER;\n\n const sourceLines = source.split('\\n');\n let glslVersion = 100;\n let versionLine = '';\n let coreSource = source;\n // Extract any version directive string from source.\n // TODO : keep all pre-processor statements at the begining of the shader.\n if (sourceLines[0].indexOf('#version ') === 0) {\n glslVersion = 300; // TODO - regexp that matches actual version number\n versionLine = sourceLines[0];\n coreSource = sourceLines.slice(1).join('\\n');\n } else {\n versionLine = `#version ${glslVersion}`;\n }\n\n // Combine Module and Application Defines\n const allDefines = {};\n modules.forEach(module => {\n Object.assign(allDefines, module.getDefines());\n });\n Object.assign(allDefines, defines);\n\n // Add platform defines (use these to work around platform-specific bugs and limitations)\n // Add common defines (GLSL version compatibility, feature detection)\n // Add precision declaration for fragment shaders\n let assembledSource = prologue\n ? `\\\n${versionLine}\n${getShaderName({id, source, type})}\n${getShaderType({type})}\n${getPlatformShaderDefines(gl)}\n${getVersionDefines(gl, glslVersion, !isVertex)}\n${getApplicationDefines(allDefines)}\n${isVertex ? '' : FRAGMENT_SHADER_PROLOGUE}\n`\n : `${versionLine}\n`;\n\n const hookFunctionMap = normalizeHookFunctions(hookFunctions);\n\n // Add source of dependent modules in resolved order\n const hookInjections = {};\n const declInjections = {};\n const mainInjections = {};\n\n for (const key in inject) {\n const injection =\n typeof inject[key] === 'string' ? {injection: inject[key], order: 0} : inject[key];\n const match = key.match(/^(v|f)s:(#)?([\\w-]+)$/);\n if (match) {\n const hash = match[2];\n const name = match[3];\n if (hash) {\n if (name === 'decl') {\n declInjections[key] = [injection];\n } else {\n mainInjections[key] = [injection];\n }\n } else {\n hookInjections[key] = [injection];\n }\n } else {\n // Regex injection\n mainInjections[key] = [injection];\n }\n }\n\n for (const module of modules) {\n if (log) {\n module.checkDeprecations(coreSource, log);\n }\n const moduleSource = module.getModuleSource(type, glslVersion);\n // Add the module source, and a #define that declares it presence\n assembledSource += moduleSource;\n\n const injections = module.injections[type];\n for (const key in injections) {\n const match = key.match(/^(v|f)s:#([\\w-]+)$/);\n if (match) {\n const name = match[2];\n const injectionType = name === 'decl' ? declInjections : mainInjections;\n injectionType[key] = injectionType[key] || [];\n injectionType[key].push(injections[key]);\n } else {\n hookInjections[key] = hookInjections[key] || [];\n hookInjections[key].push(injections[key]);\n }\n }\n }\n\n // For injectShader\n assembledSource += INJECT_SHADER_DECLARATIONS;\n\n assembledSource = injectShader(assembledSource, type, declInjections);\n\n assembledSource += getHookFunctions(hookFunctionMap[type], hookInjections);\n\n // Add the version directive and actual source of this shader\n assembledSource += coreSource;\n\n // Apply any requested shader injections\n assembledSource = injectShader(assembledSource, type, mainInjections);\n\n assembledSource = transpileShader(\n assembledSource,\n transpileToGLSL100 ? 100 : glslVersion,\n isVertex\n );\n\n return assembledSource;\n}\n\n// Returns a combined `getUniforms` covering the options for all the modules,\n// the created function will pass on options to the inidividual `getUniforms`\n// function of each shader module and combine the results into one object that\n// can be passed to setUniforms.\nfunction assembleGetUniforms(modules) {\n return function getUniforms(opts) {\n const uniforms = {};\n for (const module of modules) {\n // `modules` is already sorted by dependency level. This guarantees that\n // modules have access to the uniforms that are generated by their dependencies.\n const moduleUniforms = module.getUniforms(opts, uniforms);\n Object.assign(uniforms, moduleUniforms);\n }\n return uniforms;\n };\n}\n\nfunction getShaderType({type}) {\n return `\n#define SHADER_TYPE_${SHADER_TYPE[type].toUpperCase()}\n`;\n}\n\n// Generate \"glslify-compatible\" SHADER_NAME defines\n// These are understood by the GLSL error parsing function\n// If id is provided and no SHADER_NAME constant is present in source, create one\nfunction getShaderName({id, source, type}) {\n const injectShaderName = id && typeof id === 'string' && source.indexOf('SHADER_NAME') === -1;\n return injectShaderName\n ? `\n#define SHADER_NAME ${id}_${SHADER_TYPE[type]}\n\n`\n : '';\n}\n\n// Generates application defines from an object\nfunction getApplicationDefines(defines = {}) {\n let count = 0;\n let sourceText = '';\n for (const define in defines) {\n if (count === 0) {\n sourceText += '\\n// APPLICATION DEFINES\\n';\n }\n count++;\n\n const value = defines[define];\n if (value || Number.isFinite(value)) {\n sourceText += `#define ${define.toUpperCase()} ${defines[define]}\\n`;\n }\n }\n if (count === 0) {\n sourceText += '\\n';\n }\n return sourceText;\n}\n\nfunction getHookFunctions(hookFunctions, hookInjections) {\n let result = '';\n for (const hookName in hookFunctions) {\n const hookFunction = hookFunctions[hookName];\n result += `void ${hookFunction.signature} {\\n`;\n if (hookFunction.header) {\n result += ` ${hookFunction.header}`;\n }\n if (hookInjections[hookName]) {\n const injections = hookInjections[hookName];\n injections.sort((a, b) => a.order - b.order);\n for (const injection of injections) {\n result += ` ${injection.injection}\\n`;\n }\n }\n if (hookFunction.footer) {\n result += ` ${hookFunction.footer}`;\n }\n result += '}\\n';\n }\n\n return result;\n}\n\nfunction normalizeHookFunctions(hookFunctions) {\n const result = {\n vs: {},\n fs: {}\n };\n\n hookFunctions.forEach(hook => {\n let opts;\n if (typeof hook !== 'string') {\n opts = hook;\n hook = opts.hook;\n } else {\n opts = {};\n }\n hook = hook.trim();\n const [stage, signature] = hook.split(':');\n const name = hook.replace(/\\(.+/, '');\n result[stage][name] = Object.assign(opts, {signature});\n });\n\n return result;\n}\n"],"mappings":"AAAA,SAAQA,aAAR,EAAuBC,eAAvB,QAA6C,aAA7C;AACA,SAAQC,cAAR,QAA6B,mBAA7B;AACA,SAAQC,wBAAR,EAAkCC,iBAAlC,QAA0D,oBAA1D;AACA,OAAOC,YAAP,IAAsBC,yBAAtB,QAAsD,iBAAtD;AACA,OAAOC,eAAP,MAA4B,oBAA5B;AACA,SAAQC,MAAR,QAAqB,UAArB;AAEA,MAAMC,0BAA0B,iBAAUH,yBAAV,SAAhC;AAEA,MAAMI,WAAW,GAAG;EAClB,CAACV,aAAD,GAAiB,QADC;EAElB,CAACC,eAAD,GAAmB;AAFD,CAApB;AAOA,MAAMU,wBAAwB,+BAA9B;AAMA,OAAO,SAASC,eAAT,CAAyBC,EAAzB,EAA6BC,IAA7B,EAAmC;EACxC,MAAM;IAACC,EAAD;IAAKC;EAAL,IAAWF,IAAjB;EACA,MAAMG,OAAO,GAAGf,cAAc,CAACY,IAAI,CAACG,OAAL,IAAgB,EAAjB,CAA9B;EACA,OAAO;IACLJ,EADK;IAELE,EAAE,EAAEG,cAAc,CAACL,EAAD,EAAKM,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBN,IAAlB,EAAwB;MAACO,MAAM,EAAEN,EAAT;MAAaO,IAAI,EAAEtB,aAAnB;MAAkCiB;IAAlC,CAAxB,CAAL,CAFb;IAGLD,EAAE,EAAEE,cAAc,CAACL,EAAD,EAAKM,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBN,IAAlB,EAAwB;MAACO,MAAM,EAAEL,EAAT;MAAaM,IAAI,EAAErB,eAAnB;MAAoCgB;IAApC,CAAxB,CAAL,CAHb;IAILM,WAAW,EAAEC,mBAAmB,CAACP,OAAD;EAJ3B,CAAP;AAMD;;AAID,SAASC,cAAT,CACEL,EADF,QAcE;EAAA,IAZA;IACEY,EADF;IAEEJ,MAFF;IAGEC,IAHF;IAIEL,OAJF;IAKES,OAAO,GAAG,EALZ;IAMEC,aAAa,GAAG,EANlB;IAOEC,MAAM,GAAG,EAPX;IAQEC,kBAAkB,GAAG,KARvB;IASEC,QAAQ,GAAG,IATb;IAUEC;EAVF,CAYA;EACAvB,MAAM,CAAC,OAAOa,MAAP,KAAkB,QAAnB,EAA6B,gCAA7B,CAAN;EAEA,MAAMW,QAAQ,GAAGV,IAAI,KAAKtB,aAA1B;EAEA,MAAMiC,WAAW,GAAGZ,MAAM,CAACa,KAAP,CAAa,IAAb,CAApB;EACA,IAAIC,WAAW,GAAG,GAAlB;EACA,IAAIC,WAAW,GAAG,EAAlB;EACA,IAAIC,UAAU,GAAGhB,MAAjB;;EAGA,IAAIY,WAAW,CAAC,CAAD,CAAX,CAAeK,OAAf,CAAuB,WAAvB,MAAwC,CAA5C,EAA+C;IAC7CH,WAAW,GAAG,GAAd;IACAC,WAAW,GAAGH,WAAW,CAAC,CAAD,CAAzB;IACAI,UAAU,GAAGJ,WAAW,CAACM,KAAZ,CAAkB,CAAlB,EAAqBC,IAArB,CAA0B,IAA1B,CAAb;EACD,CAJD,MAIO;IACLJ,WAAW,sBAAeD,WAAf,CAAX;EACD;;EAGD,MAAMM,UAAU,GAAG,EAAnB;EACAxB,OAAO,CAACyB,OAAR,CAAgBC,MAAM,IAAI;IACxBxB,MAAM,CAACC,MAAP,CAAcqB,UAAd,EAA0BE,MAAM,CAACC,UAAP,EAA1B;EACD,CAFD;EAGAzB,MAAM,CAACC,MAAP,CAAcqB,UAAd,EAA0Bf,OAA1B;EAKA,IAAImB,eAAe,GAAGf,QAAQ,aAE9BM,WAF8B,eAG9BU,aAAa,CAAC;IAACrB,EAAD;IAAKJ,MAAL;IAAaC;EAAb,CAAD,CAHiB,eAI9ByB,aAAa,CAAC;IAACzB;EAAD,CAAD,CAJiB,eAK9BnB,wBAAwB,CAACU,EAAD,CALM,eAM9BT,iBAAiB,CAACS,EAAD,EAAKsB,WAAL,EAAkB,CAACH,QAAnB,CANa,eAO9BgB,qBAAqB,CAACP,UAAD,CAPS,eAQ9BT,QAAQ,GAAG,EAAH,GAAQrB,wBARc,oBAUvByB,WAVuB,OAA9B;EAaA,MAAMa,eAAe,GAAGC,sBAAsB,CAACvB,aAAD,CAA9C;EAGA,MAAMwB,cAAc,GAAG,EAAvB;EACA,MAAMC,cAAc,GAAG,EAAvB;EACA,MAAMC,cAAc,GAAG,EAAvB;;EAEA,KAAK,MAAMC,GAAX,IAAkB1B,MAAlB,EAA0B;IACxB,MAAM2B,SAAS,GACb,OAAO3B,MAAM,CAAC0B,GAAD,CAAb,KAAuB,QAAvB,GAAkC;MAACC,SAAS,EAAE3B,MAAM,CAAC0B,GAAD,CAAlB;MAAyBE,KAAK,EAAE;IAAhC,CAAlC,GAAuE5B,MAAM,CAAC0B,GAAD,CAD/E;IAEA,MAAMG,KAAK,GAAGH,GAAG,CAACG,KAAJ,CAAU,uBAAV,CAAd;;IACA,IAAIA,KAAJ,EAAW;MACT,MAAMC,IAAI,GAAGD,KAAK,CAAC,CAAD,CAAlB;MACA,MAAME,IAAI,GAAGF,KAAK,CAAC,CAAD,CAAlB;;MACA,IAAIC,IAAJ,EAAU;QACR,IAAIC,IAAI,KAAK,MAAb,EAAqB;UACnBP,cAAc,CAACE,GAAD,CAAd,GAAsB,CAACC,SAAD,CAAtB;QACD,CAFD,MAEO;UACLF,cAAc,CAACC,GAAD,CAAd,GAAsB,CAACC,SAAD,CAAtB;QACD;MACF,CAND,MAMO;QACLJ,cAAc,CAACG,GAAD,CAAd,GAAsB,CAACC,SAAD,CAAtB;MACD;IACF,CAZD,MAYO;MAELF,cAAc,CAACC,GAAD,CAAd,GAAsB,CAACC,SAAD,CAAtB;IACD;EACF;;EAED,KAAK,MAAMZ,MAAX,IAAqB1B,OAArB,EAA8B;IAC5B,IAAIc,GAAJ,EAAS;MACPY,MAAM,CAACiB,iBAAP,CAAyBvB,UAAzB,EAAqCN,GAArC;IACD;;IACD,MAAM8B,YAAY,GAAGlB,MAAM,CAACmB,eAAP,CAAuBxC,IAAvB,EAA6Ba,WAA7B,CAArB;IAEAU,eAAe,IAAIgB,YAAnB;IAEA,MAAME,UAAU,GAAGpB,MAAM,CAACoB,UAAP,CAAkBzC,IAAlB,CAAnB;;IACA,KAAK,MAAMgC,GAAX,IAAkBS,UAAlB,EAA8B;MAC5B,MAAMN,KAAK,GAAGH,GAAG,CAACG,KAAJ,CAAU,oBAAV,CAAd;;MACA,IAAIA,KAAJ,EAAW;QACT,MAAME,IAAI,GAAGF,KAAK,CAAC,CAAD,CAAlB;QACA,MAAMO,aAAa,GAAGL,IAAI,KAAK,MAAT,GAAkBP,cAAlB,GAAmCC,cAAzD;QACAW,aAAa,CAACV,GAAD,CAAb,GAAqBU,aAAa,CAACV,GAAD,CAAb,IAAsB,EAA3C;QACAU,aAAa,CAACV,GAAD,CAAb,CAAmBW,IAAnB,CAAwBF,UAAU,CAACT,GAAD,CAAlC;MACD,CALD,MAKO;QACLH,cAAc,CAACG,GAAD,CAAd,GAAsBH,cAAc,CAACG,GAAD,CAAd,IAAuB,EAA7C;QACAH,cAAc,CAACG,GAAD,CAAd,CAAoBW,IAApB,CAAyBF,UAAU,CAACT,GAAD,CAAnC;MACD;IACF;EACF;;EAGDT,eAAe,IAAIpC,0BAAnB;EAEAoC,eAAe,GAAGxC,YAAY,CAACwC,eAAD,EAAkBvB,IAAlB,EAAwB8B,cAAxB,CAA9B;EAEAP,eAAe,IAAIqB,gBAAgB,CAACjB,eAAe,CAAC3B,IAAD,CAAhB,EAAwB6B,cAAxB,CAAnC;EAGAN,eAAe,IAAIR,UAAnB;EAGAQ,eAAe,GAAGxC,YAAY,CAACwC,eAAD,EAAkBvB,IAAlB,EAAwB+B,cAAxB,CAA9B;EAEAR,eAAe,GAAGtC,eAAe,CAC/BsC,eAD+B,EAE/BhB,kBAAkB,GAAG,GAAH,GAASM,WAFI,EAG/BH,QAH+B,CAAjC;EAMA,OAAOa,eAAP;AACD;;AAMD,SAASrB,mBAAT,CAA6BP,OAA7B,EAAsC;EACpC,OAAO,SAASM,WAAT,CAAqBT,IAArB,EAA2B;IAChC,MAAMqD,QAAQ,GAAG,EAAjB;;IACA,KAAK,MAAMxB,MAAX,IAAqB1B,OAArB,EAA8B;MAG5B,MAAMmD,cAAc,GAAGzB,MAAM,CAACpB,WAAP,CAAmBT,IAAnB,EAAyBqD,QAAzB,CAAvB;MACAhD,MAAM,CAACC,MAAP,CAAc+C,QAAd,EAAwBC,cAAxB;IACD;;IACD,OAAOD,QAAP;EACD,CATD;AAUD;;AAED,SAASpB,aAAT,QAA+B;EAAA,IAAR;IAACzB;EAAD,CAAQ;EAC7B,uCACoBZ,WAAW,CAACY,IAAD,CAAX,CAAkB+C,WAAlB,EADpB;AAGD;;AAKD,SAASvB,aAAT,QAA2C;EAAA,IAApB;IAACrB,EAAD;IAAKJ,MAAL;IAAaC;EAAb,CAAoB;EACzC,MAAMgD,gBAAgB,GAAG7C,EAAE,IAAI,OAAOA,EAAP,KAAc,QAApB,IAAgCJ,MAAM,CAACiB,OAAP,CAAe,aAAf,MAAkC,CAAC,CAA5F;EACA,OAAOgC,gBAAgB,mCAEH7C,EAFG,cAEGf,WAAW,CAACY,IAAD,CAFd,YAKnB,EALJ;AAMD;;AAGD,SAAS0B,qBAAT,GAA6C;EAAA,IAAdtB,OAAc,uEAAJ,EAAI;EAC3C,IAAI6C,KAAK,GAAG,CAAZ;EACA,IAAIC,UAAU,GAAG,EAAjB;;EACA,KAAK,MAAMC,MAAX,IAAqB/C,OAArB,EAA8B;IAC5B,IAAI6C,KAAK,KAAK,CAAd,EAAiB;MACfC,UAAU,IAAI,4BAAd;IACD;;IACDD,KAAK;IAEL,MAAMG,KAAK,GAAGhD,OAAO,CAAC+C,MAAD,CAArB;;IACA,IAAIC,KAAK,IAAIC,MAAM,CAACC,QAAP,CAAgBF,KAAhB,CAAb,EAAqC;MACnCF,UAAU,sBAAeC,MAAM,CAACJ,WAAP,EAAf,cAAuC3C,OAAO,CAAC+C,MAAD,CAA9C,OAAV;IACD;EACF;;EACD,IAAIF,KAAK,KAAK,CAAd,EAAiB;IACfC,UAAU,IAAI,IAAd;EACD;;EACD,OAAOA,UAAP;AACD;;AAED,SAASN,gBAAT,CAA0BvC,aAA1B,EAAyCwB,cAAzC,EAAyD;EACvD,IAAI0B,MAAM,GAAG,EAAb;;EACA,KAAK,MAAMC,QAAX,IAAuBnD,aAAvB,EAAsC;IACpC,MAAMoD,YAAY,GAAGpD,aAAa,CAACmD,QAAD,CAAlC;IACAD,MAAM,mBAAYE,YAAY,CAACC,SAAzB,SAAN;;IACA,IAAID,YAAY,CAACE,MAAjB,EAAyB;MACvBJ,MAAM,gBAASE,YAAY,CAACE,MAAtB,CAAN;IACD;;IACD,IAAI9B,cAAc,CAAC2B,QAAD,CAAlB,EAA8B;MAC5B,MAAMf,UAAU,GAAGZ,cAAc,CAAC2B,QAAD,CAAjC;MACAf,UAAU,CAACmB,IAAX,CAAgB,CAACC,CAAD,EAAIC,CAAJ,KAAUD,CAAC,CAAC3B,KAAF,GAAU4B,CAAC,CAAC5B,KAAtC;;MACA,KAAK,MAAMD,SAAX,IAAwBQ,UAAxB,EAAoC;QAClCc,MAAM,gBAAStB,SAAS,CAACA,SAAnB,OAAN;MACD;IACF;;IACD,IAAIwB,YAAY,CAACM,MAAjB,EAAyB;MACvBR,MAAM,gBAASE,YAAY,CAACM,MAAtB,CAAN;IACD;;IACDR,MAAM,IAAI,KAAV;EACD;;EAED,OAAOA,MAAP;AACD;;AAED,SAAS3B,sBAAT,CAAgCvB,aAAhC,EAA+C;EAC7C,MAAMkD,MAAM,GAAG;IACb9D,EAAE,EAAE,EADS;IAEbC,EAAE,EAAE;EAFS,CAAf;EAKAW,aAAa,CAACe,OAAd,CAAsB4C,IAAI,IAAI;IAC5B,IAAIxE,IAAJ;;IACA,IAAI,OAAOwE,IAAP,KAAgB,QAApB,EAA8B;MAC5BxE,IAAI,GAAGwE,IAAP;MACAA,IAAI,GAAGxE,IAAI,CAACwE,IAAZ;IACD,CAHD,MAGO;MACLxE,IAAI,GAAG,EAAP;IACD;;IACDwE,IAAI,GAAGA,IAAI,CAACC,IAAL,EAAP;IACA,MAAM,CAACC,KAAD,EAAQR,SAAR,IAAqBM,IAAI,CAACpD,KAAL,CAAW,GAAX,CAA3B;IACA,MAAMyB,IAAI,GAAG2B,IAAI,CAACG,OAAL,CAAa,MAAb,EAAqB,EAArB,CAAb;IACAZ,MAAM,CAACW,KAAD,CAAN,CAAc7B,IAAd,IAAsBxC,MAAM,CAACC,MAAP,CAAcN,IAAd,EAAoB;MAACkE;IAAD,CAApB,CAAtB;EACD,CAZD;EAcA,OAAOH,MAAP;AACD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/constants.js"],"names":["VERTEX_SHADER","FRAGMENT_SHADER"],"mappings":"AAAA,OAAO,MAAMA,aAAa,GAAG,IAAtB;AACP,OAAO,MAAMC,eAAe,GAAG,IAAxB","sourcesContent":["export const VERTEX_SHADER = 'vs';\nexport const FRAGMENT_SHADER = 'fs';\n"],"file":"constants.js"}
1
+ {"version":3,"file":"constants.js","names":["VERTEX_SHADER","FRAGMENT_SHADER"],"sources":["../../../src/lib/constants.js"],"sourcesContent":["export const VERTEX_SHADER = 'vs';\nexport const FRAGMENT_SHADER = 'fs';\n"],"mappings":"AAAA,OAAO,MAAMA,aAAa,GAAG,IAAtB;AACP,OAAO,MAAMC,eAAe,GAAG,IAAxB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/filters/prop-types.js"],"names":["TYPE_DEFINITIONS","number","validate","value","propType","Number","isFinite","max","min","array","Array","isArray","ArrayBuffer","isView","parsePropTypes","propDefs","propTypes","propName","propDef","parsePropType","type","getTypeOf","Object","assign"],"mappings":"AAAA,MAAMA,gBAAgB,GAAG;AACvBC,EAAAA,MAAM,EAAE;AACNC,IAAAA,QAAQ,CAACC,KAAD,EAAQC,QAAR,EAAkB;AACxB,aACEC,MAAM,CAACC,QAAP,CAAgBH,KAAhB,MACC,EAAE,SAASC,QAAX,KAAwBD,KAAK,IAAIC,QAAQ,CAACG,GAD3C,MAEC,EAAE,SAASH,QAAX,KAAwBD,KAAK,IAAIC,QAAQ,CAACI,GAF3C,CADF;AAKD;;AAPK,GADe;AAUvBC,EAAAA,KAAK,EAAE;AACLP,IAAAA,QAAQ,CAACC,KAAD,EAAQC,QAAR,EAAkB;AACxB,aAAOM,KAAK,CAACC,OAAN,CAAcR,KAAd,KAAwBS,WAAW,CAACC,MAAZ,CAAmBV,KAAnB,CAA/B;AACD;;AAHI;AAVgB,CAAzB;AAiBA,OAAO,SAASW,cAAT,CAAwBC,QAAxB,EAAkC;AACvC,QAAMC,SAAS,GAAG,EAAlB;;AACA,OAAK,MAAMC,QAAX,IAAuBF,QAAvB,EAAiC;AAC/B,UAAMG,OAAO,GAAGH,QAAQ,CAACE,QAAD,CAAxB;AACA,UAAMb,QAAQ,GAAGe,aAAa,CAACD,OAAD,CAA9B;AACAF,IAAAA,SAAS,CAACC,QAAD,CAAT,GAAsBb,QAAtB;AACD;;AACD,SAAOY,SAAP;AACD;;AAKD,SAASG,aAAT,CAAuBD,OAAvB,EAAgC;AAC9B,MAAIE,IAAI,GAAGC,SAAS,CAACH,OAAD,CAApB;;AACA,MAAIE,IAAI,KAAK,QAAb,EAAuB;AACrB,QAAI,CAACF,OAAL,EAAc;AACZ,aAAO;AAACE,QAAAA,IAAI,EAAE,QAAP;AAAiBjB,QAAAA,KAAK,EAAE;AAAxB,OAAP;AACD;;AACD,QAAI,UAAUe,OAAd,EAAuB;AACrB,aAAOI,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBL,OAAlB,EAA2BlB,gBAAgB,CAACkB,OAAO,CAACE,IAAT,CAA3C,CAAP;AACD;;AACD,QAAI,EAAE,WAAWF,OAAb,CAAJ,EAA2B;AAEzB,aAAO;AAACE,QAAAA,IAAI,EAAE,QAAP;AAAiBjB,QAAAA,KAAK,EAAEe;AAAxB,OAAP;AACD;;AACDE,IAAAA,IAAI,GAAGC,SAAS,CAACH,OAAO,CAACf,KAAT,CAAhB;AACA,WAAOmB,MAAM,CAACC,MAAP,CAAc;AAACH,MAAAA;AAAD,KAAd,EAAsBF,OAAtB,EAA+BlB,gBAAgB,CAACoB,IAAD,CAA/C,CAAP;AACD;;AACD,SAAOE,MAAM,CAACC,MAAP,CAAc;AAACH,IAAAA,IAAD;AAAOjB,IAAAA,KAAK,EAAEe;AAAd,GAAd,EAAsClB,gBAAgB,CAACoB,IAAD,CAAtD,CAAP;AACD;;AAGD,SAASC,SAAT,CAAmBlB,KAAnB,EAA0B;AACxB,MAAIO,KAAK,CAACC,OAAN,CAAcR,KAAd,KAAwBS,WAAW,CAACC,MAAZ,CAAmBV,KAAnB,CAA5B,EAAuD;AACrD,WAAO,OAAP;AACD;;AACD,SAAO,OAAOA,KAAd;AACD","sourcesContent":["const TYPE_DEFINITIONS = {\n number: {\n validate(value, propType) {\n return (\n Number.isFinite(value) &&\n (!('max' in propType) || value <= propType.max) &&\n (!('min' in propType) || value >= propType.min)\n );\n }\n },\n array: {\n validate(value, propType) {\n return Array.isArray(value) || ArrayBuffer.isView(value);\n }\n }\n};\n\nexport function parsePropTypes(propDefs) {\n const propTypes = {};\n for (const propName in propDefs) {\n const propDef = propDefs[propName];\n const propType = parsePropType(propDef);\n propTypes[propName] = propType;\n }\n return propTypes;\n}\n\n// Parses one property definition entry. Either contains:\n// * a valid prop type object ({type, ...})\n// * or just a default value, in which case type and name inference is used\nfunction parsePropType(propDef) {\n let type = getTypeOf(propDef);\n if (type === 'object') {\n if (!propDef) {\n return {type: 'object', value: null};\n }\n if ('type' in propDef) {\n return Object.assign({}, propDef, TYPE_DEFINITIONS[propDef.type]);\n }\n if (!('value' in propDef)) {\n // If no type and value this object is likely the value\n return {type: 'object', value: propDef};\n }\n type = getTypeOf(propDef.value);\n return Object.assign({type}, propDef, TYPE_DEFINITIONS[type]);\n }\n return Object.assign({type, value: propDef}, TYPE_DEFINITIONS[type]);\n}\n\n// improved version of javascript typeof that can distinguish arrays and null values\nfunction getTypeOf(value) {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n return 'array';\n }\n return typeof value;\n}\n"],"file":"prop-types.js"}
1
+ {"version":3,"file":"prop-types.js","names":["TYPE_DEFINITIONS","number","validate","value","propType","Number","isFinite","max","min","array","Array","isArray","ArrayBuffer","isView","parsePropTypes","propDefs","propTypes","propName","propDef","parsePropType","type","getTypeOf","Object","assign"],"sources":["../../../../src/lib/filters/prop-types.js"],"sourcesContent":["const TYPE_DEFINITIONS = {\n number: {\n validate(value, propType) {\n return (\n Number.isFinite(value) &&\n (!('max' in propType) || value <= propType.max) &&\n (!('min' in propType) || value >= propType.min)\n );\n }\n },\n array: {\n validate(value, propType) {\n return Array.isArray(value) || ArrayBuffer.isView(value);\n }\n }\n};\n\nexport function parsePropTypes(propDefs) {\n const propTypes = {};\n for (const propName in propDefs) {\n const propDef = propDefs[propName];\n const propType = parsePropType(propDef);\n propTypes[propName] = propType;\n }\n return propTypes;\n}\n\n// Parses one property definition entry. Either contains:\n// * a valid prop type object ({type, ...})\n// * or just a default value, in which case type and name inference is used\nfunction parsePropType(propDef) {\n let type = getTypeOf(propDef);\n if (type === 'object') {\n if (!propDef) {\n return {type: 'object', value: null};\n }\n if ('type' in propDef) {\n return Object.assign({}, propDef, TYPE_DEFINITIONS[propDef.type]);\n }\n if (!('value' in propDef)) {\n // If no type and value this object is likely the value\n return {type: 'object', value: propDef};\n }\n type = getTypeOf(propDef.value);\n return Object.assign({type}, propDef, TYPE_DEFINITIONS[type]);\n }\n return Object.assign({type, value: propDef}, TYPE_DEFINITIONS[type]);\n}\n\n// improved version of javascript typeof that can distinguish arrays and null values\nfunction getTypeOf(value) {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n return 'array';\n }\n return typeof value;\n}\n"],"mappings":"AAAA,MAAMA,gBAAgB,GAAG;EACvBC,MAAM,EAAE;IACNC,QAAQ,CAACC,KAAD,EAAQC,QAAR,EAAkB;MACxB,OACEC,MAAM,CAACC,QAAP,CAAgBH,KAAhB,MACC,EAAE,SAASC,QAAX,KAAwBD,KAAK,IAAIC,QAAQ,CAACG,GAD3C,MAEC,EAAE,SAASH,QAAX,KAAwBD,KAAK,IAAIC,QAAQ,CAACI,GAF3C,CADF;IAKD;;EAPK,CADe;EAUvBC,KAAK,EAAE;IACLP,QAAQ,CAACC,KAAD,EAAQC,QAAR,EAAkB;MACxB,OAAOM,KAAK,CAACC,OAAN,CAAcR,KAAd,KAAwBS,WAAW,CAACC,MAAZ,CAAmBV,KAAnB,CAA/B;IACD;;EAHI;AAVgB,CAAzB;AAiBA,OAAO,SAASW,cAAT,CAAwBC,QAAxB,EAAkC;EACvC,MAAMC,SAAS,GAAG,EAAlB;;EACA,KAAK,MAAMC,QAAX,IAAuBF,QAAvB,EAAiC;IAC/B,MAAMG,OAAO,GAAGH,QAAQ,CAACE,QAAD,CAAxB;IACA,MAAMb,QAAQ,GAAGe,aAAa,CAACD,OAAD,CAA9B;IACAF,SAAS,CAACC,QAAD,CAAT,GAAsBb,QAAtB;EACD;;EACD,OAAOY,SAAP;AACD;;AAKD,SAASG,aAAT,CAAuBD,OAAvB,EAAgC;EAC9B,IAAIE,IAAI,GAAGC,SAAS,CAACH,OAAD,CAApB;;EACA,IAAIE,IAAI,KAAK,QAAb,EAAuB;IACrB,IAAI,CAACF,OAAL,EAAc;MACZ,OAAO;QAACE,IAAI,EAAE,QAAP;QAAiBjB,KAAK,EAAE;MAAxB,CAAP;IACD;;IACD,IAAI,UAAUe,OAAd,EAAuB;MACrB,OAAOI,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBL,OAAlB,EAA2BlB,gBAAgB,CAACkB,OAAO,CAACE,IAAT,CAA3C,CAAP;IACD;;IACD,IAAI,EAAE,WAAWF,OAAb,CAAJ,EAA2B;MAEzB,OAAO;QAACE,IAAI,EAAE,QAAP;QAAiBjB,KAAK,EAAEe;MAAxB,CAAP;IACD;;IACDE,IAAI,GAAGC,SAAS,CAACH,OAAO,CAACf,KAAT,CAAhB;IACA,OAAOmB,MAAM,CAACC,MAAP,CAAc;MAACH;IAAD,CAAd,EAAsBF,OAAtB,EAA+BlB,gBAAgB,CAACoB,IAAD,CAA/C,CAAP;EACD;;EACD,OAAOE,MAAM,CAACC,MAAP,CAAc;IAACH,IAAD;IAAOjB,KAAK,EAAEe;EAAd,CAAd,EAAsClB,gBAAgB,CAACoB,IAAD,CAAtD,CAAP;AACD;;AAGD,SAASC,SAAT,CAAmBlB,KAAnB,EAA0B;EACxB,IAAIO,KAAK,CAACC,OAAN,CAAcR,KAAd,KAAwBS,WAAW,CAACC,MAAZ,CAAmBV,KAAnB,CAA5B,EAAuD;IACrD,OAAO,OAAP;EACD;;EACD,OAAO,OAAOA,KAAd;AACD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/inject-shader.js"],"names":["MODULE_INJECTORS_VS","MODULE_INJECTORS_FS","VERTEX_SHADER","FRAGMENT_SHADER","assert","MODULE_INJECTORS","DECLARATION_INJECT_MARKER","REGEX_START_OF_MAIN","REGEX_END_OF_MAIN","fragments","injectShader","source","type","inject","injectStandardStubs","isVertex","key","fragmentData","sort","a","b","order","length","i","len","injection","fragmentString","join","replace","match","combineInjects","injects","result","Array","isArray","forEach"],"mappings":"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","sourcesContent":["import {MODULE_INJECTORS_VS, MODULE_INJECTORS_FS} from '../modules/module-injectors';\nimport {VERTEX_SHADER, FRAGMENT_SHADER} from './constants';\nimport {assert} from '../utils';\n\n// TODO - experimental\nconst MODULE_INJECTORS = {\n [VERTEX_SHADER]: MODULE_INJECTORS_VS,\n [FRAGMENT_SHADER]: MODULE_INJECTORS_FS\n};\n\nexport const DECLARATION_INJECT_MARKER = '__LUMA_INJECT_DECLARATIONS__'; // Uniform/attribute declarations\n\nconst REGEX_START_OF_MAIN = /void\\s+main\\s*\\([^)]*\\)\\s*\\{\\n?/; // Beginning of main\nconst REGEX_END_OF_MAIN = /}\\n?[^{}]*$/; // End of main, assumes main is last function\nconst fragments = [];\n\n// A minimal shader injection/templating system.\n// RFC: https://github.com/visgl/luma.gl/blob/7.0-release/dev-docs/RFCs/v6.0/shader-injection-rfc.md\n/* eslint-disable complexity */\nexport default function injectShader(source, type, inject, injectStandardStubs = false) {\n const isVertex = type === VERTEX_SHADER;\n\n for (const key in inject) {\n const fragmentData = inject[key];\n fragmentData.sort((a, b) => a.order - b.order);\n fragments.length = fragmentData.length;\n for (let i = 0, len = fragmentData.length; i < len; ++i) {\n fragments[i] = fragmentData[i].injection;\n }\n const fragmentString = `${fragments.join('\\n')}\\n`;\n switch (key) {\n // declarations are injected before the main function\n case 'vs:#decl':\n if (isVertex) {\n source = source.replace(DECLARATION_INJECT_MARKER, fragmentString);\n }\n break;\n // inject code at the beginning of the main function\n case 'vs:#main-start':\n if (isVertex) {\n source = source.replace(REGEX_START_OF_MAIN, match => match + fragmentString);\n }\n break;\n // inject code at the end of main function\n case 'vs:#main-end':\n if (isVertex) {\n source = source.replace(REGEX_END_OF_MAIN, match => fragmentString + match);\n }\n break;\n // declarations are injected before the main function\n case 'fs:#decl':\n if (!isVertex) {\n source = source.replace(DECLARATION_INJECT_MARKER, fragmentString);\n }\n break;\n // inject code at the beginning of the main function\n case 'fs:#main-start':\n if (!isVertex) {\n source = source.replace(REGEX_START_OF_MAIN, match => match + fragmentString);\n }\n break;\n // inject code at the end of main function\n case 'fs:#main-end':\n if (!isVertex) {\n source = source.replace(REGEX_END_OF_MAIN, match => fragmentString + match);\n }\n break;\n\n default:\n // TODO(Tarek): I think this usage should be deprecated.\n\n // inject code after key, leaving key in place\n source = source.replace(key, match => match + fragmentString);\n }\n }\n\n // Remove if it hasn't already been replaced\n source = source.replace(DECLARATION_INJECT_MARKER, '');\n\n // Finally, if requested, insert an automatic module injector chunk\n if (injectStandardStubs) {\n source = source.replace(/\\}\\s*$/, match => match + MODULE_INJECTORS[type]);\n }\n\n return source;\n}\n\n/* eslint-enable complexity */\n\n// Takes an array of inject objects and combines them into one\nexport function combineInjects(injects) {\n const result = {};\n assert(Array.isArray(injects) && injects.length > 1);\n injects.forEach(inject => {\n for (const key in inject) {\n result[key] = result[key] ? `${result[key]}\\n${inject[key]}` : inject[key];\n }\n });\n return result;\n}\n"],"file":"inject-shader.js"}
1
+ {"version":3,"file":"inject-shader.js","names":["MODULE_INJECTORS_VS","MODULE_INJECTORS_FS","VERTEX_SHADER","FRAGMENT_SHADER","assert","MODULE_INJECTORS","DECLARATION_INJECT_MARKER","REGEX_START_OF_MAIN","REGEX_END_OF_MAIN","fragments","injectShader","source","type","inject","injectStandardStubs","isVertex","key","fragmentData","sort","a","b","order","length","i","len","injection","fragmentString","join","replace","match","combineInjects","injects","result","Array","isArray","forEach"],"sources":["../../../src/lib/inject-shader.js"],"sourcesContent":["import {MODULE_INJECTORS_VS, MODULE_INJECTORS_FS} from '../modules/module-injectors';\nimport {VERTEX_SHADER, FRAGMENT_SHADER} from './constants';\nimport {assert} from '../utils';\n\n// TODO - experimental\nconst MODULE_INJECTORS = {\n [VERTEX_SHADER]: MODULE_INJECTORS_VS,\n [FRAGMENT_SHADER]: MODULE_INJECTORS_FS\n};\n\nexport const DECLARATION_INJECT_MARKER = '__LUMA_INJECT_DECLARATIONS__'; // Uniform/attribute declarations\n\nconst REGEX_START_OF_MAIN = /void\\s+main\\s*\\([^)]*\\)\\s*\\{\\n?/; // Beginning of main\nconst REGEX_END_OF_MAIN = /}\\n?[^{}]*$/; // End of main, assumes main is last function\nconst fragments = [];\n\n// A minimal shader injection/templating system.\n// RFC: https://github.com/visgl/luma.gl/blob/7.0-release/dev-docs/RFCs/v6.0/shader-injection-rfc.md\n/* eslint-disable complexity */\nexport default function injectShader(source, type, inject, injectStandardStubs = false) {\n const isVertex = type === VERTEX_SHADER;\n\n for (const key in inject) {\n const fragmentData = inject[key];\n fragmentData.sort((a, b) => a.order - b.order);\n fragments.length = fragmentData.length;\n for (let i = 0, len = fragmentData.length; i < len; ++i) {\n fragments[i] = fragmentData[i].injection;\n }\n const fragmentString = `${fragments.join('\\n')}\\n`;\n switch (key) {\n // declarations are injected before the main function\n case 'vs:#decl':\n if (isVertex) {\n source = source.replace(DECLARATION_INJECT_MARKER, fragmentString);\n }\n break;\n // inject code at the beginning of the main function\n case 'vs:#main-start':\n if (isVertex) {\n source = source.replace(REGEX_START_OF_MAIN, match => match + fragmentString);\n }\n break;\n // inject code at the end of main function\n case 'vs:#main-end':\n if (isVertex) {\n source = source.replace(REGEX_END_OF_MAIN, match => fragmentString + match);\n }\n break;\n // declarations are injected before the main function\n case 'fs:#decl':\n if (!isVertex) {\n source = source.replace(DECLARATION_INJECT_MARKER, fragmentString);\n }\n break;\n // inject code at the beginning of the main function\n case 'fs:#main-start':\n if (!isVertex) {\n source = source.replace(REGEX_START_OF_MAIN, match => match + fragmentString);\n }\n break;\n // inject code at the end of main function\n case 'fs:#main-end':\n if (!isVertex) {\n source = source.replace(REGEX_END_OF_MAIN, match => fragmentString + match);\n }\n break;\n\n default:\n // TODO(Tarek): I think this usage should be deprecated.\n\n // inject code after key, leaving key in place\n source = source.replace(key, match => match + fragmentString);\n }\n }\n\n // Remove if it hasn't already been replaced\n source = source.replace(DECLARATION_INJECT_MARKER, '');\n\n // Finally, if requested, insert an automatic module injector chunk\n if (injectStandardStubs) {\n source = source.replace(/\\}\\s*$/, match => match + MODULE_INJECTORS[type]);\n }\n\n return source;\n}\n\n/* eslint-enable complexity */\n\n// Takes an array of inject objects and combines them into one\nexport function combineInjects(injects) {\n const result = {};\n assert(Array.isArray(injects) && injects.length > 1);\n injects.forEach(inject => {\n for (const key in inject) {\n result[key] = result[key] ? `${result[key]}\\n${inject[key]}` : inject[key];\n }\n });\n return result;\n}\n"],"mappings":"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"}
@@ -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;;AAMF,SAAK,OAAL;AACE;;AAUF,SAAK,KAAL;AAEE;;AAIF;AAIE;AA7BJ;AAuCD;AAED,OAAO,SAASC,iBAAT,CAA2BJ,EAA3B,EAA+BK,WAA/B,EAA4CC,UAA5C,EAAwD;AAE7D,MAAIC,cAAc,gUAAlB;;AAiBA,MAAIX,WAAW,CAACI,EAAD,EAAKF,QAAQ,CAACU,eAAd,CAAf,EAA+C;AAC7CD,IAAAA,cAAc,2NAAd;AAUD;;AACD,MACEX,WAAW,CAACI,EAAD,EAAKF,QAAQ,CAACW,gBAAd,CAAX,IACAZ,uBAAuB,CAACG,EAAD,EAAKF,QAAQ,CAACW,gBAAd,CAFzB,EAGE;AACAF,IAAAA,cAAc,qNAAd;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,8LAAd;AASD;;AACD,MAAIX,WAAW,CAACI,EAAD,EAAKF,QAAQ,CAACc,gBAAd,CAAf,EAAgD;AAC9CL,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"}
1
+ {"version":3,"file":"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"],"sources":["../../../src/lib/platform-defines.js"],"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"],"mappings":"AAAA,SAAQA,cAAR,EAAwBC,WAAxB,EAAqCC,uBAArC,EAA8DC,QAA9D,QAA6E,qBAA7E;AAEA,OAAO,SAASC,wBAAT,CAAkCC,EAAlC,EAAsC;EAC3C,MAAMC,SAAS,GAAGN,cAAc,CAACK,EAAD,CAAhC;;EAEA,QAAQC,SAAS,CAACC,SAAV,CAAoBC,WAApB,EAAR;IACE,KAAK,QAAL;MACE;;IAMF,KAAK,OAAL;MACE;;IAUF,KAAK,KAAL;MAEE;;IAIF;MAIE;EA7BJ;AAuCD;AAED,OAAO,SAASC,iBAAT,CAA2BJ,EAA3B,EAA+BK,WAA/B,EAA4CC,UAA5C,EAAwD;EAE7D,IAAIC,cAAc,gUAAlB;;EAiBA,IAAIX,WAAW,CAACI,EAAD,EAAKF,QAAQ,CAACU,eAAd,CAAf,EAA+C;IAC7CD,cAAc,2NAAd;EAUD;;EACD,IACEX,WAAW,CAACI,EAAD,EAAKF,QAAQ,CAACW,gBAAd,CAAX,IACAZ,uBAAuB,CAACG,EAAD,EAAKF,QAAQ,CAACW,gBAAd,CAFzB,EAGE;IACAF,cAAc,qNAAd;EASD;;EACD,IACEX,WAAW,CAACI,EAAD,EAAKF,QAAQ,CAACY,cAAd,CAAX,IACAb,uBAAuB,CAACG,EAAD,EAAKF,QAAQ,CAACY,cAAd,EAA8B;IAACC,QAAQ,EAAE;EAAX,CAA9B,CAFzB,EAGE;IACAJ,cAAc,8LAAd;EASD;;EACD,IAAIX,WAAW,CAACI,EAAD,EAAKF,QAAQ,CAACc,gBAAd,CAAf,EAAgD;IAC9CL,cAAc,8MAAd;EAUD;;EACD,OAAOA,cAAP;AACD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/resolve-modules.js"],"names":["ShaderModule","assert","resolveModules","modules","getShaderDependencies","instantiateModules","moduleMap","moduleDepth","getDependencyGraph","level","Object","keys","sort","a","b","map","name","Error","module","undefined","dependencies","seen","TEST_EXPORTS"],"mappings":"AAAA,OAAOA,YAAP,MAAyB,iBAAzB;AACA,SAAQC,MAAR,QAAqB,UAArB;AAGA,OAAO,SAASC,cAAT,CAAwBC,OAAxB,EAAiC;AACtC,SAAOC,qBAAqB,CAACC,kBAAkB,CAACF,OAAD,CAAnB,CAA5B;AACD;;AAcD,SAASC,qBAAT,CAA+BD,OAA/B,EAAwC;AACtC,QAAMG,SAAS,GAAG,EAAlB;AACA,QAAMC,WAAW,GAAG,EAApB;AACAC,EAAAA,kBAAkB,CAAC;AAACL,IAAAA,OAAD;AAAUM,IAAAA,KAAK,EAAE,CAAjB;AAAoBH,IAAAA,SAApB;AAA+BC,IAAAA;AAA/B,GAAD,CAAlB;AAGA,SAAOG,MAAM,CAACC,IAAP,CAAYJ,WAAZ,EACJK,IADI,CACC,CAACC,CAAD,EAAIC,CAAJ,KAAUP,WAAW,CAACO,CAAD,CAAX,GAAiBP,WAAW,CAACM,CAAD,CADvC,EAEJE,GAFI,CAEAC,IAAI,IAAIV,SAAS,CAACU,IAAD,CAFjB,CAAP;AAGD;;AAcD,SAASR,kBAAT,OAAsE;AAAA,MAA1C;AAACL,IAAAA,OAAD;AAAUM,IAAAA,KAAV;AAAiBH,IAAAA,SAAjB;AAA4BC,IAAAA;AAA5B,GAA0C;;AACpE,MAAIE,KAAK,IAAI,CAAb,EAAgB;AACd,UAAM,IAAIQ,KAAJ,CAAU,0CAAV,CAAN;AACD;;AAGD,OAAK,MAAMC,MAAX,IAAqBf,OAArB,EAA8B;AAC5BG,IAAAA,SAAS,CAACY,MAAM,CAACF,IAAR,CAAT,GAAyBE,MAAzB;;AACA,QAAIX,WAAW,CAACW,MAAM,CAACF,IAAR,CAAX,KAA6BG,SAA7B,IAA0CZ,WAAW,CAACW,MAAM,CAACF,IAAR,CAAX,GAA2BP,KAAzE,EAAgF;AAC9EF,MAAAA,WAAW,CAACW,MAAM,CAACF,IAAR,CAAX,GAA2BP,KAA3B;AACD;AACF;;AAGD,OAAK,MAAMS,MAAX,IAAqBf,OAArB,EAA8B;AAC5B,QAAIe,MAAM,CAACE,YAAX,EAAyB;AACvBZ,MAAAA,kBAAkB,CAAC;AAACL,QAAAA,OAAO,EAAEe,MAAM,CAACE,YAAjB;AAA+BX,QAAAA,KAAK,EAAEA,KAAK,GAAG,CAA9C;AAAiDH,QAAAA,SAAjD;AAA4DC,QAAAA;AAA5D,OAAD,CAAlB;AACD;AACF;AACF;;AAED,SAASF,kBAAT,CAA4BF,OAA5B,EAAqCkB,IAArC,EAA2C;AACzC,SAAOlB,OAAO,CAACY,GAAR,CAAYG,MAAM,IAAI;AAC3B,QAAIA,MAAM,YAAYlB,YAAtB,EAAoC;AAClC,aAAOkB,MAAP;AACD;;AAEDjB,IAAAA,MAAM,CACJ,OAAOiB,MAAP,KAAkB,QADd,2EAE8DA,MAF9D,4BAAN;AAIAjB,IAAAA,MAAM,CAACiB,MAAM,CAACF,IAAR,EAAc,2BAAd,CAAN;AAEAE,IAAAA,MAAM,GAAG,IAAIlB,YAAJ,CAAiBkB,MAAjB,CAAT;AACAA,IAAAA,MAAM,CAACE,YAAP,GAAsBf,kBAAkB,CAACa,MAAM,CAACE,YAAR,CAAxC;AAEA,WAAOF,MAAP;AACD,GAfM,CAAP;AAgBD;;AAED,OAAO,MAAMI,YAAY,GAAG;AAC1BlB,EAAAA,qBAD0B;AAE1BI,EAAAA;AAF0B,CAArB","sourcesContent":["import ShaderModule from './shader-module';\nimport {assert} from '../utils';\n\n// Instantiate shader modules and any dependencies resolve dependencies\nexport function resolveModules(modules) {\n return getShaderDependencies(instantiateModules(modules));\n}\n\n/**\n * Takes a list of shader module names and returns a new list of\n * shader module names that includes all dependencies, sorted so\n * that modules that are dependencies of other modules come first.\n *\n * If the shader glsl code from the returned modules is concatenated\n * in the reverse order, it is guaranteed that all functions be resolved and\n * that all function and variable definitions come before use.\n *\n * @param {String[]} modules - Array of modules (inline modules or module names)\n * @return {String[]} - Array of modules\n */\nfunction getShaderDependencies(modules) {\n const moduleMap = {};\n const moduleDepth = {};\n getDependencyGraph({modules, level: 0, moduleMap, moduleDepth});\n\n // Return a reverse sort so that dependencies come before the modules that use them\n return Object.keys(moduleDepth)\n .sort((a, b) => moduleDepth[b] - moduleDepth[a])\n .map(name => moduleMap[name]);\n}\n\n/**\n * Recursively checks module dpendencies to calculate dependency\n * level of each module.\n *\n * @param {object} options\n * @param {object[]} options.modules - Array of modules\n * @param {number} options.level - Current level\n * @param {object} options.moduleMap -\n * @param {object} options.moduleDepth - Current level\n * @return {object} - Map of module name to its level\n */\n// Adds another level of dependencies to the result map\nfunction getDependencyGraph({modules, level, moduleMap, moduleDepth}) {\n if (level >= 5) {\n throw new Error('Possible loop in shader dependency graph');\n }\n\n // Update level on all current modules\n for (const module of modules) {\n moduleMap[module.name] = module;\n if (moduleDepth[module.name] === undefined || moduleDepth[module.name] < level) {\n moduleDepth[module.name] = level;\n }\n }\n\n // Recurse\n for (const module of modules) {\n if (module.dependencies) {\n getDependencyGraph({modules: module.dependencies, level: level + 1, moduleMap, moduleDepth});\n }\n }\n}\n\nfunction instantiateModules(modules, seen) {\n return modules.map(module => {\n if (module instanceof ShaderModule) {\n return module;\n }\n\n assert(\n typeof module !== 'string',\n `Shader module use by name is deprecated. Import shader module '${module}' and use it directly.`\n );\n assert(module.name, 'shader module has no name');\n\n module = new ShaderModule(module);\n module.dependencies = instantiateModules(module.dependencies);\n\n return module;\n });\n}\n\nexport const TEST_EXPORTS = {\n getShaderDependencies,\n getDependencyGraph\n};\n"],"file":"resolve-modules.js"}
1
+ {"version":3,"file":"resolve-modules.js","names":["ShaderModule","assert","resolveModules","modules","getShaderDependencies","instantiateModules","moduleMap","moduleDepth","getDependencyGraph","level","Object","keys","sort","a","b","map","name","Error","module","undefined","dependencies","seen","TEST_EXPORTS"],"sources":["../../../src/lib/resolve-modules.js"],"sourcesContent":["import ShaderModule from './shader-module';\nimport {assert} from '../utils';\n\n// Instantiate shader modules and any dependencies resolve dependencies\nexport function resolveModules(modules) {\n return getShaderDependencies(instantiateModules(modules));\n}\n\n/**\n * Takes a list of shader module names and returns a new list of\n * shader module names that includes all dependencies, sorted so\n * that modules that are dependencies of other modules come first.\n *\n * If the shader glsl code from the returned modules is concatenated\n * in the reverse order, it is guaranteed that all functions be resolved and\n * that all function and variable definitions come before use.\n *\n * @param {String[]} modules - Array of modules (inline modules or module names)\n * @return {String[]} - Array of modules\n */\nfunction getShaderDependencies(modules) {\n const moduleMap = {};\n const moduleDepth = {};\n getDependencyGraph({modules, level: 0, moduleMap, moduleDepth});\n\n // Return a reverse sort so that dependencies come before the modules that use them\n return Object.keys(moduleDepth)\n .sort((a, b) => moduleDepth[b] - moduleDepth[a])\n .map(name => moduleMap[name]);\n}\n\n/**\n * Recursively checks module dpendencies to calculate dependency\n * level of each module.\n *\n * @param {object} options\n * @param {object[]} options.modules - Array of modules\n * @param {number} options.level - Current level\n * @param {object} options.moduleMap -\n * @param {object} options.moduleDepth - Current level\n * @return {object} - Map of module name to its level\n */\n// Adds another level of dependencies to the result map\nfunction getDependencyGraph({modules, level, moduleMap, moduleDepth}) {\n if (level >= 5) {\n throw new Error('Possible loop in shader dependency graph');\n }\n\n // Update level on all current modules\n for (const module of modules) {\n moduleMap[module.name] = module;\n if (moduleDepth[module.name] === undefined || moduleDepth[module.name] < level) {\n moduleDepth[module.name] = level;\n }\n }\n\n // Recurse\n for (const module of modules) {\n if (module.dependencies) {\n getDependencyGraph({modules: module.dependencies, level: level + 1, moduleMap, moduleDepth});\n }\n }\n}\n\nfunction instantiateModules(modules, seen) {\n return modules.map(module => {\n if (module instanceof ShaderModule) {\n return module;\n }\n\n assert(\n typeof module !== 'string',\n `Shader module use by name is deprecated. Import shader module '${module}' and use it directly.`\n );\n assert(module.name, 'shader module has no name');\n\n module = new ShaderModule(module);\n module.dependencies = instantiateModules(module.dependencies);\n\n return module;\n });\n}\n\nexport const TEST_EXPORTS = {\n getShaderDependencies,\n getDependencyGraph\n};\n"],"mappings":"AAAA,OAAOA,YAAP,MAAyB,iBAAzB;AACA,SAAQC,MAAR,QAAqB,UAArB;AAGA,OAAO,SAASC,cAAT,CAAwBC,OAAxB,EAAiC;EACtC,OAAOC,qBAAqB,CAACC,kBAAkB,CAACF,OAAD,CAAnB,CAA5B;AACD;;AAcD,SAASC,qBAAT,CAA+BD,OAA/B,EAAwC;EACtC,MAAMG,SAAS,GAAG,EAAlB;EACA,MAAMC,WAAW,GAAG,EAApB;EACAC,kBAAkB,CAAC;IAACL,OAAD;IAAUM,KAAK,EAAE,CAAjB;IAAoBH,SAApB;IAA+BC;EAA/B,CAAD,CAAlB;EAGA,OAAOG,MAAM,CAACC,IAAP,CAAYJ,WAAZ,EACJK,IADI,CACC,CAACC,CAAD,EAAIC,CAAJ,KAAUP,WAAW,CAACO,CAAD,CAAX,GAAiBP,WAAW,CAACM,CAAD,CADvC,EAEJE,GAFI,CAEAC,IAAI,IAAIV,SAAS,CAACU,IAAD,CAFjB,CAAP;AAGD;;AAcD,SAASR,kBAAT,OAAsE;EAAA,IAA1C;IAACL,OAAD;IAAUM,KAAV;IAAiBH,SAAjB;IAA4BC;EAA5B,CAA0C;;EACpE,IAAIE,KAAK,IAAI,CAAb,EAAgB;IACd,MAAM,IAAIQ,KAAJ,CAAU,0CAAV,CAAN;EACD;;EAGD,KAAK,MAAMC,MAAX,IAAqBf,OAArB,EAA8B;IAC5BG,SAAS,CAACY,MAAM,CAACF,IAAR,CAAT,GAAyBE,MAAzB;;IACA,IAAIX,WAAW,CAACW,MAAM,CAACF,IAAR,CAAX,KAA6BG,SAA7B,IAA0CZ,WAAW,CAACW,MAAM,CAACF,IAAR,CAAX,GAA2BP,KAAzE,EAAgF;MAC9EF,WAAW,CAACW,MAAM,CAACF,IAAR,CAAX,GAA2BP,KAA3B;IACD;EACF;;EAGD,KAAK,MAAMS,MAAX,IAAqBf,OAArB,EAA8B;IAC5B,IAAIe,MAAM,CAACE,YAAX,EAAyB;MACvBZ,kBAAkB,CAAC;QAACL,OAAO,EAAEe,MAAM,CAACE,YAAjB;QAA+BX,KAAK,EAAEA,KAAK,GAAG,CAA9C;QAAiDH,SAAjD;QAA4DC;MAA5D,CAAD,CAAlB;IACD;EACF;AACF;;AAED,SAASF,kBAAT,CAA4BF,OAA5B,EAAqCkB,IAArC,EAA2C;EACzC,OAAOlB,OAAO,CAACY,GAAR,CAAYG,MAAM,IAAI;IAC3B,IAAIA,MAAM,YAAYlB,YAAtB,EAAoC;MAClC,OAAOkB,MAAP;IACD;;IAEDjB,MAAM,CACJ,OAAOiB,MAAP,KAAkB,QADd,2EAE8DA,MAF9D,4BAAN;IAIAjB,MAAM,CAACiB,MAAM,CAACF,IAAR,EAAc,2BAAd,CAAN;IAEAE,MAAM,GAAG,IAAIlB,YAAJ,CAAiBkB,MAAjB,CAAT;IACAA,MAAM,CAACE,YAAP,GAAsBf,kBAAkB,CAACa,MAAM,CAACE,YAAR,CAAxC;IAEA,OAAOF,MAAP;EACD,CAfM,CAAP;AAgBD;;AAED,OAAO,MAAMI,YAAY,GAAG;EAC1BlB,qBAD0B;EAE1BI;AAF0B,CAArB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/shader-module.js"],"names":["assert","parsePropTypes","VERTEX_SHADER","FRAGMENT_SHADER","ShaderModule","constructor","name","vs","fs","dependencies","uniforms","getUniforms","deprecations","defines","inject","vertexShader","fragmentShader","getModuleUniforms","_parseDeprecationDefinitions","injections","normalizeInjections","getModuleSource","type","moduleSource","toUpperCase","replace","opts","_defaultGetUniforms","getDefines","checkDeprecations","shaderSource","log","forEach","def","regex","test","deprecated","old","new","removed","RegExp","propTypes","key","propDef","private","validate","value","normalizeShaderModule","module","normalized","shaderModule","bind","result","hook","injection","stage","slice","order"],"mappings":"AAAA,SAAQA,MAAR,QAAqB,UAArB;AACA,SAAQC,cAAR,QAA6B,sBAA7B;AAEA,MAAMC,aAAa,GAAG,IAAtB;AACA,MAAMC,eAAe,GAAG,IAAxB;AAEA,eAAe,MAAMC,YAAN,CAAmB;AAChCC,EAAAA,WAAW,OAaR;AAAA,QAbS;AACVC,MAAAA,IADU;AAEVC,MAAAA,EAFU;AAGVC,MAAAA,EAHU;AAIVC,MAAAA,YAAY,GAAG,EAJL;AAKVC,MAAAA,QALU;AAMVC,MAAAA,WANU;AAOVC,MAAAA,YAAY,GAAG,EAPL;AAQVC,MAAAA,OAAO,GAAG,EARA;AASVC,MAAAA,MAAM,GAAG,EATC;AAWVC,MAAAA,YAXU;AAYVC,MAAAA;AAZU,KAaT;AACDhB,IAAAA,MAAM,CAAC,OAAOM,IAAP,KAAgB,QAAjB,CAAN;AACA,SAAKA,IAAL,GAAYA,IAAZ;AACA,SAAKC,EAAL,GAAUA,EAAE,IAAIQ,YAAhB;AACA,SAAKP,EAAL,GAAUA,EAAE,IAAIQ,cAAhB;AACA,SAAKC,iBAAL,GAAyBN,WAAzB;AACA,SAAKF,YAAL,GAAoBA,YAApB;AACA,SAAKG,YAAL,GAAoB,KAAKM,4BAAL,CAAkCN,YAAlC,CAApB;AACA,SAAKC,OAAL,GAAeA,OAAf;AACA,SAAKM,UAAL,GAAkBC,mBAAmB,CAACN,MAAD,CAArC;;AAEA,QAAIJ,QAAJ,EAAc;AACZ,WAAKA,QAAL,GAAgBT,cAAc,CAACS,QAAD,CAA9B;AACD;AACF;;AAGDW,EAAAA,eAAe,CAACC,IAAD,EAAO;AACpB,QAAIC,YAAJ;;AACA,YAAQD,IAAR;AACE,WAAKpB,aAAL;AACEqB,QAAAA,YAAY,GAAG,KAAKhB,EAAL,IAAW,EAA1B;AACA;;AACF,WAAKJ,eAAL;AACEoB,QAAAA,YAAY,GAAG,KAAKf,EAAL,IAAW,EAA1B;AACA;;AACF;AACER,QAAAA,MAAM,CAAC,KAAD,CAAN;AARJ;;AAWA,oCACa,KAAKM,IAAL,CAAUkB,WAAV,GAAwBC,OAAxB,CAAgC,aAAhC,EAA+C,GAA/C,CADb,eAEFF,YAFE,2BAGY,KAAKjB,IAHjB;AAMD;;AAEDK,EAAAA,WAAW,CAACe,IAAD,EAAOhB,QAAP,EAAiB;AAC1B,QAAI,KAAKO,iBAAT,EAA4B;AAC1B,aAAO,KAAKA,iBAAL,CAAuBS,IAAvB,EAA6BhB,QAA7B,CAAP;AACD;;AAED,QAAI,KAAKA,QAAT,EAAmB;AACjB,aAAO,KAAKiB,mBAAL,CAAyBD,IAAzB,CAAP;AACD;;AACD,WAAO,EAAP;AACD;;AAEDE,EAAAA,UAAU,GAAG;AACX,WAAO,KAAKf,OAAZ;AACD;;AAGDgB,EAAAA,iBAAiB,CAACC,YAAD,EAAeC,GAAf,EAAoB;AACnC,SAAKnB,YAAL,CAAkBoB,OAAlB,CAA0BC,GAAG,IAAI;AAC/B,UAAIA,GAAG,CAACC,KAAJ,CAAUC,IAAV,CAAeL,YAAf,CAAJ,EAAkC;AAChC,YAAIG,GAAG,CAACG,UAAR,EAAoB;AAClBL,UAAAA,GAAG,CAACK,UAAJ,CAAeH,GAAG,CAACI,GAAnB,EAAwBJ,GAAG,CAACK,GAA5B;AACD,SAFD,MAEO;AACLP,UAAAA,GAAG,CAACQ,OAAJ,CAAYN,GAAG,CAACI,GAAhB,EAAqBJ,GAAG,CAACK,GAAzB;AACD;AACF;AACF,KARD;AASD;;AAEDpB,EAAAA,4BAA4B,CAACN,YAAD,EAAe;AACzCA,IAAAA,YAAY,CAACoB,OAAb,CAAqBC,GAAG,IAAI;AAC1B,cAAQA,GAAG,CAACX,IAAZ;AACE,aAAK,UAAL;AACEW,UAAAA,GAAG,CAACC,KAAJ,GAAY,IAAIM,MAAJ,cAAiBP,GAAG,CAACI,GAArB,SAAZ;AACA;;AACF;AACEJ,UAAAA,GAAG,CAACC,KAAJ,GAAY,IAAIM,MAAJ,WAAcP,GAAG,CAACX,IAAlB,cAA0BW,GAAG,CAACI,GAA9B,OAAZ;AALJ;AAOD,KARD;AAUA,WAAOzB,YAAP;AACD;;AAEDe,EAAAA,mBAAmB,GAAY;AAAA,QAAXD,IAAW,uEAAJ,EAAI;AAC7B,UAAMhB,QAAQ,GAAG,EAAjB;AACA,UAAM+B,SAAS,GAAG,KAAK/B,QAAvB;;AAEA,SAAK,MAAMgC,GAAX,IAAkBD,SAAlB,EAA6B;AAC3B,YAAME,OAAO,GAAGF,SAAS,CAACC,GAAD,CAAzB;;AACA,UAAIA,GAAG,IAAIhB,IAAP,IAAe,CAACiB,OAAO,CAACC,OAA5B,EAAqC;AACnC,YAAID,OAAO,CAACE,QAAZ,EAAsB;AACpB7C,UAAAA,MAAM,CAAC2C,OAAO,CAACE,QAAR,CAAiBnB,IAAI,CAACgB,GAAD,CAArB,EAA4BC,OAA5B,CAAD,YAA0C,KAAKrC,IAA/C,uBAAgEoC,GAAhE,EAAN;AACD;;AACDhC,QAAAA,QAAQ,CAACgC,GAAD,CAAR,GAAgBhB,IAAI,CAACgB,GAAD,CAApB;AACD,OALD,MAKO;AACLhC,QAAAA,QAAQ,CAACgC,GAAD,CAAR,GAAgBC,OAAO,CAACG,KAAxB;AACD;AACF;;AAED,WAAOpC,QAAP;AACD;;AA/G+B;AAqHlC,OAAO,SAASqC,qBAAT,CAA+BC,MAA/B,EAAuC;AAC5C,MAAI,CAACA,MAAM,CAACC,UAAZ,EAAwB;AACtBD,IAAAA,MAAM,CAACC,UAAP,GAAoB,IAApB;;AACA,QAAID,MAAM,CAACtC,QAAP,IAAmB,CAACsC,MAAM,CAACrC,WAA/B,EAA4C;AAC1C,YAAMuC,YAAY,GAAG,IAAI9C,YAAJ,CAAiB4C,MAAjB,CAArB;AACAA,MAAAA,MAAM,CAACrC,WAAP,GAAqBuC,YAAY,CAACvC,WAAb,CAAyBwC,IAAzB,CAA8BD,YAA9B,CAArB;AACD;AACF;;AACD,SAAOF,MAAP;AACD;;AAED,SAAS5B,mBAAT,CAA6BD,UAA7B,EAAyC;AACvC,QAAMiC,MAAM,GAAG;AACb7C,IAAAA,EAAE,EAAE,EADS;AAEbC,IAAAA,EAAE,EAAE;AAFS,GAAf;;AAKA,OAAK,MAAM6C,IAAX,IAAmBlC,UAAnB,EAA+B;AAC7B,QAAImC,SAAS,GAAGnC,UAAU,CAACkC,IAAD,CAA1B;AACA,UAAME,KAAK,GAAGF,IAAI,CAACG,KAAL,CAAW,CAAX,EAAc,CAAd,CAAd;;AAEA,QAAI,OAAOF,SAAP,KAAqB,QAAzB,EAAmC;AACjCA,MAAAA,SAAS,GAAG;AACVG,QAAAA,KAAK,EAAE,CADG;AAEVH,QAAAA;AAFU,OAAZ;AAID;;AAEDF,IAAAA,MAAM,CAACG,KAAD,CAAN,CAAcF,IAAd,IAAsBC,SAAtB;AACD;;AAED,SAAOF,MAAP;AACD","sourcesContent":["import {assert} from '../utils';\nimport {parsePropTypes} from './filters/prop-types';\n\nconst VERTEX_SHADER = 'vs';\nconst FRAGMENT_SHADER = 'fs';\n\nexport default class ShaderModule {\n constructor({\n name,\n vs,\n fs,\n dependencies = [],\n uniforms,\n getUniforms,\n deprecations = [],\n defines = {},\n inject = {},\n // DEPRECATED\n vertexShader,\n fragmentShader\n }) {\n assert(typeof name === 'string');\n this.name = name;\n this.vs = vs || vertexShader;\n this.fs = fs || fragmentShader;\n this.getModuleUniforms = getUniforms;\n this.dependencies = dependencies;\n this.deprecations = this._parseDeprecationDefinitions(deprecations);\n this.defines = defines;\n this.injections = normalizeInjections(inject);\n\n if (uniforms) {\n this.uniforms = parsePropTypes(uniforms);\n }\n }\n\n // Extracts the source code chunk for the specified shader type from the named shader module\n getModuleSource(type) {\n let moduleSource;\n switch (type) {\n case VERTEX_SHADER:\n moduleSource = this.vs || '';\n break;\n case FRAGMENT_SHADER:\n moduleSource = this.fs || '';\n break;\n default:\n assert(false);\n }\n\n return `\\\n#define MODULE_${this.name.toUpperCase().replace(/[^0-9a-z]/gi, '_')}\n${moduleSource}\\\n// END MODULE_${this.name}\n\n`;\n }\n\n getUniforms(opts, uniforms) {\n if (this.getModuleUniforms) {\n return this.getModuleUniforms(opts, uniforms);\n }\n // Build uniforms from the uniforms array\n if (this.uniforms) {\n return this._defaultGetUniforms(opts);\n }\n return {};\n }\n\n getDefines() {\n return this.defines;\n }\n\n // Warn about deprecated uniforms or functions\n checkDeprecations(shaderSource, log) {\n this.deprecations.forEach(def => {\n if (def.regex.test(shaderSource)) {\n if (def.deprecated) {\n log.deprecated(def.old, def.new)();\n } else {\n log.removed(def.old, def.new)();\n }\n }\n });\n }\n\n _parseDeprecationDefinitions(deprecations) {\n deprecations.forEach(def => {\n switch (def.type) {\n case 'function':\n def.regex = new RegExp(`\\\\b${def.old}\\\\(`);\n break;\n default:\n def.regex = new RegExp(`${def.type} ${def.old};`);\n }\n });\n\n return deprecations;\n }\n\n _defaultGetUniforms(opts = {}) {\n const uniforms = {};\n const propTypes = this.uniforms;\n\n for (const key in propTypes) {\n const propDef = propTypes[key];\n if (key in opts && !propDef.private) {\n if (propDef.validate) {\n assert(propDef.validate(opts[key], propDef), `${this.name}: invalid ${key}`);\n }\n uniforms[key] = opts[key];\n } else {\n uniforms[key] = propDef.value;\n }\n }\n\n return uniforms;\n }\n}\n\n// This utility mutates the original module\n// Keeping for backward compatibility\n// TODO - remove in v8\nexport function normalizeShaderModule(module) {\n if (!module.normalized) {\n module.normalized = true;\n if (module.uniforms && !module.getUniforms) {\n const shaderModule = new ShaderModule(module);\n module.getUniforms = shaderModule.getUniforms.bind(shaderModule);\n }\n }\n return module;\n}\n\nfunction normalizeInjections(injections) {\n const result = {\n vs: {},\n fs: {}\n };\n\n for (const hook in injections) {\n let injection = injections[hook];\n const stage = hook.slice(0, 2);\n\n if (typeof injection === 'string') {\n injection = {\n order: 0,\n injection\n };\n }\n\n result[stage][hook] = injection;\n }\n\n return result;\n}\n"],"file":"shader-module.js"}
1
+ {"version":3,"file":"shader-module.js","names":["assert","parsePropTypes","VERTEX_SHADER","FRAGMENT_SHADER","ShaderModule","constructor","name","vs","fs","dependencies","uniforms","getUniforms","deprecations","defines","inject","vertexShader","fragmentShader","getModuleUniforms","_parseDeprecationDefinitions","injections","normalizeInjections","getModuleSource","type","moduleSource","toUpperCase","replace","opts","_defaultGetUniforms","getDefines","checkDeprecations","shaderSource","log","forEach","def","regex","test","deprecated","old","new","removed","RegExp","propTypes","key","propDef","private","validate","value","normalizeShaderModule","module","normalized","shaderModule","bind","result","hook","injection","stage","slice","order"],"sources":["../../../src/lib/shader-module.js"],"sourcesContent":["import {assert} from '../utils';\nimport {parsePropTypes} from './filters/prop-types';\n\nconst VERTEX_SHADER = 'vs';\nconst FRAGMENT_SHADER = 'fs';\n\nexport default class ShaderModule {\n constructor({\n name,\n vs,\n fs,\n dependencies = [],\n uniforms,\n getUniforms,\n deprecations = [],\n defines = {},\n inject = {},\n // DEPRECATED\n vertexShader,\n fragmentShader\n }) {\n assert(typeof name === 'string');\n this.name = name;\n this.vs = vs || vertexShader;\n this.fs = fs || fragmentShader;\n this.getModuleUniforms = getUniforms;\n this.dependencies = dependencies;\n this.deprecations = this._parseDeprecationDefinitions(deprecations);\n this.defines = defines;\n this.injections = normalizeInjections(inject);\n\n if (uniforms) {\n this.uniforms = parsePropTypes(uniforms);\n }\n }\n\n // Extracts the source code chunk for the specified shader type from the named shader module\n getModuleSource(type) {\n let moduleSource;\n switch (type) {\n case VERTEX_SHADER:\n moduleSource = this.vs || '';\n break;\n case FRAGMENT_SHADER:\n moduleSource = this.fs || '';\n break;\n default:\n assert(false);\n }\n\n return `\\\n#define MODULE_${this.name.toUpperCase().replace(/[^0-9a-z]/gi, '_')}\n${moduleSource}\\\n// END MODULE_${this.name}\n\n`;\n }\n\n getUniforms(opts, uniforms) {\n if (this.getModuleUniforms) {\n return this.getModuleUniforms(opts, uniforms);\n }\n // Build uniforms from the uniforms array\n if (this.uniforms) {\n return this._defaultGetUniforms(opts);\n }\n return {};\n }\n\n getDefines() {\n return this.defines;\n }\n\n // Warn about deprecated uniforms or functions\n checkDeprecations(shaderSource, log) {\n this.deprecations.forEach(def => {\n if (def.regex.test(shaderSource)) {\n if (def.deprecated) {\n log.deprecated(def.old, def.new)();\n } else {\n log.removed(def.old, def.new)();\n }\n }\n });\n }\n\n _parseDeprecationDefinitions(deprecations) {\n deprecations.forEach(def => {\n switch (def.type) {\n case 'function':\n def.regex = new RegExp(`\\\\b${def.old}\\\\(`);\n break;\n default:\n def.regex = new RegExp(`${def.type} ${def.old};`);\n }\n });\n\n return deprecations;\n }\n\n _defaultGetUniforms(opts = {}) {\n const uniforms = {};\n const propTypes = this.uniforms;\n\n for (const key in propTypes) {\n const propDef = propTypes[key];\n if (key in opts && !propDef.private) {\n if (propDef.validate) {\n assert(propDef.validate(opts[key], propDef), `${this.name}: invalid ${key}`);\n }\n uniforms[key] = opts[key];\n } else {\n uniforms[key] = propDef.value;\n }\n }\n\n return uniforms;\n }\n}\n\n// This utility mutates the original module\n// Keeping for backward compatibility\n// TODO - remove in v8\nexport function normalizeShaderModule(module) {\n if (!module.normalized) {\n module.normalized = true;\n if (module.uniforms && !module.getUniforms) {\n const shaderModule = new ShaderModule(module);\n module.getUniforms = shaderModule.getUniforms.bind(shaderModule);\n }\n }\n return module;\n}\n\nfunction normalizeInjections(injections) {\n const result = {\n vs: {},\n fs: {}\n };\n\n for (const hook in injections) {\n let injection = injections[hook];\n const stage = hook.slice(0, 2);\n\n if (typeof injection === 'string') {\n injection = {\n order: 0,\n injection\n };\n }\n\n result[stage][hook] = injection;\n }\n\n return result;\n}\n"],"mappings":"AAAA,SAAQA,MAAR,QAAqB,UAArB;AACA,SAAQC,cAAR,QAA6B,sBAA7B;AAEA,MAAMC,aAAa,GAAG,IAAtB;AACA,MAAMC,eAAe,GAAG,IAAxB;AAEA,eAAe,MAAMC,YAAN,CAAmB;EAChCC,WAAW,OAaR;IAAA,IAbS;MACVC,IADU;MAEVC,EAFU;MAGVC,EAHU;MAIVC,YAAY,GAAG,EAJL;MAKVC,QALU;MAMVC,WANU;MAOVC,YAAY,GAAG,EAPL;MAQVC,OAAO,GAAG,EARA;MASVC,MAAM,GAAG,EATC;MAWVC,YAXU;MAYVC;IAZU,CAaT;IACDhB,MAAM,CAAC,OAAOM,IAAP,KAAgB,QAAjB,CAAN;IACA,KAAKA,IAAL,GAAYA,IAAZ;IACA,KAAKC,EAAL,GAAUA,EAAE,IAAIQ,YAAhB;IACA,KAAKP,EAAL,GAAUA,EAAE,IAAIQ,cAAhB;IACA,KAAKC,iBAAL,GAAyBN,WAAzB;IACA,KAAKF,YAAL,GAAoBA,YAApB;IACA,KAAKG,YAAL,GAAoB,KAAKM,4BAAL,CAAkCN,YAAlC,CAApB;IACA,KAAKC,OAAL,GAAeA,OAAf;IACA,KAAKM,UAAL,GAAkBC,mBAAmB,CAACN,MAAD,CAArC;;IAEA,IAAIJ,QAAJ,EAAc;MACZ,KAAKA,QAAL,GAAgBT,cAAc,CAACS,QAAD,CAA9B;IACD;EACF;;EAGDW,eAAe,CAACC,IAAD,EAAO;IACpB,IAAIC,YAAJ;;IACA,QAAQD,IAAR;MACE,KAAKpB,aAAL;QACEqB,YAAY,GAAG,KAAKhB,EAAL,IAAW,EAA1B;QACA;;MACF,KAAKJ,eAAL;QACEoB,YAAY,GAAG,KAAKf,EAAL,IAAW,EAA1B;QACA;;MACF;QACER,MAAM,CAAC,KAAD,CAAN;IARJ;;IAWA,gCACa,KAAKM,IAAL,CAAUkB,WAAV,GAAwBC,OAAxB,CAAgC,aAAhC,EAA+C,GAA/C,CADb,eAEFF,YAFE,2BAGY,KAAKjB,IAHjB;EAMD;;EAEDK,WAAW,CAACe,IAAD,EAAOhB,QAAP,EAAiB;IAC1B,IAAI,KAAKO,iBAAT,EAA4B;MAC1B,OAAO,KAAKA,iBAAL,CAAuBS,IAAvB,EAA6BhB,QAA7B,CAAP;IACD;;IAED,IAAI,KAAKA,QAAT,EAAmB;MACjB,OAAO,KAAKiB,mBAAL,CAAyBD,IAAzB,CAAP;IACD;;IACD,OAAO,EAAP;EACD;;EAEDE,UAAU,GAAG;IACX,OAAO,KAAKf,OAAZ;EACD;;EAGDgB,iBAAiB,CAACC,YAAD,EAAeC,GAAf,EAAoB;IACnC,KAAKnB,YAAL,CAAkBoB,OAAlB,CAA0BC,GAAG,IAAI;MAC/B,IAAIA,GAAG,CAACC,KAAJ,CAAUC,IAAV,CAAeL,YAAf,CAAJ,EAAkC;QAChC,IAAIG,GAAG,CAACG,UAAR,EAAoB;UAClBL,GAAG,CAACK,UAAJ,CAAeH,GAAG,CAACI,GAAnB,EAAwBJ,GAAG,CAACK,GAA5B;QACD,CAFD,MAEO;UACLP,GAAG,CAACQ,OAAJ,CAAYN,GAAG,CAACI,GAAhB,EAAqBJ,GAAG,CAACK,GAAzB;QACD;MACF;IACF,CARD;EASD;;EAEDpB,4BAA4B,CAACN,YAAD,EAAe;IACzCA,YAAY,CAACoB,OAAb,CAAqBC,GAAG,IAAI;MAC1B,QAAQA,GAAG,CAACX,IAAZ;QACE,KAAK,UAAL;UACEW,GAAG,CAACC,KAAJ,GAAY,IAAIM,MAAJ,cAAiBP,GAAG,CAACI,GAArB,SAAZ;UACA;;QACF;UACEJ,GAAG,CAACC,KAAJ,GAAY,IAAIM,MAAJ,WAAcP,GAAG,CAACX,IAAlB,cAA0BW,GAAG,CAACI,GAA9B,OAAZ;MALJ;IAOD,CARD;IAUA,OAAOzB,YAAP;EACD;;EAEDe,mBAAmB,GAAY;IAAA,IAAXD,IAAW,uEAAJ,EAAI;IAC7B,MAAMhB,QAAQ,GAAG,EAAjB;IACA,MAAM+B,SAAS,GAAG,KAAK/B,QAAvB;;IAEA,KAAK,MAAMgC,GAAX,IAAkBD,SAAlB,EAA6B;MAC3B,MAAME,OAAO,GAAGF,SAAS,CAACC,GAAD,CAAzB;;MACA,IAAIA,GAAG,IAAIhB,IAAP,IAAe,CAACiB,OAAO,CAACC,OAA5B,EAAqC;QACnC,IAAID,OAAO,CAACE,QAAZ,EAAsB;UACpB7C,MAAM,CAAC2C,OAAO,CAACE,QAAR,CAAiBnB,IAAI,CAACgB,GAAD,CAArB,EAA4BC,OAA5B,CAAD,YAA0C,KAAKrC,IAA/C,uBAAgEoC,GAAhE,EAAN;QACD;;QACDhC,QAAQ,CAACgC,GAAD,CAAR,GAAgBhB,IAAI,CAACgB,GAAD,CAApB;MACD,CALD,MAKO;QACLhC,QAAQ,CAACgC,GAAD,CAAR,GAAgBC,OAAO,CAACG,KAAxB;MACD;IACF;;IAED,OAAOpC,QAAP;EACD;;AA/G+B;AAqHlC,OAAO,SAASqC,qBAAT,CAA+BC,MAA/B,EAAuC;EAC5C,IAAI,CAACA,MAAM,CAACC,UAAZ,EAAwB;IACtBD,MAAM,CAACC,UAAP,GAAoB,IAApB;;IACA,IAAID,MAAM,CAACtC,QAAP,IAAmB,CAACsC,MAAM,CAACrC,WAA/B,EAA4C;MAC1C,MAAMuC,YAAY,GAAG,IAAI9C,YAAJ,CAAiB4C,MAAjB,CAArB;MACAA,MAAM,CAACrC,WAAP,GAAqBuC,YAAY,CAACvC,WAAb,CAAyBwC,IAAzB,CAA8BD,YAA9B,CAArB;IACD;EACF;;EACD,OAAOF,MAAP;AACD;;AAED,SAAS5B,mBAAT,CAA6BD,UAA7B,EAAyC;EACvC,MAAMiC,MAAM,GAAG;IACb7C,EAAE,EAAE,EADS;IAEbC,EAAE,EAAE;EAFS,CAAf;;EAKA,KAAK,MAAM6C,IAAX,IAAmBlC,UAAnB,EAA+B;IAC7B,IAAImC,SAAS,GAAGnC,UAAU,CAACkC,IAAD,CAA1B;IACA,MAAME,KAAK,GAAGF,IAAI,CAACG,KAAL,CAAW,CAAX,EAAc,CAAd,CAAd;;IAEA,IAAI,OAAOF,SAAP,KAAqB,QAAzB,EAAmC;MACjCA,SAAS,GAAG;QACVG,KAAK,EAAE,CADG;QAEVH;MAFU,CAAZ;IAID;;IAEDF,MAAM,CAACG,KAAD,CAAN,CAAcF,IAAd,IAAsBC,SAAtB;EACD;;EAED,OAAOF,MAAP;AACD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/transpile-shader.js"],"names":["testVariable","qualifier","RegExp","ES300_REPLACEMENTS","ES300_VERTEX_REPLACEMENTS","ES300_FRAGMENT_REPLACEMENTS","ES100_REPLACEMENTS","ES100_VERTEX_REPLACEMENTS","ES100_FRAGMENT_REPLACEMENTS","ES100_FRAGMENT_OUTPUT_NAME","ES300_FRAGMENT_OUTPUT_REGEX","REGEX_START_OF_MAIN","transpileShader","source","targetGLSLVersion","isVertex","convertShader","convertFragmentShaderTo300","convertFragmentShaderTo100","Error","replacements","pattern","replacement","replace","outputMatch","match","outputName"],"mappings":"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","sourcesContent":["// TRANSPILATION TABLES\n\nfunction testVariable(qualifier) {\n /*\n should match:\n in float weight;\n out vec4 positions[2];\n should not match:\n void f(out float a, in float b) {}\n */\n return new RegExp(`\\\\b${qualifier}[ \\\\t]+(\\\\w+[ \\\\t]+\\\\w+(\\\\[\\\\w+\\\\])?;)`, 'g');\n}\n\n/** Simple regex replacements for GLSL ES 1.00 syntax that has changed in GLSL ES 3.00 */\nconst ES300_REPLACEMENTS = [\n // Fix poorly formatted version directive\n [/^(#version[ \\t]+(100|300[ \\t]+es))?[ \\t]*\\n/, '#version 300 es\\n'],\n // The individual `texture...()` functions were replaced with `texture()` overloads\n [/\\btexture(2D|2DProj|Cube)Lod(EXT)?\\(/g, 'textureLod('],\n [/\\btexture(2D|2DProj|Cube)(EXT)?\\(/g, 'texture(']\n];\n\nconst ES300_VERTEX_REPLACEMENTS = [\n ...ES300_REPLACEMENTS,\n // `attribute` keyword replaced with `in`\n [testVariable('attribute'), 'in $1'],\n // `varying` keyword replaced with `out`\n [testVariable('varying'), 'out $1']\n];\n\n/** Simple regex replacements for GLSL ES 1.00 syntax that has changed in GLSL ES 3.00 */\nconst ES300_FRAGMENT_REPLACEMENTS = [\n ...ES300_REPLACEMENTS,\n // `varying` keyword replaced with `in`\n [testVariable('varying'), 'in $1']\n];\n\nconst ES100_REPLACEMENTS = [\n [/^#version[ \\t]+300[ \\t]+es/, '#version 100'],\n\n // In GLSL 1.00 ES these functions are provided by an extension\n [/\\btexture(2D|2DProj|Cube)Lod\\(/g, 'texture$1LodEXT('],\n\n // Overloads in GLSL 3.00 map to individual functions. Note that we cannot\n // differentiate 2D,2DProj,Cube without type analysis so we choose the most common variant.\n [/\\btexture\\(/g, 'texture2D('],\n [/\\btextureLod\\(/g, 'texture2DLodEXT(']\n];\n\nconst ES100_VERTEX_REPLACEMENTS = [\n ...ES100_REPLACEMENTS,\n [testVariable('in'), 'attribute $1'],\n [testVariable('out'), 'varying $1']\n];\n\nconst ES100_FRAGMENT_REPLACEMENTS = [\n ...ES100_REPLACEMENTS,\n // Replace `in` with `varying`\n [testVariable('in'), 'varying $1']\n];\n\nconst ES100_FRAGMENT_OUTPUT_NAME = 'gl_FragColor';\nconst ES300_FRAGMENT_OUTPUT_REGEX = /\\bout[ \\t]+vec4[ \\t]+(\\w+)[ \\t]*;\\n?/;\n\nconst REGEX_START_OF_MAIN = /void\\s+main\\s*\\([^)]*\\)\\s*\\{\\n?/; // Beginning of main\n\n// Transpiles shader source code to target GLSL version\n// Note: We always run transpiler even if same version e.g. 3.00 => 3.00\n// RFC: https://github.com/visgl/luma.gl/blob/7.0-release/dev-docs/RFCs/v6.0/portable-glsl-300-rfc.md\nexport default function transpileShader(source, targetGLSLVersion, isVertex) {\n switch (targetGLSLVersion) {\n case 300:\n return isVertex\n ? convertShader(source, ES300_VERTEX_REPLACEMENTS)\n : convertFragmentShaderTo300(source);\n case 100:\n return isVertex\n ? convertShader(source, ES100_VERTEX_REPLACEMENTS)\n : convertFragmentShaderTo100(source);\n default:\n throw new Error(`unknown GLSL version ${targetGLSLVersion}`);\n }\n}\n\nfunction convertShader(source, replacements) {\n for (const [pattern, replacement] of replacements) {\n source = source.replace(pattern, replacement);\n }\n return source;\n}\n\nfunction convertFragmentShaderTo300(source) {\n source = convertShader(source, ES300_FRAGMENT_REPLACEMENTS);\n\n const outputMatch = source.match(ES300_FRAGMENT_OUTPUT_REGEX);\n if (outputMatch) {\n const outputName = outputMatch[1];\n source = source.replace(new RegExp(`\\\\b${ES100_FRAGMENT_OUTPUT_NAME}\\\\b`, 'g'), outputName);\n } else {\n const outputName = 'fragmentColor';\n source = source\n .replace(REGEX_START_OF_MAIN, match => `out vec4 ${outputName};\\n${match}`)\n .replace(new RegExp(`\\\\b${ES100_FRAGMENT_OUTPUT_NAME}\\\\b`, 'g'), outputName);\n }\n\n return source;\n}\n\nfunction convertFragmentShaderTo100(source) {\n source = convertShader(source, ES100_FRAGMENT_REPLACEMENTS);\n\n const outputMatch = source.match(ES300_FRAGMENT_OUTPUT_REGEX);\n if (outputMatch) {\n const outputName = outputMatch[1];\n source = source\n .replace(ES300_FRAGMENT_OUTPUT_REGEX, '')\n .replace(new RegExp(`\\\\b${outputName}\\\\b`, 'g'), ES100_FRAGMENT_OUTPUT_NAME);\n }\n\n return source;\n}\n"],"file":"transpile-shader.js"}
1
+ {"version":3,"file":"transpile-shader.js","names":["testVariable","qualifier","RegExp","ES300_REPLACEMENTS","ES300_VERTEX_REPLACEMENTS","ES300_FRAGMENT_REPLACEMENTS","ES100_REPLACEMENTS","ES100_VERTEX_REPLACEMENTS","ES100_FRAGMENT_REPLACEMENTS","ES100_FRAGMENT_OUTPUT_NAME","ES300_FRAGMENT_OUTPUT_REGEX","REGEX_START_OF_MAIN","transpileShader","source","targetGLSLVersion","isVertex","convertShader","convertFragmentShaderTo300","convertFragmentShaderTo100","Error","replacements","pattern","replacement","replace","outputMatch","match","outputName"],"sources":["../../../src/lib/transpile-shader.js"],"sourcesContent":["// TRANSPILATION TABLES\n\nfunction testVariable(qualifier) {\n /*\n should match:\n in float weight;\n out vec4 positions[2];\n should not match:\n void f(out float a, in float b) {}\n */\n return new RegExp(`\\\\b${qualifier}[ \\\\t]+(\\\\w+[ \\\\t]+\\\\w+(\\\\[\\\\w+\\\\])?;)`, 'g');\n}\n\n/** Simple regex replacements for GLSL ES 1.00 syntax that has changed in GLSL ES 3.00 */\nconst ES300_REPLACEMENTS = [\n // Fix poorly formatted version directive\n [/^(#version[ \\t]+(100|300[ \\t]+es))?[ \\t]*\\n/, '#version 300 es\\n'],\n // The individual `texture...()` functions were replaced with `texture()` overloads\n [/\\btexture(2D|2DProj|Cube)Lod(EXT)?\\(/g, 'textureLod('],\n [/\\btexture(2D|2DProj|Cube)(EXT)?\\(/g, 'texture(']\n];\n\nconst ES300_VERTEX_REPLACEMENTS = [\n ...ES300_REPLACEMENTS,\n // `attribute` keyword replaced with `in`\n [testVariable('attribute'), 'in $1'],\n // `varying` keyword replaced with `out`\n [testVariable('varying'), 'out $1']\n];\n\n/** Simple regex replacements for GLSL ES 1.00 syntax that has changed in GLSL ES 3.00 */\nconst ES300_FRAGMENT_REPLACEMENTS = [\n ...ES300_REPLACEMENTS,\n // `varying` keyword replaced with `in`\n [testVariable('varying'), 'in $1']\n];\n\nconst ES100_REPLACEMENTS = [\n [/^#version[ \\t]+300[ \\t]+es/, '#version 100'],\n\n // In GLSL 1.00 ES these functions are provided by an extension\n [/\\btexture(2D|2DProj|Cube)Lod\\(/g, 'texture$1LodEXT('],\n\n // Overloads in GLSL 3.00 map to individual functions. Note that we cannot\n // differentiate 2D,2DProj,Cube without type analysis so we choose the most common variant.\n [/\\btexture\\(/g, 'texture2D('],\n [/\\btextureLod\\(/g, 'texture2DLodEXT(']\n];\n\nconst ES100_VERTEX_REPLACEMENTS = [\n ...ES100_REPLACEMENTS,\n [testVariable('in'), 'attribute $1'],\n [testVariable('out'), 'varying $1']\n];\n\nconst ES100_FRAGMENT_REPLACEMENTS = [\n ...ES100_REPLACEMENTS,\n // Replace `in` with `varying`\n [testVariable('in'), 'varying $1']\n];\n\nconst ES100_FRAGMENT_OUTPUT_NAME = 'gl_FragColor';\nconst ES300_FRAGMENT_OUTPUT_REGEX = /\\bout[ \\t]+vec4[ \\t]+(\\w+)[ \\t]*;\\n?/;\n\nconst REGEX_START_OF_MAIN = /void\\s+main\\s*\\([^)]*\\)\\s*\\{\\n?/; // Beginning of main\n\n// Transpiles shader source code to target GLSL version\n// Note: We always run transpiler even if same version e.g. 3.00 => 3.00\n// RFC: https://github.com/visgl/luma.gl/blob/7.0-release/dev-docs/RFCs/v6.0/portable-glsl-300-rfc.md\nexport default function transpileShader(source, targetGLSLVersion, isVertex) {\n switch (targetGLSLVersion) {\n case 300:\n return isVertex\n ? convertShader(source, ES300_VERTEX_REPLACEMENTS)\n : convertFragmentShaderTo300(source);\n case 100:\n return isVertex\n ? convertShader(source, ES100_VERTEX_REPLACEMENTS)\n : convertFragmentShaderTo100(source);\n default:\n throw new Error(`unknown GLSL version ${targetGLSLVersion}`);\n }\n}\n\nfunction convertShader(source, replacements) {\n for (const [pattern, replacement] of replacements) {\n source = source.replace(pattern, replacement);\n }\n return source;\n}\n\nfunction convertFragmentShaderTo300(source) {\n source = convertShader(source, ES300_FRAGMENT_REPLACEMENTS);\n\n const outputMatch = source.match(ES300_FRAGMENT_OUTPUT_REGEX);\n if (outputMatch) {\n const outputName = outputMatch[1];\n source = source.replace(new RegExp(`\\\\b${ES100_FRAGMENT_OUTPUT_NAME}\\\\b`, 'g'), outputName);\n } else {\n const outputName = 'fragmentColor';\n source = source\n .replace(REGEX_START_OF_MAIN, match => `out vec4 ${outputName};\\n${match}`)\n .replace(new RegExp(`\\\\b${ES100_FRAGMENT_OUTPUT_NAME}\\\\b`, 'g'), outputName);\n }\n\n return source;\n}\n\nfunction convertFragmentShaderTo100(source) {\n source = convertShader(source, ES100_FRAGMENT_REPLACEMENTS);\n\n const outputMatch = source.match(ES300_FRAGMENT_OUTPUT_REGEX);\n if (outputMatch) {\n const outputName = outputMatch[1];\n source = source\n .replace(ES300_FRAGMENT_OUTPUT_REGEX, '')\n .replace(new RegExp(`\\\\b${outputName}\\\\b`, 'g'), ES100_FRAGMENT_OUTPUT_NAME);\n }\n\n return source;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/dirlight/dirlight.js"],"names":["project","DEFAULT_LIGHT_DIRECTION","Float32Array","DEFAULT_MODULE_OPTIONS","lightDirection","getUniforms","opts","uniforms","dirlight_uLightDirection","vs","fs","dirlight","name","dependencies"],"mappings":"AAIA,SAAQA,OAAR,QAAsB,oBAAtB;AAGA,MAAMC,uBAAuB,GAAG,IAAIC,YAAJ,CAAiB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAjB,CAAhC;AAEA,MAAMC,sBAAsB,GAAG;AAC7BC,EAAAA,cAAc,EAAEH;AADa,CAA/B;;AAIA,SAASI,WAAT,GAAoD;AAAA,MAA/BC,IAA+B,uEAAxBH,sBAAwB;AAClD,QAAMI,QAAQ,GAAG,EAAjB;;AACA,MAAID,IAAI,CAACF,cAAT,EAAyB;AACvBG,IAAAA,QAAQ,CAACC,wBAAT,GAAoCF,IAAI,CAACF,cAAzC;AACD;;AACD,SAAOG,QAAP;AACD;;AAGD,MAAME,EAAE,GAAG,IAAX;AAEA,MAAMC,EAAE,4PAAR;AAaA,OAAO,MAAMC,QAAQ,GAAG;AACtBC,EAAAA,IAAI,EAAE,UADgB;AAEtBH,EAAAA,EAFsB;AAGtBC,EAAAA,EAHsB;AAItBL,EAAAA,WAJsB;AAKtBQ,EAAAA,YAAY,EAAE,CAACb,OAAD;AALQ,CAAjB","sourcesContent":["/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\n// Cheap lighting - single directional light, single dot product, one uniform\n\nimport {project} from '../project/project';\n\n/* eslint-disable camelcase */\nconst DEFAULT_LIGHT_DIRECTION = new Float32Array([1, 1, 2]);\n\nconst DEFAULT_MODULE_OPTIONS = {\n lightDirection: DEFAULT_LIGHT_DIRECTION\n};\n\nfunction getUniforms(opts = DEFAULT_MODULE_OPTIONS) {\n const uniforms = {};\n if (opts.lightDirection) {\n uniforms.dirlight_uLightDirection = opts.lightDirection;\n }\n return uniforms;\n}\n\n// TODO - reuse normal from geometry module\nconst vs = null;\n\nconst fs = `\\\nuniform vec3 dirlight_uLightDirection;\n\n/*\n * Returns color attenuated by angle from light source\n */\nvec4 dirlight_filterColor(vec4 color) {\n vec3 normal = project_getNormal_World();\n float d = abs(dot(normalize(normal), normalize(dirlight_uLightDirection)));\n return vec4(color.rgb * d, color.a);\n}\n`;\n\nexport const dirlight = {\n name: 'dirlight',\n vs,\n fs,\n getUniforms,\n dependencies: [project]\n};\n"],"file":"dirlight.js"}
1
+ {"version":3,"file":"dirlight.js","names":["project","DEFAULT_LIGHT_DIRECTION","Float32Array","DEFAULT_MODULE_OPTIONS","lightDirection","getUniforms","opts","uniforms","dirlight_uLightDirection","vs","fs","dirlight","name","dependencies"],"sources":["../../../../src/modules/dirlight/dirlight.js"],"sourcesContent":["/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\n// Cheap lighting - single directional light, single dot product, one uniform\n\nimport {project} from '../project/project';\n\n/* eslint-disable camelcase */\nconst DEFAULT_LIGHT_DIRECTION = new Float32Array([1, 1, 2]);\n\nconst DEFAULT_MODULE_OPTIONS = {\n lightDirection: DEFAULT_LIGHT_DIRECTION\n};\n\nfunction getUniforms(opts = DEFAULT_MODULE_OPTIONS) {\n const uniforms = {};\n if (opts.lightDirection) {\n uniforms.dirlight_uLightDirection = opts.lightDirection;\n }\n return uniforms;\n}\n\n// TODO - reuse normal from geometry module\nconst vs = null;\n\nconst fs = `\\\nuniform vec3 dirlight_uLightDirection;\n\n/*\n * Returns color attenuated by angle from light source\n */\nvec4 dirlight_filterColor(vec4 color) {\n vec3 normal = project_getNormal_World();\n float d = abs(dot(normalize(normal), normalize(dirlight_uLightDirection)));\n return vec4(color.rgb * d, color.a);\n}\n`;\n\nexport const dirlight = {\n name: 'dirlight',\n vs,\n fs,\n getUniforms,\n dependencies: [project]\n};\n"],"mappings":"AAIA,SAAQA,OAAR,QAAsB,oBAAtB;AAGA,MAAMC,uBAAuB,GAAG,IAAIC,YAAJ,CAAiB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAjB,CAAhC;AAEA,MAAMC,sBAAsB,GAAG;EAC7BC,cAAc,EAAEH;AADa,CAA/B;;AAIA,SAASI,WAAT,GAAoD;EAAA,IAA/BC,IAA+B,uEAAxBH,sBAAwB;EAClD,MAAMI,QAAQ,GAAG,EAAjB;;EACA,IAAID,IAAI,CAACF,cAAT,EAAyB;IACvBG,QAAQ,CAACC,wBAAT,GAAoCF,IAAI,CAACF,cAAzC;EACD;;EACD,OAAOG,QAAP;AACD;;AAGD,MAAME,EAAE,GAAG,IAAX;AAEA,MAAMC,EAAE,4PAAR;AAaA,OAAO,MAAMC,QAAQ,GAAG;EACtBC,IAAI,EAAE,UADgB;EAEtBH,EAFsB;EAGtBC,EAHsB;EAItBL,WAJsB;EAKtBQ,YAAY,EAAE,CAACb,OAAD;AALQ,CAAjB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/fp32/fp32.js"],"names":["fp32shader","fp32","name","vs","fs"],"mappings":"AAEA,MAAMA,UAAU,qrGAAhB;AAyJA,OAAO,MAAMC,IAAI,GAAG;AAClBC,EAAAA,IAAI,EAAE,MADY;AAElBC,EAAAA,EAAE,EAAEH,UAFc;AAGlBI,EAAAA,EAAE,EAAE;AAHc,CAAb","sourcesContent":["/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nconst fp32shader = `\\\n#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\n\n// All these functions are for substituting tan() function from Intel GPU only\nconst float TWO_PI = 6.2831854820251465;\nconst float PI_2 = 1.5707963705062866;\nconst float PI_16 = 0.1963495463132858;\n\nconst float SIN_TABLE_0 = 0.19509032368659973;\nconst float SIN_TABLE_1 = 0.3826834261417389;\nconst float SIN_TABLE_2 = 0.5555702447891235;\nconst float SIN_TABLE_3 = 0.7071067690849304;\n\nconst float COS_TABLE_0 = 0.9807852506637573;\nconst float COS_TABLE_1 = 0.9238795042037964;\nconst float COS_TABLE_2 = 0.8314695954322815;\nconst float COS_TABLE_3 = 0.7071067690849304;\n\nconst float INVERSE_FACTORIAL_3 = 1.666666716337204e-01; // 1/3!\nconst float INVERSE_FACTORIAL_5 = 8.333333767950535e-03; // 1/5!\nconst float INVERSE_FACTORIAL_7 = 1.9841270113829523e-04; // 1/7!\nconst float INVERSE_FACTORIAL_9 = 2.75573188446287533e-06; // 1/9!\n\nfloat sin_taylor_fp32(float a) {\n float r, s, t, x;\n\n if (a == 0.0) {\n return 0.0;\n }\n\n x = -a * a;\n s = a;\n r = a;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_3;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_5;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_7;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_9;\n s = s + t;\n\n return s;\n}\n\nvoid sincos_taylor_fp32(float a, out float sin_t, out float cos_t) {\n if (a == 0.0) {\n sin_t = 0.0;\n cos_t = 1.0;\n }\n sin_t = sin_taylor_fp32(a);\n cos_t = sqrt(1.0 - sin_t * sin_t);\n}\n\nfloat tan_taylor_fp32(float a) {\n float sin_a;\n float cos_a;\n\n if (a == 0.0) {\n return 0.0;\n }\n\n // 2pi range reduction\n float z = floor(a / TWO_PI);\n float r = a - TWO_PI * z;\n\n float t;\n float q = floor(r / PI_2 + 0.5);\n int j = int(q);\n\n if (j < -2 || j > 2) {\n return 1.0 / 0.0;\n }\n\n t = r - PI_2 * q;\n\n q = floor(t / PI_16 + 0.5);\n int k = int(q);\n int abs_k = int(abs(float(k)));\n\n if (abs_k > 4) {\n return 1.0 / 0.0;\n } else {\n t = t - PI_16 * q;\n }\n\n float u = 0.0;\n float v = 0.0;\n\n float sin_t, cos_t;\n float s, c;\n sincos_taylor_fp32(t, sin_t, cos_t);\n\n if (k == 0) {\n s = sin_t;\n c = cos_t;\n } else {\n if (abs(float(abs_k) - 1.0) < 0.5) {\n u = COS_TABLE_0;\n v = SIN_TABLE_0;\n } else if (abs(float(abs_k) - 2.0) < 0.5) {\n u = COS_TABLE_1;\n v = SIN_TABLE_1;\n } else if (abs(float(abs_k) - 3.0) < 0.5) {\n u = COS_TABLE_2;\n v = SIN_TABLE_2;\n } else if (abs(float(abs_k) - 4.0) < 0.5) {\n u = COS_TABLE_3;\n v = SIN_TABLE_3;\n }\n if (k > 0) {\n s = u * sin_t + v * cos_t;\n c = u * cos_t - v * sin_t;\n } else {\n s = u * sin_t - v * cos_t;\n c = u * cos_t + v * sin_t;\n }\n }\n\n if (j == 0) {\n sin_a = s;\n cos_a = c;\n } else if (j == 1) {\n sin_a = c;\n cos_a = -s;\n } else if (j == -1) {\n sin_a = -c;\n cos_a = s;\n } else {\n sin_a = -s;\n cos_a = -c;\n }\n return sin_a / cos_a;\n}\n#endif\n\nfloat tan_fp32(float a) {\n#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\n return tan_taylor_fp32(a);\n#else\n return tan(a);\n#endif\n}\n`;\n\nexport const fp32 = {\n name: 'fp32',\n vs: fp32shader,\n fs: null\n};\n"],"file":"fp32.js"}
1
+ {"version":3,"file":"fp32.js","names":["fp32shader","fp32","name","vs","fs"],"sources":["../../../../src/modules/fp32/fp32.js"],"sourcesContent":["/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nconst fp32shader = `\\\n#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\n\n// All these functions are for substituting tan() function from Intel GPU only\nconst float TWO_PI = 6.2831854820251465;\nconst float PI_2 = 1.5707963705062866;\nconst float PI_16 = 0.1963495463132858;\n\nconst float SIN_TABLE_0 = 0.19509032368659973;\nconst float SIN_TABLE_1 = 0.3826834261417389;\nconst float SIN_TABLE_2 = 0.5555702447891235;\nconst float SIN_TABLE_3 = 0.7071067690849304;\n\nconst float COS_TABLE_0 = 0.9807852506637573;\nconst float COS_TABLE_1 = 0.9238795042037964;\nconst float COS_TABLE_2 = 0.8314695954322815;\nconst float COS_TABLE_3 = 0.7071067690849304;\n\nconst float INVERSE_FACTORIAL_3 = 1.666666716337204e-01; // 1/3!\nconst float INVERSE_FACTORIAL_5 = 8.333333767950535e-03; // 1/5!\nconst float INVERSE_FACTORIAL_7 = 1.9841270113829523e-04; // 1/7!\nconst float INVERSE_FACTORIAL_9 = 2.75573188446287533e-06; // 1/9!\n\nfloat sin_taylor_fp32(float a) {\n float r, s, t, x;\n\n if (a == 0.0) {\n return 0.0;\n }\n\n x = -a * a;\n s = a;\n r = a;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_3;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_5;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_7;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_9;\n s = s + t;\n\n return s;\n}\n\nvoid sincos_taylor_fp32(float a, out float sin_t, out float cos_t) {\n if (a == 0.0) {\n sin_t = 0.0;\n cos_t = 1.0;\n }\n sin_t = sin_taylor_fp32(a);\n cos_t = sqrt(1.0 - sin_t * sin_t);\n}\n\nfloat tan_taylor_fp32(float a) {\n float sin_a;\n float cos_a;\n\n if (a == 0.0) {\n return 0.0;\n }\n\n // 2pi range reduction\n float z = floor(a / TWO_PI);\n float r = a - TWO_PI * z;\n\n float t;\n float q = floor(r / PI_2 + 0.5);\n int j = int(q);\n\n if (j < -2 || j > 2) {\n return 1.0 / 0.0;\n }\n\n t = r - PI_2 * q;\n\n q = floor(t / PI_16 + 0.5);\n int k = int(q);\n int abs_k = int(abs(float(k)));\n\n if (abs_k > 4) {\n return 1.0 / 0.0;\n } else {\n t = t - PI_16 * q;\n }\n\n float u = 0.0;\n float v = 0.0;\n\n float sin_t, cos_t;\n float s, c;\n sincos_taylor_fp32(t, sin_t, cos_t);\n\n if (k == 0) {\n s = sin_t;\n c = cos_t;\n } else {\n if (abs(float(abs_k) - 1.0) < 0.5) {\n u = COS_TABLE_0;\n v = SIN_TABLE_0;\n } else if (abs(float(abs_k) - 2.0) < 0.5) {\n u = COS_TABLE_1;\n v = SIN_TABLE_1;\n } else if (abs(float(abs_k) - 3.0) < 0.5) {\n u = COS_TABLE_2;\n v = SIN_TABLE_2;\n } else if (abs(float(abs_k) - 4.0) < 0.5) {\n u = COS_TABLE_3;\n v = SIN_TABLE_3;\n }\n if (k > 0) {\n s = u * sin_t + v * cos_t;\n c = u * cos_t - v * sin_t;\n } else {\n s = u * sin_t - v * cos_t;\n c = u * cos_t + v * sin_t;\n }\n }\n\n if (j == 0) {\n sin_a = s;\n cos_a = c;\n } else if (j == 1) {\n sin_a = c;\n cos_a = -s;\n } else if (j == -1) {\n sin_a = -c;\n cos_a = s;\n } else {\n sin_a = -s;\n cos_a = -c;\n }\n return sin_a / cos_a;\n}\n#endif\n\nfloat tan_fp32(float a) {\n#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\n return tan_taylor_fp32(a);\n#else\n return tan(a);\n#endif\n}\n`;\n\nexport const fp32 = {\n name: 'fp32',\n vs: fp32shader,\n fs: null\n};\n"],"mappings":"AAEA,MAAMA,UAAU,qrGAAhB;AAyJA,OAAO,MAAMC,IAAI,GAAG;EAClBC,IAAI,EAAE,MADY;EAElBC,EAAE,EAAEH,UAFc;EAGlBI,EAAE,EAAE;AAHc,CAAb"}