@graphty/graphty-element 1.0.1 → 1.0.3

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 (97) hide show
  1. package/README.md +1 -1
  2. package/dist/{basisTextureLoader-BqIvxvNl.js → basisTextureLoader-YJHdQGdC.js} +2 -2
  3. package/dist/{basisTextureLoader-BqIvxvNl.js.map → basisTextureLoader-YJHdQGdC.js.map} +1 -1
  4. package/dist/{dds-BlAaKjyJ.js → dds-DQLf_hLn.js} +2 -2
  5. package/dist/{dds-BlAaKjyJ.js.map → dds-DQLf_hLn.js.map} +1 -1
  6. package/dist/{ddsTextureLoader-D7Jh83wc.js → ddsTextureLoader-lj5EmdyW.js} +3 -3
  7. package/dist/{ddsTextureLoader-D7Jh83wc.js.map → ddsTextureLoader-lj5EmdyW.js.map} +1 -1
  8. package/dist/{default.fragment-CSeCDRwv.js → default.fragment-Blpb62wl.js} +6 -6
  9. package/dist/{default.fragment-CSeCDRwv.js.map → default.fragment-Blpb62wl.js.map} +1 -1
  10. package/dist/{default.fragment-BNc4beoN.js → default.fragment-BqlvuhH_.js} +6 -6
  11. package/dist/{default.fragment-BNc4beoN.js.map → default.fragment-BqlvuhH_.js.map} +1 -1
  12. package/dist/{default.vertex-9pBFrn06.js → default.vertex-BibOEUcC.js} +7 -7
  13. package/dist/{default.vertex-9pBFrn06.js.map → default.vertex-BibOEUcC.js.map} +1 -1
  14. package/dist/{default.vertex-DDjK1DRv.js → default.vertex-Dblk9O84.js} +7 -7
  15. package/dist/{default.vertex-DDjK1DRv.js.map → default.vertex-Dblk9O84.js.map} +1 -1
  16. package/dist/{defaultUboDeclaration-Ct5CiQ-w.js → defaultUboDeclaration-CO0hcGNU.js} +3 -3
  17. package/dist/{defaultUboDeclaration-Ct5CiQ-w.js.map → defaultUboDeclaration-CO0hcGNU.js.map} +1 -1
  18. package/dist/{defaultUboDeclaration-CG47IDRY.js → defaultUboDeclaration-D2cHxVkr.js} +3 -3
  19. package/dist/{defaultUboDeclaration-CG47IDRY.js.map → defaultUboDeclaration-D2cHxVkr.js.map} +1 -1
  20. package/dist/{dumpTools-DA1xMSIZ.js → dumpTools-DryVPnxm.js} +4 -4
  21. package/dist/{dumpTools-DA1xMSIZ.js.map → dumpTools-DryVPnxm.js.map} +1 -1
  22. package/dist/{envTextureLoader-DdCLpySN.js → envTextureLoader-zUp-sm34.js} +4 -4
  23. package/dist/{envTextureLoader-DdCLpySN.js.map → envTextureLoader-zUp-sm34.js.map} +1 -1
  24. package/dist/{exrTextureLoader-CnJSRQ9w.js → exrTextureLoader-CWNwDbqP.js} +2 -2
  25. package/dist/{exrTextureLoader-CnJSRQ9w.js.map → exrTextureLoader-CWNwDbqP.js.map} +1 -1
  26. package/dist/graphty.js +1 -1
  27. package/dist/{greasedLine.fragment-DixuqXus.js → greasedLine.fragment-BtdnWwPJ.js} +2 -2
  28. package/dist/{greasedLine.fragment-DixuqXus.js.map → greasedLine.fragment-BtdnWwPJ.js.map} +1 -1
  29. package/dist/{greasedLine.fragment-BZnGGe-r.js → greasedLine.fragment-DakXbZDt.js} +2 -2
  30. package/dist/{greasedLine.fragment-BZnGGe-r.js.map → greasedLine.fragment-DakXbZDt.js.map} +1 -1
  31. package/dist/{greasedLine.vertex-BhhwFKPy.js → greasedLine.vertex-DbhEvmnm.js} +3 -3
  32. package/dist/{greasedLine.vertex-BhhwFKPy.js.map → greasedLine.vertex-DbhEvmnm.js.map} +1 -1
  33. package/dist/{greasedLine.vertex-DIhgGSOi.js → greasedLine.vertex-Lh32HaiU.js} +4 -4
  34. package/dist/{greasedLine.vertex-DIhgGSOi.js.map → greasedLine.vertex-Lh32HaiU.js.map} +1 -1
  35. package/dist/{harmonicsFunctions-B9jTNKTF.js → harmonicsFunctions-Bki1gBZd.js} +3 -3
  36. package/dist/{harmonicsFunctions-B9jTNKTF.js.map → harmonicsFunctions-Bki1gBZd.js.map} +1 -1
  37. package/dist/{harmonicsFunctions-D9ZL5yLA.js → harmonicsFunctions-CjRTo-m9.js} +3 -3
  38. package/dist/{harmonicsFunctions-D9ZL5yLA.js.map → harmonicsFunctions-CjRTo-m9.js.map} +1 -1
  39. package/dist/{hdrTextureLoader-DreWCvHD.js → hdrTextureLoader-CLKfu37v.js} +2 -2
  40. package/dist/{hdrTextureLoader-DreWCvHD.js.map → hdrTextureLoader-CLKfu37v.js.map} +1 -1
  41. package/dist/{helperFunctions-Dh1WD8YN.js → helperFunctions-CQxHHy8r.js} +2 -2
  42. package/dist/{helperFunctions-Dh1WD8YN.js.map → helperFunctions-CQxHHy8r.js.map} +1 -1
  43. package/dist/{helperFunctions-ZBnqb-in.js → helperFunctions-TtJlWReK.js} +2 -2
  44. package/dist/{helperFunctions-ZBnqb-in.js.map → helperFunctions-TtJlWReK.js.map} +1 -1
  45. package/dist/{iesTextureLoader-JdfAyRK-.js → iesTextureLoader-BcJl2Arq.js} +2 -2
  46. package/dist/{iesTextureLoader-JdfAyRK-.js.map → iesTextureLoader-BcJl2Arq.js.map} +1 -1
  47. package/dist/{index-ChGTkj2q.js → index-DM3Dwe0V.js} +16 -16
  48. package/dist/{index-ChGTkj2q.js.map → index-DM3Dwe0V.js.map} +1 -1
  49. package/dist/{instancesVertex-evcSIvCA.js → instancesVertex-Dr04ZqKw.js} +2 -2
  50. package/dist/{instancesVertex-evcSIvCA.js.map → instancesVertex-Dr04ZqKw.js.map} +1 -1
  51. package/dist/{instancesVertex-BrWNnWxF.js → instancesVertex-DzC88b5Z.js} +2 -2
  52. package/dist/{instancesVertex-BrWNnWxF.js.map → instancesVertex-DzC88b5Z.js.map} +1 -1
  53. package/dist/{ktxTextureLoader-Dg1h0a-4.js → ktxTextureLoader-O794CBz4.js} +2 -2
  54. package/dist/{ktxTextureLoader-Dg1h0a-4.js.map → ktxTextureLoader-O794CBz4.js.map} +1 -1
  55. package/dist/{logDepthDeclaration-BHUUDd5l.js → logDepthDeclaration--8Jq3fys.js} +2 -2
  56. package/dist/{logDepthDeclaration-BHUUDd5l.js.map → logDepthDeclaration--8Jq3fys.js.map} +1 -1
  57. package/dist/{logDepthDeclaration-Bou5AJOP.js → logDepthDeclaration-DcveQRTq.js} +2 -2
  58. package/dist/{logDepthDeclaration-Bou5AJOP.js.map → logDepthDeclaration-DcveQRTq.js.map} +1 -1
  59. package/dist/{logDepthVertex-r_niddz9.js → logDepthVertex-BiWlUDke.js} +2 -2
  60. package/dist/{logDepthVertex-r_niddz9.js.map → logDepthVertex-BiWlUDke.js.map} +1 -1
  61. package/dist/{logDepthVertex-CCFGLExi.js → logDepthVertex-CYjRNQ1d.js} +2 -2
  62. package/dist/{logDepthVertex-CCFGLExi.js.map → logDepthVertex-CYjRNQ1d.js.map} +1 -1
  63. package/dist/{meshUboDeclaration-Dg__Mhmj.js → meshUboDeclaration-BmcefUDK.js} +2 -2
  64. package/dist/{meshUboDeclaration-Dg__Mhmj.js.map → meshUboDeclaration-BmcefUDK.js.map} +1 -1
  65. package/dist/{oitFragment-Bn29Ggvj.js → oitFragment-DP-aFNyo.js} +2 -2
  66. package/dist/{oitFragment-Bn29Ggvj.js.map → oitFragment-DP-aFNyo.js.map} +1 -1
  67. package/dist/{oitFragment-D6JBEGk0.js → oitFragment-DzgaBzc0.js} +2 -2
  68. package/dist/{oitFragment-D6JBEGk0.js.map → oitFragment-DzgaBzc0.js.map} +1 -1
  69. package/dist/{pass.fragment-Cf0ob1Y3.js → pass.fragment-DoZCyELK.js} +2 -2
  70. package/dist/{pass.fragment-Cf0ob1Y3.js.map → pass.fragment-DoZCyELK.js.map} +1 -1
  71. package/dist/{pass.fragment-C9O4ZLJL.js → pass.fragment-DxSTcWpC.js} +2 -2
  72. package/dist/{pass.fragment-C9O4ZLJL.js.map → pass.fragment-DxSTcWpC.js.map} +1 -1
  73. package/dist/{passCube.fragment-uM4B7TOI.js → passCube.fragment-Dv4FB3Ug.js} +2 -2
  74. package/dist/{passCube.fragment-uM4B7TOI.js.map → passCube.fragment-Dv4FB3Ug.js.map} +1 -1
  75. package/dist/{passCube.fragment-Mg8Qj5T9.js → passCube.fragment-nsqY0ZtC.js} +2 -2
  76. package/dist/{passCube.fragment-Mg8Qj5T9.js.map → passCube.fragment-nsqY0ZtC.js.map} +1 -1
  77. package/dist/{pbr.fragment-C8Lm3cwF.js → pbr.fragment-B13QduZT.js} +6 -6
  78. package/dist/{pbr.fragment-C8Lm3cwF.js.map → pbr.fragment-B13QduZT.js.map} +1 -1
  79. package/dist/{pbr.fragment-siOdCYqI.js → pbr.fragment-B6tx_cvK.js} +6 -6
  80. package/dist/{pbr.fragment-siOdCYqI.js.map → pbr.fragment-B6tx_cvK.js.map} +1 -1
  81. package/dist/{pbr.vertex-CmEPCcBW.js → pbr.vertex-CA7bnQjU.js} +7 -7
  82. package/dist/{pbr.vertex-CmEPCcBW.js.map → pbr.vertex-CA7bnQjU.js.map} +1 -1
  83. package/dist/{pbr.vertex-Bw_TrGQv.js → pbr.vertex-DW6iNOI2.js} +7 -7
  84. package/dist/{pbr.vertex-Bw_TrGQv.js.map → pbr.vertex-DW6iNOI2.js.map} +1 -1
  85. package/dist/{postprocess.vertex-B086G8mM.js → postprocess.vertex-DZzYDZfo.js} +2 -2
  86. package/dist/{postprocess.vertex-B086G8mM.js.map → postprocess.vertex-DZzYDZfo.js.map} +1 -1
  87. package/dist/{rgbdDecode.fragment-bNaGtQ-x.js → rgbdDecode.fragment-CAcs2JmP.js} +3 -3
  88. package/dist/{rgbdDecode.fragment-bNaGtQ-x.js.map → rgbdDecode.fragment-CAcs2JmP.js.map} +1 -1
  89. package/dist/{rgbdDecode.fragment-koAcppx0.js → rgbdDecode.fragment-E4n4lu8J.js} +3 -3
  90. package/dist/{rgbdDecode.fragment-koAcppx0.js.map → rgbdDecode.fragment-E4n4lu8J.js.map} +1 -1
  91. package/dist/{rgbdEncode.fragment-BDHL2P_i.js → rgbdEncode.fragment-CgYUAa43.js} +3 -3
  92. package/dist/{rgbdEncode.fragment-BDHL2P_i.js.map → rgbdEncode.fragment-CgYUAa43.js.map} +1 -1
  93. package/dist/{rgbdEncode.fragment-Dw0FS9aH.js → rgbdEncode.fragment-DCdpffcW.js} +3 -3
  94. package/dist/{rgbdEncode.fragment-Dw0FS9aH.js.map → rgbdEncode.fragment-DCdpffcW.js.map} +1 -1
  95. package/dist/{tgaTextureLoader-DIfkfgQh.js → tgaTextureLoader-DPWaEGJH.js} +2 -2
  96. package/dist/{tgaTextureLoader-DIfkfgQh.js.map → tgaTextureLoader-DPWaEGJH.js.map} +1 -1
  97. package/package.json +9 -5
@@ -1 +1 @@
1
- {"version":3,"file":"iesTextureLoader-JdfAyRK-.js","sources":["../node_modules/@babylonjs/core/Lights/IES/iesLoader.js","../node_modules/@babylonjs/core/Materials/Textures/Loaders/iesTextureLoader.js"],"sourcesContent":["import { Lerp } from \"../../Maths/math.scalar.functions.js\";\nfunction LineToArray(line) {\n return line\n .split(\" \")\n .filter((x) => x !== \"\")\n .map((x) => parseFloat(x));\n}\nfunction ReadArray(dataPointer, count, targetArray) {\n while (targetArray.length !== count) {\n const line = LineToArray(dataPointer.lines[dataPointer.index++]);\n targetArray.push(...line);\n }\n}\nfunction InterpolateCandelaValues(data, phi, theta) {\n let phiIndex = 0;\n let thetaIndex = 0;\n let startTheta = 0;\n let endTheta = 0;\n let startPhi = 0;\n let endPhi = 0;\n // Check if the angle is outside the range\n for (let index = 0; index < data.numberOfHorizontalAngles - 1; index++) {\n if (theta < data.horizontalAngles[index + 1] || index === data.numberOfHorizontalAngles - 2) {\n thetaIndex = index;\n startTheta = data.horizontalAngles[index];\n endTheta = data.horizontalAngles[index + 1];\n break;\n }\n }\n for (let index = 0; index < data.numberOfVerticalAngles - 1; index++) {\n if (phi < data.verticalAngles[index + 1] || index === data.numberOfVerticalAngles - 2) {\n phiIndex = index;\n startPhi = data.verticalAngles[index];\n endPhi = data.verticalAngles[index + 1];\n break;\n }\n }\n const deltaTheta = endTheta - startTheta;\n const deltaPhi = endPhi - startPhi;\n if (deltaPhi === 0) {\n return 0;\n }\n // Interpolate\n const t1 = deltaTheta === 0 ? 0 : (theta - startTheta) / deltaTheta;\n const t2 = (phi - startPhi) / deltaPhi;\n const nextThetaIndex = deltaTheta === 0 ? thetaIndex : thetaIndex + 1;\n const v1 = Lerp(data.candelaValues[thetaIndex][phiIndex], data.candelaValues[nextThetaIndex][phiIndex], t1);\n const v2 = Lerp(data.candelaValues[thetaIndex][phiIndex + 1], data.candelaValues[nextThetaIndex][phiIndex + 1], t1);\n const v = Lerp(v1, v2, t2);\n return v;\n}\n/**\n * Generates IES data buffer from a string representing the IES data.\n * @param uint8Array defines the IES data\n * @returns the IES data buffer\n * @see https://ieslibrary.com/browse\n * @see https://playground.babylonjs.com/#UQGPDT#1\n */\nexport function LoadIESData(uint8Array) {\n const decoder = new TextDecoder(\"utf-8\");\n const source = decoder.decode(uint8Array);\n // Read data\n const dataPointer = {\n lines: source.split(\"\\n\"),\n index: 0,\n };\n const data = { version: dataPointer.lines[0], candelaValues: [], horizontalAngles: [], verticalAngles: [], numberOfHorizontalAngles: 0, numberOfVerticalAngles: 0 };\n // Skip metadata\n dataPointer.index = 1;\n while (dataPointer.lines.length > 0 && !dataPointer.lines[dataPointer.index].includes(\"TILT=\")) {\n dataPointer.index++;\n }\n // Process tilt data?\n if (dataPointer.lines[dataPointer.index].includes(\"INCLUDE\")) {\n // Not supported yet as I did not manage to find an example :)\n }\n dataPointer.index++;\n // Header\n const header = LineToArray(dataPointer.lines[dataPointer.index++]);\n data.numberOfLights = header[0];\n data.lumensPerLamp = header[1];\n data.candelaMultiplier = header[2];\n data.numberOfVerticalAngles = header[3];\n data.numberOfHorizontalAngles = header[4];\n data.photometricType = header[5]; // We ignore cylindrical type for now. Will add support later if needed\n data.unitsType = header[6];\n data.width = header[7];\n data.length = header[8];\n data.height = header[9];\n // Additional data\n const additionalData = LineToArray(dataPointer.lines[dataPointer.index++]);\n data.ballastFactor = additionalData[0];\n data.fileGenerationType = additionalData[1];\n data.inputWatts = additionalData[2];\n // Prepare arrays\n for (let index = 0; index < data.numberOfHorizontalAngles; index++) {\n data.candelaValues[index] = [];\n }\n // Vertical angles\n ReadArray(dataPointer, data.numberOfVerticalAngles, data.verticalAngles);\n // Horizontal angles\n ReadArray(dataPointer, data.numberOfHorizontalAngles, data.horizontalAngles);\n // Candela values\n for (let index = 0; index < data.numberOfHorizontalAngles; index++) {\n ReadArray(dataPointer, data.numberOfVerticalAngles, data.candelaValues[index]);\n }\n // Evaluate candela values\n let maxCandela = -1;\n for (let index = 0; index < data.numberOfHorizontalAngles; index++) {\n for (let subIndex = 0; subIndex < data.numberOfVerticalAngles; subIndex++) {\n data.candelaValues[index][subIndex] *= data.candelaValues[index][subIndex] * data.candelaMultiplier * data.ballastFactor * data.fileGenerationType;\n maxCandela = Math.max(maxCandela, data.candelaValues[index][subIndex]);\n }\n }\n // Normalize candela values\n if (maxCandela > 0) {\n for (let index = 0; index < data.numberOfHorizontalAngles; index++) {\n for (let subIndex = 0; subIndex < data.numberOfVerticalAngles; subIndex++) {\n data.candelaValues[index][subIndex] /= maxCandela;\n }\n }\n }\n // Create the cylindrical texture\n const height = 180;\n const width = height * 2;\n const size = width * height;\n const arrayBuffer = new Float32Array(width * height);\n // Fill the texture\n const startTheta = data.horizontalAngles[0];\n const endTheta = data.horizontalAngles[data.numberOfHorizontalAngles - 1];\n for (let index = 0; index < size; index++) {\n let theta = index % width;\n const phi = Math.floor(index / width);\n // Symmetry\n if (endTheta - startTheta !== 0 && (theta < startTheta || theta >= endTheta)) {\n theta %= endTheta * 2;\n if (theta > endTheta) {\n theta = endTheta * 2 - theta;\n }\n }\n arrayBuffer[phi + theta * height] = InterpolateCandelaValues(data, phi, theta);\n }\n // So far we only need the first half of the first row of the texture as we only support IES for spot light. We can add support for other types later.\n return {\n width: width / 2,\n height: 1,\n data: arrayBuffer,\n };\n}\n//# sourceMappingURL=iesLoader.js.map","\nimport { LoadIESData } from \"../../../Lights/IES/iesLoader.js\";\n/**\n * Implementation of the IES Texture Loader.\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport class _IESTextureLoader {\n constructor() {\n /**\n * Defines whether the loader supports cascade loading the different faces.\n */\n this.supportCascades = false;\n }\n /**\n * Uploads the cube texture data to the WebGL texture. It has already been bound.\n */\n loadCubeData() {\n // eslint-disable-next-line no-throw-literal\n throw \".ies not supported in Cube.\";\n }\n /**\n * Uploads the 2D texture data to the WebGL texture. It has already been bound once in the callback.\n * @param data contains the texture data\n * @param texture defines the BabylonJS internal texture\n * @param callback defines the method to call once ready to upload\n */\n loadData(data, texture, callback) {\n const uint8array = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n const textureData = LoadIESData(uint8array);\n callback(textureData.width, textureData.height, false, false, () => {\n const engine = texture.getEngine();\n texture.type = 1;\n texture.format = 6;\n texture._gammaSpace = false;\n engine._uploadDataToTextureDirectly(texture, textureData.data);\n });\n }\n}\n//# sourceMappingURL=iesTextureLoader.js.map"],"names":["LineToArray","line","x","ReadArray","dataPointer","count","targetArray","InterpolateCandelaValues","data","phi","theta","phiIndex","thetaIndex","startTheta","endTheta","startPhi","endPhi","index","deltaTheta","deltaPhi","t1","t2","nextThetaIndex","v1","Lerp","v2","LoadIESData","uint8Array","header","additionalData","maxCandela","subIndex","height","width","size","arrayBuffer","_IESTextureLoader","texture","callback","uint8array","textureData","engine"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"iesTextureLoader-BcJl2Arq.js","sources":["../node_modules/@babylonjs/core/Lights/IES/iesLoader.js","../node_modules/@babylonjs/core/Materials/Textures/Loaders/iesTextureLoader.js"],"sourcesContent":["import { Lerp } from \"../../Maths/math.scalar.functions.js\";\nfunction LineToArray(line) {\n return line\n .split(\" \")\n .filter((x) => x !== \"\")\n .map((x) => parseFloat(x));\n}\nfunction ReadArray(dataPointer, count, targetArray) {\n while (targetArray.length !== count) {\n const line = LineToArray(dataPointer.lines[dataPointer.index++]);\n targetArray.push(...line);\n }\n}\nfunction InterpolateCandelaValues(data, phi, theta) {\n let phiIndex = 0;\n let thetaIndex = 0;\n let startTheta = 0;\n let endTheta = 0;\n let startPhi = 0;\n let endPhi = 0;\n // Check if the angle is outside the range\n for (let index = 0; index < data.numberOfHorizontalAngles - 1; index++) {\n if (theta < data.horizontalAngles[index + 1] || index === data.numberOfHorizontalAngles - 2) {\n thetaIndex = index;\n startTheta = data.horizontalAngles[index];\n endTheta = data.horizontalAngles[index + 1];\n break;\n }\n }\n for (let index = 0; index < data.numberOfVerticalAngles - 1; index++) {\n if (phi < data.verticalAngles[index + 1] || index === data.numberOfVerticalAngles - 2) {\n phiIndex = index;\n startPhi = data.verticalAngles[index];\n endPhi = data.verticalAngles[index + 1];\n break;\n }\n }\n const deltaTheta = endTheta - startTheta;\n const deltaPhi = endPhi - startPhi;\n if (deltaPhi === 0) {\n return 0;\n }\n // Interpolate\n const t1 = deltaTheta === 0 ? 0 : (theta - startTheta) / deltaTheta;\n const t2 = (phi - startPhi) / deltaPhi;\n const nextThetaIndex = deltaTheta === 0 ? thetaIndex : thetaIndex + 1;\n const v1 = Lerp(data.candelaValues[thetaIndex][phiIndex], data.candelaValues[nextThetaIndex][phiIndex], t1);\n const v2 = Lerp(data.candelaValues[thetaIndex][phiIndex + 1], data.candelaValues[nextThetaIndex][phiIndex + 1], t1);\n const v = Lerp(v1, v2, t2);\n return v;\n}\n/**\n * Generates IES data buffer from a string representing the IES data.\n * @param uint8Array defines the IES data\n * @returns the IES data buffer\n * @see https://ieslibrary.com/browse\n * @see https://playground.babylonjs.com/#UQGPDT#1\n */\nexport function LoadIESData(uint8Array) {\n const decoder = new TextDecoder(\"utf-8\");\n const source = decoder.decode(uint8Array);\n // Read data\n const dataPointer = {\n lines: source.split(\"\\n\"),\n index: 0,\n };\n const data = { version: dataPointer.lines[0], candelaValues: [], horizontalAngles: [], verticalAngles: [], numberOfHorizontalAngles: 0, numberOfVerticalAngles: 0 };\n // Skip metadata\n dataPointer.index = 1;\n while (dataPointer.lines.length > 0 && !dataPointer.lines[dataPointer.index].includes(\"TILT=\")) {\n dataPointer.index++;\n }\n // Process tilt data?\n if (dataPointer.lines[dataPointer.index].includes(\"INCLUDE\")) {\n // Not supported yet as I did not manage to find an example :)\n }\n dataPointer.index++;\n // Header\n const header = LineToArray(dataPointer.lines[dataPointer.index++]);\n data.numberOfLights = header[0];\n data.lumensPerLamp = header[1];\n data.candelaMultiplier = header[2];\n data.numberOfVerticalAngles = header[3];\n data.numberOfHorizontalAngles = header[4];\n data.photometricType = header[5]; // We ignore cylindrical type for now. Will add support later if needed\n data.unitsType = header[6];\n data.width = header[7];\n data.length = header[8];\n data.height = header[9];\n // Additional data\n const additionalData = LineToArray(dataPointer.lines[dataPointer.index++]);\n data.ballastFactor = additionalData[0];\n data.fileGenerationType = additionalData[1];\n data.inputWatts = additionalData[2];\n // Prepare arrays\n for (let index = 0; index < data.numberOfHorizontalAngles; index++) {\n data.candelaValues[index] = [];\n }\n // Vertical angles\n ReadArray(dataPointer, data.numberOfVerticalAngles, data.verticalAngles);\n // Horizontal angles\n ReadArray(dataPointer, data.numberOfHorizontalAngles, data.horizontalAngles);\n // Candela values\n for (let index = 0; index < data.numberOfHorizontalAngles; index++) {\n ReadArray(dataPointer, data.numberOfVerticalAngles, data.candelaValues[index]);\n }\n // Evaluate candela values\n let maxCandela = -1;\n for (let index = 0; index < data.numberOfHorizontalAngles; index++) {\n for (let subIndex = 0; subIndex < data.numberOfVerticalAngles; subIndex++) {\n data.candelaValues[index][subIndex] *= data.candelaValues[index][subIndex] * data.candelaMultiplier * data.ballastFactor * data.fileGenerationType;\n maxCandela = Math.max(maxCandela, data.candelaValues[index][subIndex]);\n }\n }\n // Normalize candela values\n if (maxCandela > 0) {\n for (let index = 0; index < data.numberOfHorizontalAngles; index++) {\n for (let subIndex = 0; subIndex < data.numberOfVerticalAngles; subIndex++) {\n data.candelaValues[index][subIndex] /= maxCandela;\n }\n }\n }\n // Create the cylindrical texture\n const height = 180;\n const width = height * 2;\n const size = width * height;\n const arrayBuffer = new Float32Array(width * height);\n // Fill the texture\n const startTheta = data.horizontalAngles[0];\n const endTheta = data.horizontalAngles[data.numberOfHorizontalAngles - 1];\n for (let index = 0; index < size; index++) {\n let theta = index % width;\n const phi = Math.floor(index / width);\n // Symmetry\n if (endTheta - startTheta !== 0 && (theta < startTheta || theta >= endTheta)) {\n theta %= endTheta * 2;\n if (theta > endTheta) {\n theta = endTheta * 2 - theta;\n }\n }\n arrayBuffer[phi + theta * height] = InterpolateCandelaValues(data, phi, theta);\n }\n // So far we only need the first half of the first row of the texture as we only support IES for spot light. We can add support for other types later.\n return {\n width: width / 2,\n height: 1,\n data: arrayBuffer,\n };\n}\n//# sourceMappingURL=iesLoader.js.map","\nimport { LoadIESData } from \"../../../Lights/IES/iesLoader.js\";\n/**\n * Implementation of the IES Texture Loader.\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport class _IESTextureLoader {\n constructor() {\n /**\n * Defines whether the loader supports cascade loading the different faces.\n */\n this.supportCascades = false;\n }\n /**\n * Uploads the cube texture data to the WebGL texture. It has already been bound.\n */\n loadCubeData() {\n // eslint-disable-next-line no-throw-literal\n throw \".ies not supported in Cube.\";\n }\n /**\n * Uploads the 2D texture data to the WebGL texture. It has already been bound once in the callback.\n * @param data contains the texture data\n * @param texture defines the BabylonJS internal texture\n * @param callback defines the method to call once ready to upload\n */\n loadData(data, texture, callback) {\n const uint8array = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n const textureData = LoadIESData(uint8array);\n callback(textureData.width, textureData.height, false, false, () => {\n const engine = texture.getEngine();\n texture.type = 1;\n texture.format = 6;\n texture._gammaSpace = false;\n engine._uploadDataToTextureDirectly(texture, textureData.data);\n });\n }\n}\n//# sourceMappingURL=iesTextureLoader.js.map"],"names":["LineToArray","line","x","ReadArray","dataPointer","count","targetArray","InterpolateCandelaValues","data","phi","theta","phiIndex","thetaIndex","startTheta","endTheta","startPhi","endPhi","index","deltaTheta","deltaPhi","t1","t2","nextThetaIndex","v1","Lerp","v2","LoadIESData","uint8Array","header","additionalData","maxCandela","subIndex","height","width","size","arrayBuffer","_IESTextureLoader","texture","callback","uint8array","textureData","engine"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -6520,7 +6520,7 @@ function cw() {
6520
6520
  })(n);
6521
6521
  }(Ef)), Ef;
6522
6522
  }
6523
- var nb = /* @__PURE__ */ cw();
6523
+ var nb = cw();
6524
6524
  const co = /* @__PURE__ */ Sd(nb);
6525
6525
  function x(n, e, t, i) {
6526
6526
  var s = arguments.length, r = s < 3 ? e : i === null ? i = Object.getOwnPropertyDescriptor(e, t) : i, a;
@@ -9829,7 +9829,7 @@ function rF(n) {
9829
9829
  return pu.delete(n);
9830
9830
  }
9831
9831
  function nF(n, e) {
9832
- (e === "image/ktx" || e === "image/ktx2") && (n = ".ktx"), pu.has(n) || (n.endsWith(".ies") && on(".ies", async () => await import("./iesTextureLoader-JdfAyRK-.js").then((i) => new i._IESTextureLoader())), n.endsWith(".dds") && on(".dds", async () => await import("./ddsTextureLoader-D7Jh83wc.js").then((i) => new i._DDSTextureLoader())), n.endsWith(".basis") && on(".basis", async () => await import("./basisTextureLoader-BqIvxvNl.js").then((i) => new i._BasisTextureLoader())), n.endsWith(".env") && on(".env", async () => await import("./envTextureLoader-DdCLpySN.js").then((i) => new i._ENVTextureLoader())), n.endsWith(".hdr") && on(".hdr", async () => await import("./hdrTextureLoader-DreWCvHD.js").then((i) => new i._HDRTextureLoader())), (n.endsWith(".ktx") || n.endsWith(".ktx2")) && (on(".ktx", async () => await import("./ktxTextureLoader-Dg1h0a-4.js").then((i) => new i._KTXTextureLoader())), on(".ktx2", async () => await import("./ktxTextureLoader-Dg1h0a-4.js").then((i) => new i._KTXTextureLoader()))), n.endsWith(".tga") && on(".tga", async () => await import("./tgaTextureLoader-DIfkfgQh.js").then((i) => new i._TGATextureLoader())), n.endsWith(".exr") && on(".exr", async () => await import("./exrTextureLoader-CnJSRQ9w.js").then((i) => new i._ExrTextureLoader())));
9832
+ (e === "image/ktx" || e === "image/ktx2") && (n = ".ktx"), pu.has(n) || (n.endsWith(".ies") && on(".ies", async () => await import("./iesTextureLoader-BcJl2Arq.js").then((i) => new i._IESTextureLoader())), n.endsWith(".dds") && on(".dds", async () => await import("./ddsTextureLoader-lj5EmdyW.js").then((i) => new i._DDSTextureLoader())), n.endsWith(".basis") && on(".basis", async () => await import("./basisTextureLoader-YJHdQGdC.js").then((i) => new i._BasisTextureLoader())), n.endsWith(".env") && on(".env", async () => await import("./envTextureLoader-zUp-sm34.js").then((i) => new i._ENVTextureLoader())), n.endsWith(".hdr") && on(".hdr", async () => await import("./hdrTextureLoader-CLKfu37v.js").then((i) => new i._HDRTextureLoader())), (n.endsWith(".ktx") || n.endsWith(".ktx2")) && (on(".ktx", async () => await import("./ktxTextureLoader-O794CBz4.js").then((i) => new i._KTXTextureLoader())), on(".ktx2", async () => await import("./ktxTextureLoader-O794CBz4.js").then((i) => new i._KTXTextureLoader()))), n.endsWith(".tga") && on(".tga", async () => await import("./tgaTextureLoader-DPWaEGJH.js").then((i) => new i._TGATextureLoader())), n.endsWith(".exr") && on(".exr", async () => await import("./exrTextureLoader-CWNwDbqP.js").then((i) => new i._ExrTextureLoader())));
9833
9833
  const t = pu.get(n);
9834
9834
  return t ? Promise.resolve(t(e)) : null;
9835
9835
  }
@@ -32482,7 +32482,7 @@ class he extends Hd {
32482
32482
  multiTarget: a.PREPASS,
32483
32483
  shaderLanguage: this._shaderLanguage,
32484
32484
  extraInitializationsAsync: this._shadersLoaded ? void 0 : async () => {
32485
- this._shaderLanguage === 1 ? await Promise.all([import("./default.vertex-DDjK1DRv.js"), import("./default.fragment-BNc4beoN.js")]) : await Promise.all([import("./default.vertex-9pBFrn06.js"), import("./default.fragment-CSeCDRwv.js")]), this._shadersLoaded = !0;
32485
+ this._shaderLanguage === 1 ? await Promise.all([import("./default.vertex-Dblk9O84.js"), import("./default.fragment-BqlvuhH_.js")]) : await Promise.all([import("./default.vertex-BibOEUcC.js"), import("./default.fragment-Blpb62wl.js")]), this._shadersLoaded = !0;
32486
32486
  }
32487
32487
  }, o);
32488
32488
  if (this._eventInfo.customCode = void 0, O)
@@ -33160,7 +33160,7 @@ class os {
33160
33160
  this._postConstructor(this.options.blockCompilation, t, this.options.extraInitializations);
33161
33161
  }
33162
33162
  _gatherImports(e = !1, t) {
33163
- this.options.useAsPostProcess && (e && this._webGPUReady ? t.push(Promise.all([import("./postprocess.vertex-B086G8mM.js")])) : t.push(Promise.all([Promise.resolve().then(() => Qb)])));
33163
+ this.options.useAsPostProcess && (e && this._webGPUReady ? t.push(Promise.all([import("./postprocess.vertex-DZzYDZfo.js")])) : t.push(Promise.all([Promise.resolve().then(() => Qb)])));
33164
33164
  }
33165
33165
  /** @internal */
33166
33166
  _postConstructor(e, t = null, i, s) {
@@ -33393,7 +33393,7 @@ class si {
33393
33393
  }
33394
33394
  }
33395
33395
  _gatherImports(e = !1, t) {
33396
- e && this._webGPUReady ? t.push(Promise.all([import("./postprocess.vertex-B086G8mM.js")])) : t.push(Promise.all([Promise.resolve().then(() => Qb)]));
33396
+ e && this._webGPUReady ? t.push(Promise.all([import("./postprocess.vertex-DZzYDZfo.js")])) : t.push(Promise.all([Promise.resolve().then(() => Qb)]));
33397
33397
  }
33398
33398
  /**
33399
33399
  * Gets a string identifying the name of the class
@@ -34503,7 +34503,7 @@ class vo extends re {
34503
34503
  * @returns true if all required resources are ready
34504
34504
  */
34505
34505
  isReadyForRendering() {
34506
- this._dumpToolsLoading || (this._dumpToolsLoading = !0, import("./dumpTools-DA1xMSIZ.js").then((t) => this._dumpTools = t)), this._objectRenderer.prepareRenderList(), this.onBeforeBindObservable.notifyObservers(this), this._objectRenderer.initRender(this.getRenderWidth(), this.getRenderHeight());
34506
+ this._dumpToolsLoading || (this._dumpToolsLoading = !0, import("./dumpTools-DryVPnxm.js").then((t) => this._dumpTools = t)), this._objectRenderer.prepareRenderList(), this.onBeforeBindObservable.notifyObservers(this), this._objectRenderer.initRender(this.getRenderWidth(), this.getRenderHeight());
34507
34507
  const e = this._objectRenderer._checkReadiness();
34508
34508
  return this.onAfterUnbindObservable.notifyObservers(this), this._objectRenderer.finishRender(), e;
34509
34509
  }
@@ -38614,7 +38614,7 @@ He.prototype.createPrefilteredCubeTexture = function(n, e, t, i, s = null, r = n
38614
38614
  const _ = 3, p = this._gl, E = f.width;
38615
38615
  if (!E)
38616
38616
  return;
38617
- const { DDSTools: m } = await import("./dds-BlAaKjyJ.js"), A = [];
38617
+ const { DDSTools: m } = await import("./dds-DQLf_hLn.js"), A = [];
38618
38618
  for (let C = 0; C < _; C++) {
38619
38619
  const F = 1 - C / (_ - 1), P = i, O = Math.log2(E) * t + i, S = P + (O - P) * F, N = Math.round(Math.min(Math.max(S, 0), O)), G = new Ns(
38620
38620
  this,
@@ -39452,7 +39452,7 @@ ce.SCALEMODE_NEAREST = 2;
39452
39452
  ce.SCALEMODE_CEILING = 3;
39453
39453
  class xo extends os {
39454
39454
  _gatherImports(e, t) {
39455
- e ? (this._webGPUReady = !0, t.push(Promise.all([import("./pass.fragment-C9O4ZLJL.js")]))) : t.push(Promise.all([import("./pass.fragment-Cf0ob1Y3.js")])), super._gatherImports(e, t);
39455
+ e ? (this._webGPUReady = !0, t.push(Promise.all([import("./pass.fragment-DxSTcWpC.js")]))) : t.push(Promise.all([import("./pass.fragment-DoZCyELK.js")])), super._gatherImports(e, t);
39456
39456
  }
39457
39457
  /**
39458
39458
  * Constructs a new pass post process
@@ -39474,7 +39474,7 @@ class xo extends os {
39474
39474
  xo.FragmentUrl = "pass";
39475
39475
  class Uu extends os {
39476
39476
  _gatherImports(e, t) {
39477
- e ? (this._webGPUReady = !0, t.push(Promise.all([import("./passCube.fragment-Mg8Qj5T9.js")]))) : t.push(Promise.all([import("./passCube.fragment-uM4B7TOI.js")])), super._gatherImports(e, t);
39477
+ e ? (this._webGPUReady = !0, t.push(Promise.all([import("./passCube.fragment-nsqY0ZtC.js")]))) : t.push(Promise.all([import("./passCube.fragment-Dv4FB3Ug.js")])), super._gatherImports(e, t);
39478
39478
  }
39479
39479
  /**
39480
39480
  * Creates the PassCubePostProcess
@@ -39682,7 +39682,7 @@ class fT {
39682
39682
  s.textureHalfFloatRender && s.textureHalfFloatLinearFiltering ? (a = !0, t.type = 2) : s.textureFloatRender && s.textureFloatLinearFiltering && (a = !0, t.type = 1), a && (t.isReady = !1, t._isRGBD = !1, t.invertY = !1);
39683
39683
  const o = async () => {
39684
39684
  const h = i.isWebGPU, u = h ? 1 : 0;
39685
- t.isReady = !1, h ? await import("./rgbdDecode.fragment-bNaGtQ-x.js") : await import("./rgbdDecode.fragment-koAcppx0.js");
39685
+ t.isReady = !1, h ? await import("./rgbdDecode.fragment-CAcs2JmP.js") : await import("./rgbdDecode.fragment-E4n4lu8J.js");
39686
39686
  const f = new si("rgbdDecode", "rgbdDecode", null, null, 1, null, 3, i, !1, void 0, t.type, void 0, null, !1, void 0, u);
39687
39687
  f.externalTextureSamplerBinding = !0;
39688
39688
  const d = i.createRenderTargetTexture(t.width, {
@@ -39713,7 +39713,7 @@ class fT {
39713
39713
  // Should have "Async" in the name but this is a breaking change.
39714
39714
  // eslint-disable-next-line no-restricted-syntax
39715
39715
  static async EncodeTextureToRGBD(e, t, i = 0) {
39716
- return t.getEngine().isWebGPU ? await import("./rgbdEncode.fragment-BDHL2P_i.js") : await import("./rgbdEncode.fragment-Dw0FS9aH.js"), await mL("rgbdEncode", e, t, i, 1, 5);
39716
+ return t.getEngine().isWebGPU ? await import("./rgbdEncode.fragment-CgYUAa43.js") : await import("./rgbdEncode.fragment-DCdpffcW.js"), await mL("rgbdEncode", e, t, i, 1, 5);
39717
39717
  }
39718
39718
  }
39719
39719
  const TL = "data:image/png;base64,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";
@@ -40994,7 +40994,7 @@ class St extends Hd {
40994
40994
  multiTarget: t.PREPASS,
40995
40995
  shaderLanguage: this._shaderLanguage,
40996
40996
  extraInitializationsAsync: this._shadersLoaded ? void 0 : async () => {
40997
- this.shaderLanguage === 1 ? await Promise.all([import("./pbr.vertex-Bw_TrGQv.js"), import("./pbr.fragment-C8Lm3cwF.js")]) : await Promise.all([import("./pbr.vertex-CmEPCcBW.js"), import("./pbr.fragment-siOdCYqI.js")]), this._shadersLoaded = !0;
40997
+ this.shaderLanguage === 1 ? await Promise.all([import("./pbr.vertex-DW6iNOI2.js"), import("./pbr.fragment-B13QduZT.js")]) : await Promise.all([import("./pbr.vertex-CA7bnQjU.js"), import("./pbr.fragment-B6tx_cvK.js")]), this._shadersLoaded = !0;
40998
40998
  }
40999
40999
  }, u);
41000
41000
  return this._eventInfo.customCode = void 0, P;
@@ -52143,7 +52143,7 @@ class Co extends Kn {
52143
52143
  samplers: r ? [] : ["grlColors"],
52144
52144
  defines: a,
52145
52145
  extraInitializationsAsync: async () => {
52146
- r ? await Promise.all([import("./greasedLine.vertex-DIhgGSOi.js"), import("./greasedLine.fragment-BZnGGe-r.js")]) : await Promise.all([import("./greasedLine.vertex-BhhwFKPy.js"), import("./greasedLine.fragment-DixuqXus.js")]);
52146
+ r ? await Promise.all([import("./greasedLine.vertex-Lh32HaiU.js"), import("./greasedLine.fragment-DakXbZDt.js")]) : await Promise.all([import("./greasedLine.vertex-DbhEvmnm.js"), import("./greasedLine.fragment-BtdnWwPJ.js")]);
52147
52147
  },
52148
52148
  shaderLanguage: r ? 1 : 0
52149
52149
  }), this._color = Se.White(), this._colorsDistributionType = 0, this._colorsTexture = null, i = i || {
@@ -57950,7 +57950,7 @@ function print() { __p += __j.call(arguments, '') }
57950
57950
  }).call(rN);
57951
57951
  }(rh, rh.exports)), rh.exports;
57952
57952
  }
57953
- var pr = /* @__PURE__ */ nN();
57953
+ var pr = nN();
57954
57954
  const aN = /* @__PURE__ */ Sd(pr);
57955
57955
  class oN {
57956
57956
  // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
@@ -61254,7 +61254,7 @@ function UN() {
61254
61254
  })(window, document, "Hammer");
61255
61255
  }(Ff)), Ff.exports;
61256
61256
  }
61257
- var kN = /* @__PURE__ */ UN();
61257
+ var kN = UN();
61258
61258
  const ya = /* @__PURE__ */ Sd(kN);
61259
61259
  class zN {
61260
61260
  constructor(e, t) {
@@ -62188,4 +62188,4 @@ export {
62188
62188
  ls as n,
62189
62189
  iB as t
62190
62190
  };
62191
- //# sourceMappingURL=index-ChGTkj2q.js.map
62191
+ //# sourceMappingURL=index-DM3Dwe0V.js.map