x_ite 8.7.8 → 8.8.0

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 (646) hide show
  1. package/Makefile +3 -0
  2. package/build/bin/version.pl +1 -1
  3. package/dist/assets/components/Annotation.js +248 -169
  4. package/dist/assets/components/Annotation.min.js +1 -1
  5. package/dist/assets/components/CADGeometry.js +296 -233
  6. package/dist/assets/components/CADGeometry.min.js +1 -1
  7. package/dist/assets/components/CubeMapTexturing.js +217 -172
  8. package/dist/assets/components/CubeMapTexturing.min.js +1 -1
  9. package/dist/assets/components/DIS.js +451 -387
  10. package/dist/assets/components/DIS.min.js +1 -1
  11. package/dist/assets/components/EventUtilities.js +309 -208
  12. package/dist/assets/components/EventUtilities.min.js +1 -1
  13. package/dist/assets/components/Geometry2D.js +397 -333
  14. package/dist/assets/components/Geometry2D.min.js +1 -1
  15. package/dist/assets/components/Geospatial.js +705 -575
  16. package/dist/assets/components/Geospatial.min.js +1 -1
  17. package/dist/assets/components/HAnim.js +319 -259
  18. package/dist/assets/components/HAnim.min.js +1 -1
  19. package/dist/assets/components/KeyDeviceSensor.js +134 -99
  20. package/dist/assets/components/KeyDeviceSensor.min.js +1 -1
  21. package/dist/assets/components/Layout.js +305 -240
  22. package/dist/assets/components/Layout.min.js +1 -1
  23. package/dist/assets/components/NURBS.js +781 -626
  24. package/dist/assets/components/NURBS.min.js +1 -1
  25. package/dist/assets/components/ParticleSystems.js +632 -460
  26. package/dist/assets/components/ParticleSystems.min.js +1 -1
  27. package/dist/assets/components/Picking.js +376 -295
  28. package/dist/assets/components/Picking.min.js +1 -1
  29. package/dist/assets/components/RigidBodyPhysics.js +936 -749
  30. package/dist/assets/components/RigidBodyPhysics.min.js +1 -1
  31. package/dist/assets/components/Scripting.js +173 -103
  32. package/dist/assets/components/Scripting.min.js +1 -1
  33. package/dist/assets/components/Text.js +241 -207
  34. package/dist/assets/components/Text.min.js +1 -1
  35. package/dist/assets/components/TextureProjector.js +162 -129
  36. package/dist/assets/components/TextureProjector.min.js +1 -1
  37. package/dist/assets/components/Texturing3D.js +485 -384
  38. package/dist/assets/components/Texturing3D.min.js +1 -1
  39. package/dist/assets/components/VolumeRendering.js +741 -547
  40. package/dist/assets/components/VolumeRendering.min.js +1 -1
  41. package/dist/assets/components/X_ITE.js +66 -54
  42. package/dist/assets/components/X_ITE.min.js +1 -1
  43. package/dist/x_ite.css +1 -1
  44. package/dist/x_ite.js +61554 -59658
  45. package/dist/x_ite.min.js +1 -1
  46. package/dist/x_ite.zip +0 -0
  47. package/docs/_config.yml +2 -2
  48. package/package.json +4 -4
  49. package/src/assets/components/Annotation.js +14 -14
  50. package/src/assets/components/CADGeometry.js +14 -14
  51. package/src/assets/components/CubeMapTexturing.js +11 -11
  52. package/src/assets/components/DIS.js +13 -13
  53. package/src/assets/components/EventUtilities.js +16 -16
  54. package/src/assets/components/Geometry2D.js +15 -15
  55. package/src/assets/components/Geospatial.js +19 -19
  56. package/src/assets/components/HAnim.js +13 -13
  57. package/src/assets/components/KeyDeviceSensor.js +10 -10
  58. package/src/assets/components/Layout.js +13 -13
  59. package/src/assets/components/NURBS.js +24 -24
  60. package/src/assets/components/ParticleSystems.js +19 -19
  61. package/src/assets/components/Picking.js +14 -14
  62. package/src/assets/components/RigidBodyPhysics.js +24 -24
  63. package/src/assets/components/Scripting.js +9 -9
  64. package/src/assets/components/Text.js +10 -10
  65. package/src/assets/components/TextureProjector.js +10 -10
  66. package/src/assets/components/Texturing3D.js +16 -16
  67. package/src/assets/components/VolumeRendering.js +23 -23
  68. package/src/assets/components/X_ITE.js +8 -7
  69. package/src/assets/shaders/webgl1/include/Shadow.glsl.js +21 -25
  70. package/src/assets/shaders/webgl2/include/Shadow.glsl.js +23 -27
  71. package/src/bookmarks.js +2 -2
  72. package/src/lib/jquery.js +42 -30
  73. package/src/standard/Geospatial/Geodetic.js +8 -9
  74. package/src/standard/Geospatial/UniversalTransverseMercator.js +4 -5
  75. package/src/standard/Math/Algorithm.js +41 -56
  76. package/src/standard/Math/Algorithms/Bezier.js +2 -2
  77. package/src/standard/Math/Algorithms/MergeSort.js +6 -6
  78. package/src/standard/Math/Algorithms/PartialSort.js +5 -5
  79. package/src/standard/Math/Algorithms/QuickSort.js +5 -5
  80. package/src/standard/Math/Geometry/Box2.js +16 -17
  81. package/src/standard/Math/Geometry/Box3.js +18 -19
  82. package/src/standard/Math/Geometry/Camera.js +6 -5
  83. package/src/standard/Math/Geometry/Cylinder3.js +6 -7
  84. package/src/standard/Math/Geometry/Line2.js +20 -18
  85. package/src/standard/Math/Geometry/Line3.js +20 -18
  86. package/src/standard/Math/Geometry/Plane3.js +11 -12
  87. package/src/standard/Math/Geometry/Sphere3.js +6 -7
  88. package/src/standard/Math/Geometry/Spheroid3.js +6 -7
  89. package/src/standard/Math/Geometry/Triangle2.js +4 -3
  90. package/src/standard/Math/Geometry/Triangle3.js +5 -4
  91. package/src/standard/Math/Geometry/ViewVolume.js +6 -7
  92. package/src/standard/Math/Numbers/Color3.js +18 -19
  93. package/src/standard/Math/Numbers/Color4.js +20 -21
  94. package/src/standard/Math/Numbers/Complex.js +28 -29
  95. package/src/standard/Math/Numbers/Matrix2.js +22 -23
  96. package/src/standard/Math/Numbers/Matrix3.js +28 -29
  97. package/src/standard/Math/Numbers/Matrix4.js +29 -30
  98. package/src/standard/Math/Numbers/Quaternion.js +40 -41
  99. package/src/standard/Math/Numbers/Rotation4.js +34 -35
  100. package/src/standard/Math/Numbers/Vector2.js +29 -30
  101. package/src/standard/Math/Numbers/Vector3.js +32 -33
  102. package/src/standard/Math/Numbers/Vector4.js +34 -35
  103. package/src/standard/Math/Utility/BVH.js +14 -15
  104. package/src/standard/Math/Utility/MatrixStack.js +12 -12
  105. package/src/standard/Time/MicroTime.js +4 -3
  106. package/src/standard/Utility/BitSet.js +10 -11
  107. package/src/standard/Utility/DataStorage.js +10 -10
  108. package/src/standard/Utility/MapUtilities.js +2 -1
  109. package/src/standard/Utility/ObjectCache.js +3 -3
  110. package/src/tests.js +10 -0
  111. package/src/x_ite/Base/Events.js +3 -3
  112. package/src/x_ite/Base/FieldArray.js +11 -9
  113. package/src/x_ite/Base/FieldDefinitionArray.js +11 -9
  114. package/src/x_ite/Base/X3DArrayField.js +13 -14
  115. package/src/x_ite/Base/X3DBaseNode.js +219 -181
  116. package/src/x_ite/Base/X3DCast.js +1 -1
  117. package/src/x_ite/Base/X3DChildObject.js +162 -53
  118. package/src/x_ite/Base/X3DConstants.js +74 -60
  119. package/src/x_ite/Base/X3DEventObject.js +6 -12
  120. package/src/x_ite/Base/X3DField.js +45 -42
  121. package/src/x_ite/Base/X3DFieldDefinition.js +9 -7
  122. package/src/x_ite/Base/X3DInfoArray.js +75 -65
  123. package/src/x_ite/Base/X3DObject.js +59 -29
  124. package/src/x_ite/Base/X3DObjectArrayField.js +51 -117
  125. package/src/x_ite/Base/X3DTypedArrayField.js +48 -42
  126. package/src/x_ite/Browser/Core/BrowserOptions.js +55 -57
  127. package/src/x_ite/Browser/Core/BrowserProperties.js +18 -20
  128. package/src/x_ite/Browser/Core/BrowserTimings.js +29 -33
  129. package/src/x_ite/Browser/Core/Context.js +7 -7
  130. package/src/x_ite/Browser/Core/ContextMenu.js +61 -83
  131. package/src/x_ite/Browser/Core/Notification.js +12 -12
  132. package/src/x_ite/Browser/Core/RenderingProperties.js +28 -28
  133. package/src/x_ite/Browser/Core/X3DCoreContext.js +45 -37
  134. package/src/x_ite/Browser/DOMIntegration.js +4 -1
  135. package/src/x_ite/Browser/EnvironmentalEffects/X3DEnvironmentalEffectsContext.js +3 -3
  136. package/src/x_ite/Browser/Followers/X3DArrayChaserTemplate.js +1 -1
  137. package/src/x_ite/Browser/Followers/X3DArrayFollowerTemplate.js +12 -12
  138. package/src/x_ite/Browser/Geometry2D/Arc2DOptions.js +8 -14
  139. package/src/x_ite/Browser/Geometry2D/ArcClose2DOptions.js +8 -14
  140. package/src/x_ite/Browser/Geometry2D/Circle2DOptions.js +13 -17
  141. package/src/x_ite/Browser/Geometry2D/Disk2DOptions.js +15 -19
  142. package/src/x_ite/Browser/Geometry2D/Rectangle2DOptions.js +12 -16
  143. package/src/x_ite/Browser/Geometry2D/X3DGeometry2DContext.js +9 -9
  144. package/src/x_ite/Browser/Geometry3D/BoxOptions.js +12 -16
  145. package/src/x_ite/Browser/Geometry3D/ConeOptions.js +6 -12
  146. package/src/x_ite/Browser/Geometry3D/CylinderOptions.js +6 -12
  147. package/src/x_ite/Browser/Geometry3D/IcoSphereOptions.js +13 -17
  148. package/src/x_ite/Browser/Geometry3D/QuadSphereOptions.js +17 -21
  149. package/src/x_ite/Browser/Geometry3D/X3DGeometry3DContext.js +8 -8
  150. package/src/x_ite/Browser/Geospatial/Geocentric.js +5 -6
  151. package/src/x_ite/Browser/Geospatial/Geospatial.js +10 -10
  152. package/src/x_ite/Browser/Grouping/X3DGroupingContext.js +3 -3
  153. package/src/x_ite/Browser/Interpolation/CatmullRomSplineInterpolator.js +2 -3
  154. package/src/x_ite/Browser/Interpolation/CatmullRomSplineInterpolator1.js +8 -9
  155. package/src/x_ite/Browser/Interpolation/CatmullRomSplineInterpolatorTemplate.js +7 -8
  156. package/src/x_ite/Browser/Interpolation/SquatInterpolator.js +3 -4
  157. package/src/x_ite/Browser/KeyDeviceSensor/X3DKeyDeviceSensorContext.js +8 -8
  158. package/src/x_ite/Browser/Layering/X3DLayeringContext.js +4 -4
  159. package/src/x_ite/Browser/Layout/ScreenText.js +7 -8
  160. package/src/x_ite/Browser/Layout/X3DLayoutContext.js +3 -3
  161. package/src/x_ite/Browser/Legacy.js +32 -12
  162. package/src/x_ite/Browser/Lighting/X3DLightingContext.js +5 -5
  163. package/src/x_ite/Browser/NURBS/NURBS.js +10 -10
  164. package/src/x_ite/Browser/Navigation/ExamineViewer.js +32 -20
  165. package/src/x_ite/Browser/Navigation/FlyViewer.js +22 -10
  166. package/src/x_ite/Browser/Navigation/LookAtViewer.js +29 -17
  167. package/src/x_ite/Browser/Navigation/NoneViewer.js +15 -5
  168. package/src/x_ite/Browser/Navigation/PlaneViewer.js +24 -12
  169. package/src/x_ite/Browser/Navigation/WalkViewer.js +22 -10
  170. package/src/x_ite/Browser/Navigation/X3DFlyViewer.js +17 -18
  171. package/src/x_ite/Browser/Navigation/X3DNavigationContext.js +19 -19
  172. package/src/x_ite/Browser/Navigation/X3DViewer.js +13 -19
  173. package/src/x_ite/Browser/Networking/URLs.js +5 -5
  174. package/src/x_ite/Browser/Networking/X3DNetworkingContext.js +16 -16
  175. package/src/x_ite/Browser/ParticleSystems/X3DParticleSystemsContext.js +3 -3
  176. package/src/x_ite/Browser/Picking/VolumePicker.js +8 -8
  177. package/src/x_ite/Browser/Picking/X3DPickingContext.js +12 -12
  178. package/src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js +24 -20
  179. package/src/x_ite/Browser/PointingDeviceSensor/PointingDeviceSensorContainer.js +6 -6
  180. package/src/x_ite/Browser/PointingDeviceSensor/X3DPointingDeviceSensorContext.js +21 -21
  181. package/src/x_ite/Browser/Rendering/GeometryContext.js +4 -5
  182. package/src/x_ite/Browser/Rendering/X3DRenderingContext.js +18 -18
  183. package/src/x_ite/Browser/Scripting/X3DScriptingContext.js +4 -4
  184. package/src/x_ite/Browser/Shaders/ShaderCompiler.js +4 -4
  185. package/src/x_ite/Browser/Shaders/ShaderSource.js +1 -1
  186. package/src/x_ite/Browser/Shaders/X3DShadersContext.js +13 -13
  187. package/src/x_ite/Browser/Shape/X3DShapeContext.js +12 -12
  188. package/src/x_ite/Browser/Sound/X3DSoundContext.js +0 -2
  189. package/src/x_ite/Browser/Text/PolygonText.js +10 -11
  190. package/src/x_ite/Browser/Text/X3DTextContext.js +6 -6
  191. package/src/x_ite/Browser/Text/X3DTextGeometry.js +18 -19
  192. package/src/x_ite/Browser/Texturing/GifMedia.js +7 -7
  193. package/src/x_ite/Browser/Texturing/X3DTexturingContext.js +24 -24
  194. package/src/x_ite/Browser/Texturing3D/DICOMParser.js +38 -38
  195. package/src/x_ite/Browser/Texturing3D/NRRDParser.js +14 -14
  196. package/src/x_ite/Browser/Time/X3DTimeContext.js +5 -5
  197. package/src/x_ite/Browser/VERSION.js +1 -1
  198. package/src/x_ite/Browser/VolumeRendering/VolumeMaterial.js +39 -22
  199. package/src/x_ite/Browser/VolumeRendering/X3DVolumeRenderingContext.js +6 -6
  200. package/src/x_ite/Browser/X3DBrowser.js +170 -136
  201. package/src/x_ite/Browser/X3DBrowserContext.js +23 -24
  202. package/src/x_ite/Components/Annotation/AnnotationLayer.js +30 -19
  203. package/src/x_ite/Components/Annotation/AnnotationTarget.js +30 -19
  204. package/src/x_ite/Components/Annotation/GroupAnnotation.js +40 -29
  205. package/src/x_ite/Components/Annotation/IconAnnotation.js +38 -27
  206. package/src/x_ite/Components/Annotation/TextAnnotation.js +31 -20
  207. package/src/x_ite/Components/Annotation/URLAnnotation.js +30 -19
  208. package/src/x_ite/Components/Annotation/X3DAnnotationNode.js +16 -3
  209. package/src/x_ite/Components/CADGeometry/CADAssembly.js +32 -21
  210. package/src/x_ite/Components/CADGeometry/CADFace.js +48 -37
  211. package/src/x_ite/Components/CADGeometry/CADLayer.js +30 -21
  212. package/src/x_ite/Components/CADGeometry/CADPart.js +37 -26
  213. package/src/x_ite/Components/CADGeometry/IndexedQuadSet.js +51 -46
  214. package/src/x_ite/Components/CADGeometry/QuadSet.js +48 -43
  215. package/src/x_ite/Components/CADGeometry/X3DProductStructureChildNode.js +13 -2
  216. package/src/x_ite/Components/Core/MetadataBoolean.js +33 -22
  217. package/src/x_ite/Components/Core/MetadataDouble.js +33 -22
  218. package/src/x_ite/Components/Core/MetadataFloat.js +33 -22
  219. package/src/x_ite/Components/Core/MetadataInteger.js +33 -22
  220. package/src/x_ite/Components/Core/MetadataSet.js +33 -22
  221. package/src/x_ite/Components/Core/MetadataString.js +33 -22
  222. package/src/x_ite/Components/Core/WorldInfo.js +34 -23
  223. package/src/x_ite/Components/Core/X3DBindableNode.js +17 -4
  224. package/src/x_ite/Components/Core/X3DChildNode.js +19 -6
  225. package/src/x_ite/Components/Core/X3DInfoNode.js +13 -2
  226. package/src/x_ite/Components/Core/X3DMetadataObject.js +18 -5
  227. package/src/x_ite/Components/Core/X3DNode.js +66 -34
  228. package/src/x_ite/Components/Core/X3DPrototypeInstance.js +68 -77
  229. package/src/x_ite/Components/Core/X3DSensorNode.js +13 -2
  230. package/src/x_ite/Components/Core.js +22 -29
  231. package/src/x_ite/Components/CubeMapTexturing/ComposedCubeMapTexture.js +46 -35
  232. package/src/x_ite/Components/CubeMapTexturing/GeneratedCubeMapTexture.js +39 -28
  233. package/src/x_ite/Components/CubeMapTexturing/ImageCubeMapTexture.js +47 -36
  234. package/src/x_ite/Components/CubeMapTexturing/X3DEnvironmentTextureNode.js +21 -8
  235. package/src/x_ite/Components/DIS/DISEntityManager.js +29 -20
  236. package/src/x_ite/Components/DIS/DISEntityTypeMapping.js +41 -30
  237. package/src/x_ite/Components/DIS/EspduTransform.js +117 -106
  238. package/src/x_ite/Components/DIS/ReceiverPdu.js +60 -49
  239. package/src/x_ite/Components/DIS/SignalPdu.js +60 -49
  240. package/src/x_ite/Components/DIS/TransmitterPdu.js +76 -65
  241. package/src/x_ite/Components/EnvironmentalEffects/Background.js +47 -36
  242. package/src/x_ite/Components/EnvironmentalEffects/Fog.js +42 -31
  243. package/src/x_ite/Components/EnvironmentalEffects/FogCoordinate.js +39 -28
  244. package/src/x_ite/Components/EnvironmentalEffects/LocalFog.js +40 -29
  245. package/src/x_ite/Components/EnvironmentalEffects/TextureBackground.js +48 -37
  246. package/src/x_ite/Components/EnvironmentalEffects/X3DBackgroundNode.js +28 -15
  247. package/src/x_ite/Components/EnvironmentalEffects/X3DFogObject.js +30 -18
  248. package/src/x_ite/Components/EnvironmentalEffects.js +15 -22
  249. package/src/x_ite/Components/EnvironmentalSensor/ProximitySensor.js +45 -34
  250. package/src/x_ite/Components/EnvironmentalSensor/TransformSensor.js +50 -39
  251. package/src/x_ite/Components/EnvironmentalSensor/VisibilitySensor.js +41 -30
  252. package/src/x_ite/Components/EnvironmentalSensor/X3DEnvironmentalSensorNode.js +22 -9
  253. package/src/x_ite/Components/EnvironmentalSensor.js +12 -19
  254. package/src/x_ite/Components/EventUtilities/BooleanFilter.js +38 -27
  255. package/src/x_ite/Components/EventUtilities/BooleanSequencer.js +38 -27
  256. package/src/x_ite/Components/EventUtilities/BooleanToggle.js +33 -22
  257. package/src/x_ite/Components/EventUtilities/BooleanTrigger.js +32 -21
  258. package/src/x_ite/Components/EventUtilities/IntegerSequencer.js +38 -27
  259. package/src/x_ite/Components/EventUtilities/IntegerTrigger.js +33 -22
  260. package/src/x_ite/Components/EventUtilities/TimeTrigger.js +32 -21
  261. package/src/x_ite/Components/EventUtilities/X3DSequencerNode.js +20 -7
  262. package/src/x_ite/Components/EventUtilities/X3DTriggerNode.js +13 -2
  263. package/src/x_ite/Components/Followers/ColorChaser.js +47 -36
  264. package/src/x_ite/Components/Followers/ColorDamper.js +49 -38
  265. package/src/x_ite/Components/Followers/CoordinateChaser.js +33 -22
  266. package/src/x_ite/Components/Followers/CoordinateDamper.js +35 -24
  267. package/src/x_ite/Components/Followers/OrientationChaser.js +43 -32
  268. package/src/x_ite/Components/Followers/OrientationDamper.js +41 -30
  269. package/src/x_ite/Components/Followers/PositionChaser.js +33 -22
  270. package/src/x_ite/Components/Followers/PositionChaser2D.js +33 -22
  271. package/src/x_ite/Components/Followers/PositionDamper.js +35 -24
  272. package/src/x_ite/Components/Followers/PositionDamper2D.js +35 -24
  273. package/src/x_ite/Components/Followers/ScalarChaser.js +47 -36
  274. package/src/x_ite/Components/Followers/ScalarDamper.js +43 -32
  275. package/src/x_ite/Components/Followers/TexCoordChaser2D.js +33 -22
  276. package/src/x_ite/Components/Followers/TexCoordDamper2D.js +35 -24
  277. package/src/x_ite/Components/Followers/X3DChaserNode.js +27 -14
  278. package/src/x_ite/Components/Followers/X3DDamperNode.js +22 -9
  279. package/src/x_ite/Components/Followers/X3DFollowerNode.js +29 -16
  280. package/src/x_ite/Components/Followers.js +25 -32
  281. package/src/x_ite/Components/Geometry2D/Arc2D.js +38 -27
  282. package/src/x_ite/Components/Geometry2D/ArcClose2D.js +39 -28
  283. package/src/x_ite/Components/Geometry2D/Circle2D.js +35 -24
  284. package/src/x_ite/Components/Geometry2D/Disk2D.js +40 -29
  285. package/src/x_ite/Components/Geometry2D/Polyline2D.js +34 -23
  286. package/src/x_ite/Components/Geometry2D/Polypoint2D.js +34 -23
  287. package/src/x_ite/Components/Geometry2D/Rectangle2D.js +34 -23
  288. package/src/x_ite/Components/Geometry2D/TriangleSet2D.js +36 -25
  289. package/src/x_ite/Components/Geometry3D/Box.js +34 -23
  290. package/src/x_ite/Components/Geometry3D/Cone.js +40 -29
  291. package/src/x_ite/Components/Geometry3D/Cylinder.js +41 -30
  292. package/src/x_ite/Components/Geometry3D/ElevationGrid.js +63 -52
  293. package/src/x_ite/Components/Geometry3D/Extrusion.js +49 -38
  294. package/src/x_ite/Components/Geometry3D/IndexedFaceSet.js +98 -95
  295. package/src/x_ite/Components/Geometry3D/Sphere.js +36 -25
  296. package/src/x_ite/Components/Geometry3D.js +15 -22
  297. package/src/x_ite/Components/Geospatial/GeoCoordinate.js +37 -26
  298. package/src/x_ite/Components/Geospatial/GeoElevationGrid.js +63 -52
  299. package/src/x_ite/Components/Geospatial/GeoLOD.js +59 -48
  300. package/src/x_ite/Components/Geospatial/GeoLocation.js +45 -34
  301. package/src/x_ite/Components/Geospatial/GeoMetadata.js +38 -27
  302. package/src/x_ite/Components/Geospatial/GeoOrigin.js +37 -26
  303. package/src/x_ite/Components/Geospatial/GeoPositionInterpolator.js +43 -32
  304. package/src/x_ite/Components/Geospatial/GeoProximitySensor.js +48 -37
  305. package/src/x_ite/Components/Geospatial/GeoTouchSensor.js +45 -34
  306. package/src/x_ite/Components/Geospatial/GeoTransform.js +49 -38
  307. package/src/x_ite/Components/Geospatial/GeoViewpoint.js +56 -45
  308. package/src/x_ite/Components/Geospatial/X3DGeospatialObject.js +30 -17
  309. package/src/x_ite/Components/Grouping/Group.js +29 -20
  310. package/src/x_ite/Components/Grouping/StaticGroup.js +40 -48
  311. package/src/x_ite/Components/Grouping/Switch.js +51 -40
  312. package/src/x_ite/Components/Grouping/Transform.js +34 -25
  313. package/src/x_ite/Components/Grouping/X3DBoundedObject.js +22 -9
  314. package/src/x_ite/Components/Grouping/X3DGroupingNode.js +224 -221
  315. package/src/x_ite/Components/Grouping/X3DTransformMatrix3DNode.js +20 -7
  316. package/src/x_ite/Components/Grouping/X3DTransformNode.js +17 -4
  317. package/src/x_ite/Components/Grouping.js +16 -23
  318. package/src/x_ite/Components/HAnim/HAnimDisplacer.js +27 -18
  319. package/src/x_ite/Components/HAnim/HAnimHumanoid.js +73 -62
  320. package/src/x_ite/Components/HAnim/HAnimJoint.js +61 -50
  321. package/src/x_ite/Components/HAnim/HAnimMotion.js +44 -33
  322. package/src/x_ite/Components/HAnim/HAnimSegment.js +36 -27
  323. package/src/x_ite/Components/HAnim/HAnimSite.js +36 -27
  324. package/src/x_ite/Components/Interpolation/ColorInterpolator.js +38 -27
  325. package/src/x_ite/Components/Interpolation/CoordinateInterpolator.js +38 -27
  326. package/src/x_ite/Components/Interpolation/CoordinateInterpolator2D.js +38 -27
  327. package/src/x_ite/Components/Interpolation/EaseInEaseOut.js +39 -28
  328. package/src/x_ite/Components/Interpolation/NormalInterpolator.js +38 -27
  329. package/src/x_ite/Components/Interpolation/OrientationInterpolator.js +38 -27
  330. package/src/x_ite/Components/Interpolation/PositionInterpolator.js +38 -27
  331. package/src/x_ite/Components/Interpolation/PositionInterpolator2D.js +38 -27
  332. package/src/x_ite/Components/Interpolation/ScalarInterpolator.js +39 -28
  333. package/src/x_ite/Components/Interpolation/SplinePositionInterpolator.js +44 -33
  334. package/src/x_ite/Components/Interpolation/SplinePositionInterpolator2D.js +44 -33
  335. package/src/x_ite/Components/Interpolation/SplineScalarInterpolator.js +44 -33
  336. package/src/x_ite/Components/Interpolation/SquadOrientationInterpolator.js +40 -29
  337. package/src/x_ite/Components/Interpolation/X3DInterpolatorNode.js +21 -8
  338. package/src/x_ite/Components/Interpolation.js +22 -29
  339. package/src/x_ite/Components/KeyDeviceSensor/KeySensor.js +44 -33
  340. package/src/x_ite/Components/KeyDeviceSensor/StringSensor.js +38 -27
  341. package/src/x_ite/Components/KeyDeviceSensor/X3DKeyDeviceSensorNode.js +23 -10
  342. package/src/x_ite/Components/Layering/Layer.js +40 -29
  343. package/src/x_ite/Components/Layering/LayerSet.js +44 -33
  344. package/src/x_ite/Components/Layering/Viewport.js +48 -37
  345. package/src/x_ite/Components/Layering/X3DLayerNode.js +45 -32
  346. package/src/x_ite/Components/Layering/X3DViewportNode.js +13 -2
  347. package/src/x_ite/Components/Layering.js +13 -20
  348. package/src/x_ite/Components/Layout/Layout.js +60 -49
  349. package/src/x_ite/Components/Layout/LayoutGroup.js +48 -37
  350. package/src/x_ite/Components/Layout/LayoutLayer.js +41 -30
  351. package/src/x_ite/Components/Layout/ScreenFontStyle.js +41 -30
  352. package/src/x_ite/Components/Layout/ScreenGroup.js +42 -31
  353. package/src/x_ite/Components/Layout/X3DLayoutNode.js +13 -2
  354. package/src/x_ite/Components/Lighting/DirectionalLight.js +45 -35
  355. package/src/x_ite/Components/Lighting/EnvironmentLight.js +51 -41
  356. package/src/x_ite/Components/Lighting/PointLight.js +53 -43
  357. package/src/x_ite/Components/Lighting/SpotLight.js +62 -52
  358. package/src/x_ite/Components/Lighting/X3DLightNode.js +29 -16
  359. package/src/x_ite/Components/Lighting.js +13 -20
  360. package/src/x_ite/Components/NURBS/Contour2D.js +45 -45
  361. package/src/x_ite/Components/NURBS/ContourPolyline2D.js +34 -23
  362. package/src/x_ite/Components/NURBS/CoordinateDouble.js +23 -14
  363. package/src/x_ite/Components/NURBS/NurbsCurve.js +47 -36
  364. package/src/x_ite/Components/NURBS/NurbsCurve2D.js +44 -33
  365. package/src/x_ite/Components/NURBS/NurbsOrientationInterpolator.js +46 -35
  366. package/src/x_ite/Components/NURBS/NurbsPatchSurface.js +36 -27
  367. package/src/x_ite/Components/NURBS/NurbsPositionInterpolator.js +46 -35
  368. package/src/x_ite/Components/NURBS/NurbsSet.js +52 -52
  369. package/src/x_ite/Components/NURBS/NurbsSurfaceInterpolator.js +44 -33
  370. package/src/x_ite/Components/NURBS/NurbsSweptSurface.js +40 -29
  371. package/src/x_ite/Components/NURBS/NurbsSwungSurface.js +40 -29
  372. package/src/x_ite/Components/NURBS/NurbsTextureCoordinate.js +43 -32
  373. package/src/x_ite/Components/NURBS/NurbsTrimmedSurface.js +59 -59
  374. package/src/x_ite/Components/NURBS/X3DNurbsControlCurveNode.js +13 -2
  375. package/src/x_ite/Components/NURBS/X3DNurbsSurfaceGeometryNode.js +30 -17
  376. package/src/x_ite/Components/NURBS/X3DParametricGeometryNode.js +16 -3
  377. package/src/x_ite/Components/Navigation/Billboard.js +43 -32
  378. package/src/x_ite/Components/Navigation/Collision.js +49 -38
  379. package/src/x_ite/Components/Navigation/LOD.js +54 -43
  380. package/src/x_ite/Components/Navigation/NavigationInfo.js +58 -47
  381. package/src/x_ite/Components/Navigation/OrthoViewpoint.js +69 -58
  382. package/src/x_ite/Components/Navigation/Viewpoint.js +53 -42
  383. package/src/x_ite/Components/Navigation/ViewpointGroup.js +44 -33
  384. package/src/x_ite/Components/Navigation/X3DViewpointNode.js +48 -35
  385. package/src/x_ite/Components/Navigation.js +16 -23
  386. package/src/x_ite/Components/Networking/Anchor.js +51 -40
  387. package/src/x_ite/Components/Networking/Inline.js +54 -43
  388. package/src/x_ite/Components/Networking/LoadSensor.js +49 -38
  389. package/src/x_ite/Components/Networking/X3DNetworkSensorNode.js +13 -2
  390. package/src/x_ite/Components/Networking/X3DUrlObject.js +35 -22
  391. package/src/x_ite/Components/Networking.js +13 -20
  392. package/src/x_ite/Components/ParticleSystems/BoundedPhysicsModel.js +37 -26
  393. package/src/x_ite/Components/ParticleSystems/ConeEmitter.js +44 -33
  394. package/src/x_ite/Components/ParticleSystems/ExplosionEmitter.js +41 -30
  395. package/src/x_ite/Components/ParticleSystems/ForcePhysicsModel.js +34 -23
  396. package/src/x_ite/Components/ParticleSystems/ParticleSystem.js +83 -72
  397. package/src/x_ite/Components/ParticleSystems/PointEmitter.js +41 -30
  398. package/src/x_ite/Components/ParticleSystems/PolylineEmitter.js +42 -31
  399. package/src/x_ite/Components/ParticleSystems/SurfaceEmitter.js +42 -31
  400. package/src/x_ite/Components/ParticleSystems/VolumeEmitter.js +43 -32
  401. package/src/x_ite/Components/ParticleSystems/WindPhysicsModel.js +38 -27
  402. package/src/x_ite/Components/ParticleSystems/X3DParticleEmitterNode.js +33 -20
  403. package/src/x_ite/Components/ParticleSystems/X3DParticlePhysicsModelNode.js +16 -3
  404. package/src/x_ite/Components/Picking/LinePickSensor.js +49 -38
  405. package/src/x_ite/Components/Picking/PickableGroup.js +45 -34
  406. package/src/x_ite/Components/Picking/PointPickSensor.js +46 -35
  407. package/src/x_ite/Components/Picking/PrimitivePickSensor.js +46 -35
  408. package/src/x_ite/Components/Picking/VolumePickSensor.js +45 -34
  409. package/src/x_ite/Components/Picking/X3DPickSensorNode.js +31 -18
  410. package/src/x_ite/Components/Picking/X3DPickableObject.js +20 -7
  411. package/src/x_ite/Components/PointingDeviceSensor/CylinderSensor.js +50 -39
  412. package/src/x_ite/Components/PointingDeviceSensor/PlaneSensor.js +52 -45
  413. package/src/x_ite/Components/PointingDeviceSensor/SphereSensor.js +44 -33
  414. package/src/x_ite/Components/PointingDeviceSensor/TouchSensor.js +30 -21
  415. package/src/x_ite/Components/PointingDeviceSensor/X3DDragSensorNode.js +13 -2
  416. package/src/x_ite/Components/PointingDeviceSensor/X3DPointingDeviceSensorNode.js +22 -11
  417. package/src/x_ite/Components/PointingDeviceSensor/X3DTouchSensorNode.js +16 -3
  418. package/src/x_ite/Components/PointingDeviceSensor.js +15 -22
  419. package/src/x_ite/Components/Rendering/ClipPlane.js +44 -34
  420. package/src/x_ite/Components/Rendering/Color.js +37 -26
  421. package/src/x_ite/Components/Rendering/ColorRGBA.js +37 -26
  422. package/src/x_ite/Components/Rendering/Coordinate.js +23 -14
  423. package/src/x_ite/Components/Rendering/IndexedLineSet.js +52 -41
  424. package/src/x_ite/Components/Rendering/IndexedTriangleFanSet.js +48 -37
  425. package/src/x_ite/Components/Rendering/IndexedTriangleSet.js +44 -33
  426. package/src/x_ite/Components/Rendering/IndexedTriangleStripSet.js +48 -37
  427. package/src/x_ite/Components/Rendering/LineSet.js +45 -34
  428. package/src/x_ite/Components/Rendering/Normal.js +39 -28
  429. package/src/x_ite/Components/Rendering/PointSet.js +45 -34
  430. package/src/x_ite/Components/Rendering/TriangleFanSet.js +47 -36
  431. package/src/x_ite/Components/Rendering/TriangleSet.js +41 -30
  432. package/src/x_ite/Components/Rendering/TriangleStripSet.js +47 -36
  433. package/src/x_ite/Components/Rendering/X3DColorNode.js +17 -4
  434. package/src/x_ite/Components/Rendering/X3DComposedGeometryNode.js +33 -20
  435. package/src/x_ite/Components/Rendering/X3DCoordinateNode.js +23 -10
  436. package/src/x_ite/Components/Rendering/X3DGeometricPropertyNode.js +13 -2
  437. package/src/x_ite/Components/Rendering/X3DGeometryNode.js +96 -80
  438. package/src/x_ite/Components/Rendering/X3DLineGeometryNode.js +21 -8
  439. package/src/x_ite/Components/Rendering/X3DNormalNode.js +13 -2
  440. package/src/x_ite/Components/Rendering/X3DPointGeometryNode.js +20 -7
  441. package/src/x_ite/Components/Rendering.js +29 -36
  442. package/src/x_ite/Components/RigidBodyPhysics/BallJoint.js +43 -32
  443. package/src/x_ite/Components/RigidBodyPhysics/CollidableOffset.js +48 -37
  444. package/src/x_ite/Components/RigidBodyPhysics/CollidableShape.js +52 -41
  445. package/src/x_ite/Components/RigidBodyPhysics/CollisionCollection.js +47 -36
  446. package/src/x_ite/Components/RigidBodyPhysics/CollisionSensor.js +41 -30
  447. package/src/x_ite/Components/RigidBodyPhysics/CollisionSpace.js +44 -33
  448. package/src/x_ite/Components/RigidBodyPhysics/Contact.js +38 -29
  449. package/src/x_ite/Components/RigidBodyPhysics/DoubleAxisHingeJoint.js +60 -49
  450. package/src/x_ite/Components/RigidBodyPhysics/MotorJoint.js +48 -39
  451. package/src/x_ite/Components/RigidBodyPhysics/RigidBody.js +69 -58
  452. package/src/x_ite/Components/RigidBodyPhysics/RigidBodyCollection.js +61 -50
  453. package/src/x_ite/Components/RigidBodyPhysics/SingleAxisHingeJoint.js +49 -38
  454. package/src/x_ite/Components/RigidBodyPhysics/SliderJoint.js +47 -36
  455. package/src/x_ite/Components/RigidBodyPhysics/UniversalJoint.js +36 -27
  456. package/src/x_ite/Components/RigidBodyPhysics/X3DNBodyCollidableNode.js +24 -11
  457. package/src/x_ite/Components/RigidBodyPhysics/X3DNBodyCollisionSpaceNode.js +17 -4
  458. package/src/x_ite/Components/RigidBodyPhysics/X3DRigidJointNode.js +34 -21
  459. package/src/x_ite/Components/Scripting/Script.js +83 -53
  460. package/src/x_ite/Components/Scripting/X3DScriptNode.js +17 -4
  461. package/src/x_ite/Components/Shaders/ComposedShader.js +46 -35
  462. package/src/x_ite/Components/Shaders/FloatVertexAttribute.js +40 -29
  463. package/src/x_ite/Components/Shaders/Matrix3VertexAttribute.js +38 -27
  464. package/src/x_ite/Components/Shaders/Matrix4VertexAttribute.js +38 -27
  465. package/src/x_ite/Components/Shaders/PackagedShader.js +45 -34
  466. package/src/x_ite/Components/Shaders/ProgramShader.js +27 -18
  467. package/src/x_ite/Components/Shaders/ShaderPart.js +47 -36
  468. package/src/x_ite/Components/Shaders/ShaderProgram.js +42 -31
  469. package/src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js +51 -38
  470. package/src/x_ite/Components/Shaders/X3DShaderNode.js +19 -6
  471. package/src/x_ite/Components/Shaders/X3DVertexAttributeNode.js +17 -4
  472. package/src/x_ite/Components/Shaders.js +19 -26
  473. package/src/x_ite/Components/Shape/AcousticProperties.js +28 -19
  474. package/src/x_ite/Components/Shape/Appearance.js +79 -68
  475. package/src/x_ite/Components/Shape/FillProperties.js +44 -33
  476. package/src/x_ite/Components/Shape/LineProperties.js +44 -33
  477. package/src/x_ite/Components/Shape/Material.js +75 -64
  478. package/src/x_ite/Components/Shape/PhysicalMaterial.js +65 -54
  479. package/src/x_ite/Components/Shape/PointProperties.js +43 -32
  480. package/src/x_ite/Components/Shape/Shape.js +48 -37
  481. package/src/x_ite/Components/Shape/TwoSidedMaterial.js +60 -49
  482. package/src/x_ite/Components/Shape/UnlitMaterial.js +44 -33
  483. package/src/x_ite/Components/Shape/X3DAppearanceChildNode.js +13 -2
  484. package/src/x_ite/Components/Shape/X3DAppearanceNode.js +17 -4
  485. package/src/x_ite/Components/Shape/X3DMaterialNode.js +41 -33
  486. package/src/x_ite/Components/Shape/X3DOneSidedMaterialNode.js +29 -16
  487. package/src/x_ite/Components/Shape/X3DShapeNode.js +28 -15
  488. package/src/x_ite/Components/Shape.js +23 -30
  489. package/src/x_ite/Components/Sound/Analyser.js +46 -37
  490. package/src/x_ite/Components/Sound/AudioClip.js +61 -50
  491. package/src/x_ite/Components/Sound/AudioDestination.js +35 -26
  492. package/src/x_ite/Components/Sound/BiquadFilter.js +45 -36
  493. package/src/x_ite/Components/Sound/BufferAudioSource.js +61 -50
  494. package/src/x_ite/Components/Sound/ChannelMerger.js +32 -23
  495. package/src/x_ite/Components/Sound/ChannelSelector.js +33 -24
  496. package/src/x_ite/Components/Sound/ChannelSplitter.js +33 -24
  497. package/src/x_ite/Components/Sound/Convolver.js +43 -34
  498. package/src/x_ite/Components/Sound/Delay.js +43 -34
  499. package/src/x_ite/Components/Sound/DynamicsCompressor.js +47 -38
  500. package/src/x_ite/Components/Sound/Gain.js +41 -32
  501. package/src/x_ite/Components/Sound/ListenerPointSource.js +39 -30
  502. package/src/x_ite/Components/Sound/MicrophoneSource.js +35 -26
  503. package/src/x_ite/Components/Sound/OscillatorSource.js +37 -28
  504. package/src/x_ite/Components/Sound/PeriodicWave.js +27 -18
  505. package/src/x_ite/Components/Sound/Sound.js +51 -40
  506. package/src/x_ite/Components/Sound/SpatialSound.js +42 -33
  507. package/src/x_ite/Components/Sound/StreamAudioDestination.js +35 -26
  508. package/src/x_ite/Components/Sound/StreamAudioSource.js +35 -26
  509. package/src/x_ite/Components/Sound/WaveShaper.js +43 -34
  510. package/src/x_ite/Components/Sound/X3DSoundChannelNode.js +13 -2
  511. package/src/x_ite/Components/Sound/X3DSoundDestinationNode.js +13 -2
  512. package/src/x_ite/Components/Sound/X3DSoundNode.js +13 -2
  513. package/src/x_ite/Components/Sound/X3DSoundProcessingNode.js +17 -4
  514. package/src/x_ite/Components/Sound/X3DSoundSourceNode.js +30 -17
  515. package/src/x_ite/Components/Sound.js +34 -41
  516. package/src/x_ite/Components/Text/FontStyle.js +37 -26
  517. package/src/x_ite/Components/Text/Text.js +50 -39
  518. package/src/x_ite/Components/Text/X3DFontStyleNode.js +32 -18
  519. package/src/x_ite/Components/TextureProjector/TextureProjector.js +49 -39
  520. package/src/x_ite/Components/TextureProjector/TextureProjectorParallel.js +58 -48
  521. package/src/x_ite/Components/TextureProjector/X3DTextureProjectorNode.js +27 -14
  522. package/src/x_ite/Components/Texturing/ImageTexture.js +50 -39
  523. package/src/x_ite/Components/Texturing/MovieTexture.js +67 -56
  524. package/src/x_ite/Components/Texturing/MultiTexture.js +52 -41
  525. package/src/x_ite/Components/Texturing/MultiTextureCoordinate.js +44 -33
  526. package/src/x_ite/Components/Texturing/MultiTextureTransform.js +39 -28
  527. package/src/x_ite/Components/Texturing/PixelTexture.js +42 -31
  528. package/src/x_ite/Components/Texturing/TextureCoordinate.js +41 -30
  529. package/src/x_ite/Components/Texturing/TextureCoordinateGenerator.js +41 -30
  530. package/src/x_ite/Components/Texturing/TextureProperties.js +47 -36
  531. package/src/x_ite/Components/Texturing/TextureTransform.js +39 -28
  532. package/src/x_ite/Components/Texturing/X3DSingleTextureCoordinateNode.js +20 -7
  533. package/src/x_ite/Components/Texturing/X3DSingleTextureNode.js +21 -8
  534. package/src/x_ite/Components/Texturing/X3DSingleTextureTransformNode.js +20 -7
  535. package/src/x_ite/Components/Texturing/X3DTexture2DNode.js +26 -13
  536. package/src/x_ite/Components/Texturing/X3DTextureCoordinateNode.js +13 -2
  537. package/src/x_ite/Components/Texturing/X3DTextureNode.js +17 -4
  538. package/src/x_ite/Components/Texturing/X3DTextureTransformNode.js +13 -2
  539. package/src/x_ite/Components/Texturing.js +25 -32
  540. package/src/x_ite/Components/Texturing3D/ComposedTexture3D.js +44 -33
  541. package/src/x_ite/Components/Texturing3D/ImageTexture3D.js +46 -35
  542. package/src/x_ite/Components/Texturing3D/ImageTextureAtlas.js +54 -43
  543. package/src/x_ite/Components/Texturing3D/PixelTexture3D.js +40 -29
  544. package/src/x_ite/Components/Texturing3D/TextureCoordinate3D.js +41 -30
  545. package/src/x_ite/Components/Texturing3D/TextureCoordinate4D.js +41 -30
  546. package/src/x_ite/Components/Texturing3D/TextureTransform3D.js +39 -28
  547. package/src/x_ite/Components/Texturing3D/TextureTransformMatrix3D.js +36 -25
  548. package/src/x_ite/Components/Texturing3D/X3DTexture3DNode.js +26 -13
  549. package/src/x_ite/Components/Time/TimeSensor.js +55 -44
  550. package/src/x_ite/Components/Time/X3DTimeDependentNode.js +38 -25
  551. package/src/x_ite/Components/Time.js +10 -17
  552. package/src/x_ite/Components/VolumeRendering/BlendedVolumeStyle.js +51 -41
  553. package/src/x_ite/Components/VolumeRendering/BoundaryEnhancementVolumeStyle.js +39 -28
  554. package/src/x_ite/Components/VolumeRendering/CartoonVolumeStyle.js +42 -31
  555. package/src/x_ite/Components/VolumeRendering/ComposedVolumeStyle.js +41 -30
  556. package/src/x_ite/Components/VolumeRendering/EdgeEnhancementVolumeStyle.js +41 -30
  557. package/src/x_ite/Components/VolumeRendering/IsoSurfaceVolumeData.js +50 -39
  558. package/src/x_ite/Components/VolumeRendering/OpacityMapVolumeStyle.js +39 -28
  559. package/src/x_ite/Components/VolumeRendering/ProjectionVolumeStyle.js +38 -27
  560. package/src/x_ite/Components/VolumeRendering/SegmentedVolumeData.js +49 -38
  561. package/src/x_ite/Components/VolumeRendering/ShadedVolumeStyle.js +44 -33
  562. package/src/x_ite/Components/VolumeRendering/SilhouetteEnhancementVolumeStyle.js +42 -31
  563. package/src/x_ite/Components/VolumeRendering/ToneMappedVolumeStyle.js +41 -30
  564. package/src/x_ite/Components/VolumeRendering/VolumeData.js +45 -34
  565. package/src/x_ite/Components/VolumeRendering/X3DComposableVolumeRenderStyleNode.js +13 -2
  566. package/src/x_ite/Components/VolumeRendering/X3DVolumeDataNode.js +25 -12
  567. package/src/x_ite/Components/VolumeRendering/X3DVolumeRenderStyleNode.js +22 -9
  568. package/src/x_ite/Components/X_ITE/BlendMode.js +48 -37
  569. package/src/x_ite/Components.js +38 -14
  570. package/src/x_ite/Configuration/AbstractNodes.js +50 -0
  571. package/src/x_ite/{Fallback.js → Configuration/AbstractNodesArray.js} +22 -29
  572. package/src/x_ite/Configuration/ComponentInfo.js +14 -10
  573. package/src/x_ite/Configuration/ComponentInfoArray.js +14 -10
  574. package/src/x_ite/Configuration/ConcreteNodes.js +50 -0
  575. package/src/x_ite/Configuration/{SupportedNodes.js → ConcreteNodesArray.js} +26 -40
  576. package/src/x_ite/Configuration/ProfileInfo.js +13 -9
  577. package/src/x_ite/Configuration/ProfileInfoArray.js +14 -13
  578. package/src/x_ite/Configuration/SupportedComponents.js +40 -78
  579. package/src/x_ite/Configuration/SupportedProfiles.js +16 -16
  580. package/src/x_ite/Configuration/UnitInfo.js +14 -10
  581. package/src/x_ite/Configuration/UnitInfoArray.js +10 -21
  582. package/src/x_ite/Execution/BindableList.js +14 -10
  583. package/src/x_ite/Execution/BindableStack.js +14 -10
  584. package/src/x_ite/Execution/ExportedNodesArray.js +11 -9
  585. package/src/x_ite/Execution/ImportedNodesArray.js +11 -9
  586. package/src/x_ite/Execution/NamedNodesArray.js +11 -22
  587. package/src/x_ite/Execution/X3DExecutionContext.js +181 -152
  588. package/src/x_ite/Execution/X3DExportedNode.js +18 -10
  589. package/src/x_ite/Execution/X3DImportedNode.js +35 -22
  590. package/src/x_ite/Execution/X3DScene.js +93 -64
  591. package/src/x_ite/Execution/X3DWorld.js +21 -17
  592. package/src/x_ite/Fields/ArrayFields.js +87 -153
  593. package/src/x_ite/Fields/SFBool.js +21 -25
  594. package/src/x_ite/Fields/SFColor.js +43 -39
  595. package/src/x_ite/Fields/SFColorRGBA.js +39 -35
  596. package/src/x_ite/Fields/SFDouble.js +20 -21
  597. package/src/x_ite/Fields/SFFloat.js +20 -21
  598. package/src/x_ite/Fields/SFImage.js +50 -48
  599. package/src/x_ite/Fields/SFInt32.js +20 -21
  600. package/src/x_ite/Fields/SFMatrix3.js +23 -16
  601. package/src/x_ite/Fields/SFMatrix4.js +24 -17
  602. package/src/x_ite/Fields/SFMatrixPrototypeTemplate.js +31 -31
  603. package/src/x_ite/Fields/SFNode.js +57 -88
  604. package/src/x_ite/Fields/SFNodeCache.js +7 -11
  605. package/src/x_ite/Fields/SFRotation.js +73 -62
  606. package/src/x_ite/Fields/SFString.js +35 -36
  607. package/src/x_ite/Fields/SFTime.js +20 -21
  608. package/src/x_ite/Fields/SFVec2.js +17 -14
  609. package/src/x_ite/Fields/SFVec3.js +20 -17
  610. package/src/x_ite/Fields/SFVec4.js +21 -18
  611. package/src/x_ite/Fields/SFVecPrototypeTemplate.js +36 -36
  612. package/src/x_ite/Fields.js +6 -13
  613. package/src/x_ite/InputOutput/FileLoader.js +36 -40
  614. package/src/x_ite/InputOutput/Generator.js +50 -51
  615. package/src/x_ite/Parser/GLB2Parser.js +12 -13
  616. package/src/x_ite/Parser/GLTF2Parser.js +111 -112
  617. package/src/x_ite/Parser/GoldenGate.js +11 -13
  618. package/src/x_ite/Parser/HTMLSupport.js +15 -5
  619. package/src/x_ite/Parser/JSONParser.js +21 -22
  620. package/src/x_ite/Parser/OBJParser.js +56 -57
  621. package/src/x_ite/Parser/STLAParser.js +22 -23
  622. package/src/x_ite/Parser/STLBParser.js +12 -13
  623. package/src/x_ite/Parser/SVGParser.js +85 -86
  624. package/src/x_ite/Parser/VRMLParser.js +495 -878
  625. package/src/x_ite/Parser/X3DOptimizer.js +7 -7
  626. package/src/x_ite/Parser/X3DParser.js +17 -17
  627. package/src/x_ite/Parser/XMLParser.js +215 -269
  628. package/src/x_ite/Prototype/ExternProtoDeclarationArray.js +11 -9
  629. package/src/x_ite/Prototype/ProtoDeclarationArray.js +11 -9
  630. package/src/x_ite/Prototype/X3DExternProtoDeclaration.js +35 -27
  631. package/src/x_ite/Prototype/X3DProtoDeclaration.js +28 -20
  632. package/src/x_ite/Prototype/X3DProtoDeclarationNode.js +18 -10
  633. package/src/x_ite/Rendering/DependentRenderer.js +11 -12
  634. package/src/x_ite/Rendering/MultiSampleFrameBuffer.js +9 -10
  635. package/src/x_ite/Rendering/PointingBuffer.js +6 -7
  636. package/src/x_ite/Rendering/TextureBuffer.js +11 -12
  637. package/src/x_ite/Rendering/VertexArray.js +5 -5
  638. package/src/x_ite/Rendering/X3DRenderObject.js +51 -52
  639. package/src/x_ite/Routing/RouteArray.js +11 -9
  640. package/src/x_ite/Routing/X3DRoute.js +35 -19
  641. package/src/x_ite/Routing/X3DRoutingContext.js +8 -9
  642. package/src/x_ite/X3D.js +27 -26
  643. package/src/x_ite/X3DCanvasElement.js +18 -7
  644. package/src/x_ite.css +2 -1
  645. package/webpack.config.js +2 -2
  646. /package/src/x_ite/{DEBUG.js → DEVELOPMENT.js} +0 -0
@@ -1 +1 @@
1
- /* X_ITE v8.7.8 */(()=>{"use strict";var e={n:t=>{var n=t&&t.__esModule?()=>t.default:()=>t;return e.d(n,{a:n}),n},d:(t,n)=>{for(var o in n)e.o(n,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:n[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window[Symbol.for("X_ITE.X3D-8.7.8")].require("x_ite/Components");var n=e.n(t);const o=window[Symbol.for("X_ITE.X3D-8.7.8")].require("x_ite/Components/Texturing/PixelTexture");var i=e.n(o);const r=window[Symbol.for("X_ITE.X3D-8.7.8")].require("x_ite/Components/Texturing/TextureProperties");var s=e.n(r);const a=window[Symbol.for("X_ITE.X3D-8.7.8")].require("x_ite/Fields");var l=e.n(a);const d=window[Symbol.for("X_ITE.X3D-8.7.8")].require("x_ite/Base/X3DFieldDefinition");var u=e.n(d);const c=window[Symbol.for("X_ITE.X3D-8.7.8")].require("x_ite/Base/FieldDefinitionArray");var h=e.n(c);const f=window[Symbol.for("X_ITE.X3D-8.7.8")].require("x_ite/Components/Core/X3DNode");var p=e.n(f);const g=window[Symbol.for("X_ITE.X3D-8.7.8")].require("x_ite/Base/X3DConstants");var m=e.n(g);const _=window[Symbol.for("X_ITE.X3D-8.7.8")].require("x_ite/Namespace");var S=e.n(_);function y(e){p().call(this,e),this.addType(m().X3DVolumeRenderStyleNode),this.volumeDataNodes=new Set}y.prototype=Object.assign(Object.create(p().prototype),{constructor:y,addShaderFields:function(e){},getUniformsText:function(){return""},getFunctionsText:function(){return""},getVolumeData:function(){return this.volumeDataNodes},addVolumeData:function(e){this.volumeDataNodes.add(e)},removeVolumeData:function(e){this.volumeDataNodes.delete(e)},getNormalText:function(e){let t="";return e?(t+="uniform sampler3D surfaceNormals_"+this.getId()+";\n",t+="\n",t+="vec4\n",t+="getNormal_"+this.getId()+" (in vec3 texCoord)\n",t+="{\n",t+=" vec3 n = texture (surfaceNormals_"+this.getId()+", texCoord) .xyz * 2.0 - 1.0;\n",t+="\n",t+=" return vec4 (normalize (x3d_TextureNormalMatrix * n), length (n));\n",t+="}\n"):(t+="\n",t+="vec4\n",t+="getNormal_"+this.getId()+" (in vec3 texCoord)\n",t+="{\n",t+=" vec4 offset = vec4 (1.0 / vec3 (textureSize (x3d_Texture3D [0], 0)), 0.0);\n",t+=" float i0 = texture (x3d_Texture3D [0], texCoord + offset .xww) .r;\n",t+=" float i1 = texture (x3d_Texture3D [0], texCoord - offset .xww) .r;\n",t+=" float i2 = texture (x3d_Texture3D [0], texCoord + offset .wyw) .r;\n",t+=" float i3 = texture (x3d_Texture3D [0], texCoord - offset .wyw) .r;\n",t+=" float i4 = texture (x3d_Texture3D [0], texCoord + offset .wwz) .r;\n",t+=" float i5 = texture (x3d_Texture3D [0], texCoord - offset .wwz) .r;\n",t+=" vec3 n = vec3 (i1 - i0, i3 - i2, i5 - i4);\n",t+="\n",t+=" return vec4 (normalize (x3d_TextureNormalMatrix * n), length (n));\n",t+="}\n"),t}});const x=y;S().set("x_ite/Components/VolumeRendering/X3DVolumeRenderStyleNode",x);const N=x;function w(e){N.call(this,e),this.addType(m().X3DComposableVolumeRenderStyleNode)}w.prototype=Object.assign(Object.create(N.prototype),{constructor:w});const v=w;S().set("x_ite/Components/VolumeRendering/X3DComposableVolumeRenderStyleNode",v);const C=v,F=window[Symbol.for("X_ITE.X3D-8.7.8")].require("x_ite/Base/X3DCast");var I=e.n(F);function V(e){C.call(this,e),this.addType(m().OpacityMapVolumeStyle)}V.prototype=Object.assign(Object.create(C.prototype),{constructor:V,[Symbol.for("X_ITE.X3DBaseNode.fieldDefinitions")]:new(h())([new(u())(m().inputOutput,"enabled",new(l().SFBool)(!0)),new(u())(m().inputOutput,"metadata",new(l().SFNode)),new(u())(m().inputOutput,"transferFunction",new(l().SFNode))]),getTypeName:function(){return"OpacityMapVolumeStyle"},getComponentName:function(){return"VolumeRendering"},getContainerField:function(){return"renderStyle"},getSpecificationRange:function(){return["3.3","Infinity"]},initialize:function(){C.prototype.initialize.call(this);this.getBrowser().getContext().getVersion()<2||(this._transferFunction.addInterest("set_transferFunction__",this),this.set_transferFunction__())},set_transferFunction__:function(){this.transferFunctionNode=I()(m().X3DTexture2DNode,this._transferFunction),this.transferFunctionNode||(this.transferFunctionNode=I()(m().X3DTexture3DNode,this._transferFunction)),this.transferFunctionNode||(this.transferFunctionNode=this.getBrowser().getDefaultTransferFunction())},addShaderFields:function(e){this._enabled.getValue()&&e.addUserDefinedField(m().inputOutput,"transferFunction_"+this.getId(),new(l().SFNode)(this.transferFunctionNode))},getUniformsText:function(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+="// OpacityMapVolumeStyle\n",e+="\n",this.transferFunctionNode.getType().includes(m().X3DTexture2DNode)?(e+="uniform sampler2D transferFunction_"+this.getId()+";\n",e+="\n",e+="vec4\n",e+="getOpacityMapStyle_"+this.getId()+" (in vec4 originalColor)\n",e+="{\n",e+=" return texture (transferFunction_"+this.getId()+", originalColor .rg);\n",e+="}\n"):(e+="uniform sampler3D transferFunction_"+this.getId()+";\n",e+="\n",e+="vec4\n",e+="getOpacityMapStyle_"+this.getId()+" (in vec4 originalColor)\n",e+="{\n",e+=" return texture (transferFunction_"+this.getId()+", originalColor .rgb);\n",e+="}\n"),e},getFunctionsText:function(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+=" // OpacityMapVolumeStyle\n",e+="\n",e+=" textureColor = getOpacityMapStyle_"+this.getId()+" (textureColor);\n",e}});const T=V;S().set("x_ite/Components/VolumeRendering/OpacityMapVolumeStyle",T);const b=T,D=Symbol(),O=Symbol(),E=Symbol(),X=Symbol();function B(){}B.prototype={getDefaultVoxels:function(){return this[D]=this.getPrivateScene().createNode("PixelTexture3D",!1),this[D]._image=[1,1,1,1,255],this[D].repeatS=!0,this[D].repeatT=!0,this[D].repeatR=!0,this[D].setPrivate(!0),this[D].setup(),this.getDefaultVoxels=function(){return this[D]},Object.defineProperty(this,"getDefaultVoxels",{enumerable:!1}),this[D]},getDefaultVolumeStyle:function(){return this[O]=new b(this.getPrivateScene()),this[O].setPrivate(!0),this[O].setup(),this.getDefaultVolumeStyle=function(){return this[O]},Object.defineProperty(this,"getDefaultVolumeStyle",{enumerable:!1}),this[O]},getDefaultBlendedVolumeStyle:function(){return this[E]=new b(this.getPrivateScene()),this[E].setPrivate(!0),this[E].setup(),this.getDefaultBlendedVolumeStyle=function(){return this[E]},Object.defineProperty(this,"getDefaultBlendedVolumeStyle",{enumerable:!1}),this[E]},getDefaultTransferFunction:function(){const e=new(s())(this.getPrivateScene());return e._boundaryModeS="CLAMP_TO_EDGE",e._boundaryModeT="REPEAT",e._magnificationFilter="DEFAULT",e._minificationFilter="DEFAULT",e._generateMipMaps=!0,e._textureCompression="DEFAULT",e.setPrivate(!0),e.setup(),this[X]=new(i())(this.getPrivateScene()),this[X]._textureProperties=e,this[X]._image.width=256,this[X]._image.height=1,this[X]._image.comp=2,this[X]._image.array=Array.from({length:256},((e,t)=>t<<8|t)),this[X].setPrivate(!0),this[X].setup(),this.getDefaultTransferFunction=function(){return this[X]},Object.defineProperty(this,"getDefaultTransferFunction",{enumerable:!1}),this[X]}};const M=B;S().set("x_ite/Browser/VolumeRendering/X3DVolumeRenderingContext",M);const U=M;window[Symbol.for("X_ITE.X3D-8.7.8")].require("x_ite/DEBUG");function P(e){C.call(this,e),this.addType(m().BlendedVolumeStyle)}P.prototype=Object.assign(Object.create(C.prototype),{constructor:P,[Symbol.for("X_ITE.X3DBaseNode.fieldDefinitions")]:new(h())([new(u())(m().inputOutput,"metadata",new(l().SFNode)),new(u())(m().inputOutput,"enabled",new(l().SFBool)(!0)),new(u())(m().inputOutput,"weightConstant1",new(l().SFFloat)(.5)),new(u())(m().inputOutput,"weightConstant2",new(l().SFFloat)(.5)),new(u())(m().inputOutput,"weightFunction1",new(l().SFString)("CONSTANT")),new(u())(m().inputOutput,"weightFunction2",new(l().SFString)("CONSTANT")),new(u())(m().inputOutput,"weightTransferFunction1",new(l().SFNode)),new(u())(m().inputOutput,"weightTransferFunction2",new(l().SFNode)),new(u())(m().inputOutput,"renderStyle",new(l().SFNode)),new(u())(m().inputOutput,"voxels",new(l().SFNode))]),getTypeName:function(){return"BlendedVolumeStyle"},getComponentName:function(){return"VolumeRendering"},getContainerField:function(){return"renderStyle"},getSpecificationRange:function(){return["3.3","Infinity"]},initialize:function(){C.prototype.initialize.call(this);this.getBrowser().getContext().getVersion()<2||(this._weightTransferFunction1.addInterest("set_weightTransferFunction1__",this),this._weightTransferFunction2.addInterest("set_weightTransferFunction2__",this),this._renderStyle.addInterest("set_renderStyle__",this),this._voxels.addInterest("set_voxels__",this),this.set_weightTransferFunction1__(),this.set_weightTransferFunction2__(),this.set_renderStyle__(),this.set_voxels__())},addVolumeData:function(e){C.prototype.addVolumeData.call(this,e),this.renderStyleNode&&this.renderStyleNode.addVolumeData(e)},removeVolumeData:function(e){C.prototype.removeVolumeData.call(this,e),this.renderStyleNode&&this.renderStyleNode.removeVolumeData(e)},set_weightTransferFunction1__:function(){this.weightTransferFunction1Node=I()(m().X3DTexture2DNode,this._weightTransferFunction1)},set_weightTransferFunction2__:function(){this.weightTransferFunction2Node=I()(m().X3DTexture2DNode,this._weightTransferFunction2)},set_renderStyle__:function(){if(this.renderStyleNode){this.renderStyleNode.removeInterest("addNodeEvent",this);for(const e of this.getVolumeData())this.renderStyleNode.removeVolumeData(e)}if(this.renderStyleNode=I()(m().X3DComposableVolumeRenderStyleNode,this._renderStyle),this.renderStyleNode){this.renderStyleNode.addInterest("addNodeEvent",this);for(const e of this.getVolumeData())this.renderStyleNode.addVolumeData(e)}},set_voxels__:function(){this.voxelsNode=I()(m().X3DTexture3DNode,this._voxels)},addShaderFields:function(e){this._enabled.getValue()&&(e.addUserDefinedField(m().inputOutput,"weightConstant1_"+this.getId(),this._weightConstant1.copy()),e.addUserDefinedField(m().inputOutput,"weightConstant2_"+this.getId(),this._weightConstant2.copy()),this.weightTransferFunction1Node&&e.addUserDefinedField(m().inputOutput,"weightTransferFunction1_"+this.getId(),new(l().SFNode)(this.weightTransferFunction1Node)),this.weightTransferFunction2Node&&e.addUserDefinedField(m().inputOutput,"weightTransferFunction2_"+this.getId(),new(l().SFNode)(this.weightTransferFunction2Node)),this.voxelsNode&&e.addUserDefinedField(m().inputOutput,"voxels_"+this.getId(),new(l().SFNode)(this.voxelsNode)),this.getBrowser().getDefaultBlendedVolumeStyle().addShaderFields(e),this.renderStyleNode&&this.renderStyleNode.addShaderFields(e))},getUniformsText:function(){if(!this._enabled.getValue())return"";if(!this.voxelsNode)return"";let e="";e+="\n",e+="// BlendedVolumeStyle\n",e+="\n",e+="uniform float weightConstant1_"+this.getId()+";\n",e+="uniform float weightConstant2_"+this.getId()+";\n",this.weightTransferFunction1Node&&(e+="uniform sampler2D weightTransferFunction1_"+this.getId()+";\n"),this.weightTransferFunction2Node&&(e+="uniform sampler2D weightTransferFunction2_"+this.getId()+";\n"),e+="uniform sampler3D voxels_"+this.getId()+";\n";let t=this.getBrowser().getDefaultBlendedVolumeStyle().getUniformsText();this.renderStyleNode&&(t+=this.renderStyleNode.getUniformsText()),t=t.replace(/x3d_Texture3D\s*\[0\]/g,"voxels_"+this.getId()),e+="\n",e+=t,e+="\n",e+="vec4\n",e+="getBlendedStyle_"+this.getId()+" (in vec4 originalColor, in vec3 texCoord)\n",e+="{\n",e+=" vec4 blendColor_"+this.getId()+" = texture (voxels_"+this.getId()+", texCoord);";let n=this.getBrowser().getDefaultBlendedVolumeStyle().getFunctionsText();switch(this.renderStyleNode&&(n+=this.renderStyleNode.getFunctionsText()),n=n.replace(/textureColor/g,"blendColor_"+this.getId()),e+="\n",e+=n,this._weightFunction1.getValue()){default:e+=" float w1_"+this.getId()+" = weightConstant1_"+this.getId()+";\n";break;case"ALPHA0":e+=" float w1_"+this.getId()+" = originalColor .a;\n";break;case"ALPHA1":e+=" float w1_"+this.getId()+" = blendColor_ "+this.getId()+" .a;\n";break;case"ONE_MINUS_ALPHA0":e+=" float w1_"+this.getId()+" = 1.0 - originalColor .a;\n";break;case"ONE_MINUS_ALPHA1":e+=" float w1_"+this.getId()+" = 1.0 - blendColor_ "+this.getId()+" .a;\n";break;case"TABLE":this.weightTransferFunction1Node?e+=" float w1_"+this.getId()+" = texture (weightTransferFunction1_"+this.getId()+", vec2 (originalColor .a, blendColor_"+this.getId()+" .a)) .r;\n":e+=" float w1_"+this.getId()+" = weightConstant1_"+this.getId()+";\n"}switch(this._weightFunction2.getValue()){default:e+=" float w2_"+this.getId()+" = weightConstant2_"+this.getId()+";\n";break;case"ALPHA0":e+=" float w2_"+this.getId()+" = originalColor .a;\n";break;case"ALPHA1":e+=" float w2_"+this.getId()+" = blendColor_ "+this.getId()+" .a;\n";break;case"ONE_MINUS_ALPHA0":e+=" float w2_"+this.getId()+" = 1.0 - originalColor .a;\n";break;case"ONE_MINUS_ALPHA1":e+=" float w2_"+this.getId()+" = 1.0 - blendColor_ "+this.getId()+" .a;\n";break;case"TABLE":this.weightTransferFunction2Node?e+=" float w2_"+this.getId()+" = texture (weightTransferFunction2_"+this.getId()+", vec2 (originalColor .a, blendColor_"+this.getId()+" .a)) .r;\n":e+=" float w2_"+this.getId()+" = weightConstant2_"+this.getId()+";\n"}return e+="\n",e+=" return clamp (originalColor * w1_"+this.getId()+" + blendColor_"+this.getId()+" * w2_"+this.getId()+", 0.0, 1.0);\n",e+="}\n",e},getFunctionsText:function(){if(!this._enabled.getValue())return"";if(!this.voxelsNode)return"";let e="";return e+="\n",e+=" // BlendedVolumeStyle\n",e+="\n",e+=" textureColor = getBlendedStyle_"+this.getId()+" (textureColor, texCoord);\n",e}});const R=P;S().set("x_ite/Components/VolumeRendering/BlendedVolumeStyle",R);const L=R;function A(e){C.call(this,e),this.addType(m().BoundaryEnhancementVolumeStyle)}A.prototype=Object.assign(Object.create(C.prototype),{constructor:A,[Symbol.for("X_ITE.X3DBaseNode.fieldDefinitions")]:new(h())([new(u())(m().inputOutput,"metadata",new(l().SFNode)),new(u())(m().inputOutput,"enabled",new(l().SFBool)(!0)),new(u())(m().inputOutput,"retainedOpacity",new(l().SFFloat)(.2)),new(u())(m().inputOutput,"boundaryOpacity",new(l().SFFloat)(.9)),new(u())(m().inputOutput,"opacityFactor",new(l().SFFloat)(2))]),getTypeName:function(){return"BoundaryEnhancementVolumeStyle"},getComponentName:function(){return"VolumeRendering"},getContainerField:function(){return"renderStyle"},getSpecificationRange:function(){return["3.3","Infinity"]},addShaderFields:function(e){this._enabled.getValue()&&(e.addUserDefinedField(m().inputOutput,"retainedOpacity_"+this.getId(),this._retainedOpacity.copy()),e.addUserDefinedField(m().inputOutput,"boundaryOpacity_"+this.getId(),this._boundaryOpacity.copy()),e.addUserDefinedField(m().inputOutput,"opacityFactor_"+this.getId(),this._opacityFactor.copy()))},getUniformsText:function(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+="// BoundaryEnhancementVolumeStyle\n",e+="\n",e+="uniform float retainedOpacity_"+this.getId()+";\n",e+="uniform float boundaryOpacity_"+this.getId()+";\n",e+="uniform float opacityFactor_"+this.getId()+";\n",e+="\n",e+="vec4\n",e+="getBoundaryEnhancementStyle_"+this.getId()+" (in vec4 originalColor, in vec3 texCoord)\n",e+="{\n",e+=" float f0 = texture (x3d_Texture3D [0], texCoord) .r;\n",e+=" float f1 = texture (x3d_Texture3D [0], texCoord + vec3 (0.0, 0.0, 1.0 / float (textureSize (x3d_Texture3D [0], 0) .z))) .r;\n",e+=" float f = abs (f0 - f1);\n",e+="\n",e+=" float retainedOpacity = retainedOpacity_"+this.getId()+";\n",e+=" float boundaryOpacity = boundaryOpacity_"+this.getId()+";\n",e+=" float opacityFactor = opacityFactor_"+this.getId()+";\n",e+="\n",e+=" return vec4 (originalColor .rgb, originalColor .a * (retainedOpacity + boundaryOpacity * pow (f, opacityFactor)));\n",e+="}\n",e},getFunctionsText:function(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+=" // BoundaryEnhancementVolumeStyle\n",e+="\n",e+=" textureColor = getBoundaryEnhancementStyle_"+this.getId()+" (textureColor, texCoord);\n",e}});const z=A;S().set("x_ite/Components/VolumeRendering/BoundaryEnhancementVolumeStyle",z);const j=z;function G(e){C.call(this,e),this.addType(m().CartoonVolumeStyle)}G.prototype=Object.assign(Object.create(C.prototype),{constructor:G,[Symbol.for("X_ITE.X3DBaseNode.fieldDefinitions")]:new(h())([new(u())(m().inputOutput,"metadata",new(l().SFNode)),new(u())(m().inputOutput,"enabled",new(l().SFBool)(!0)),new(u())(m().inputOutput,"colorSteps",new(l().SFInt32)(4)),new(u())(m().inputOutput,"orthogonalColor",new(l().SFColorRGBA)(1,1,1,1)),new(u())(m().inputOutput,"parallelColor",new(l().SFColorRGBA)(0,0,0,1)),new(u())(m().inputOutput,"surfaceNormals",new(l().SFNode))]),getTypeName:function(){return"CartoonVolumeStyle"},getComponentName:function(){return"VolumeRendering"},getContainerField:function(){return"renderStyle"},getSpecificationRange:function(){return["3.3","Infinity"]},initialize:function(){C.prototype.initialize.call(this);this.getBrowser().getContext().getVersion()<2||(this._surfaceNormals.addInterest("set_surfaceNormals__",this),this.set_surfaceNormals__())},set_surfaceNormals__:function(){this.surfaceNormalsNode=I()(m().X3DTexture3DNode,this._surfaceNormals)},addShaderFields:function(e){this._enabled.getValue()&&(e.addUserDefinedField(m().inputOutput,"colorSteps_"+this.getId(),this._colorSteps.copy()),e.addUserDefinedField(m().inputOutput,"orthogonalColor_"+this.getId(),this._orthogonalColor.copy()),e.addUserDefinedField(m().inputOutput,"parallelColor_"+this.getId(),this._parallelColor.copy()),this.surfaceNormalsNode&&e.addUserDefinedField(m().inputOutput,"surfaceNormals_"+this.getId(),new(l().SFNode)(this.surfaceNormalsNode)))},getUniformsText:function(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+="// CartoonVolumeStyle\n",e+="\n",e+="uniform int colorSteps_"+this.getId()+";\n",e+="uniform vec4 orthogonalColor_"+this.getId()+";\n",e+="uniform vec4 parallelColor_"+this.getId()+";\n",e+=this.getNormalText(this.surfaceNormalsNode),e+="\n",e+="vec3\n",e+="rgb2hsv_"+this.getId()+" (in vec3 color)\n",e+="{\n",e+=" float h = 0.0;\n",e+=" float s = 0.0;\n",e+=" float v = 0.0;\n",e+="\n",e+=" float min = min (min (color .r, color .g), color .b);\n",e+=" float max = max (max (color .r, color .g), color .b);\n",e+=" v = max; // value\n",e+="\n",e+=" float delta = max - min;\n",e+="\n",e+=" if (max != 0.0 && delta != 0.0)\n",e+=" {\n",e+=" s = delta / max; // s\n",e+="\n",e+=" if (color .r == max)\n",e+=" h = (color .g - color .b) / delta; // between yellow & magenta\n",e+=" else if (color .g == max)\n",e+=" h = 2.0 + (color .b - color .r) / delta; // between cyan & yellow\n",e+=" else\n",e+=" h = 4.0 + (color .r - color .g) / delta; // between magenta & cyan\n",e+="\n",e+=" h *= M_PI / 3.0; // radiants\n",e+=" if (h < 0.0)\n",e+=" h += M_PI * 2.0;\n",e+=" }\n",e+=" else\n",e+=" s = h = 0.0; // s = 0, h is undefined\n",e+="\n",e+=" return vec3 (h, s, v);\n",e+="}\n",e+="\n",e+="vec3\n",e+="hsv2rgb_"+this.getId()+" (in vec3 hsv)\n",e+="{\n",e+=" float h = hsv [0];\n",e+=" float s = clamp (hsv [1], 0.0, 1.0);\n",e+=" float v = clamp (hsv [2], 0.0, 1.0);\n",e+="\n",e+=" // H is given on [0, 2 * Pi]. S and V are given on [0, 1].\n",e+=" // RGB are each returned on [0, 1].\n",e+="\n",e+=" if (s == 0.0)\n",e+=" {\n",e+=" // achromatic (grey)\n",e+=" return vec3 (v, v, v);\n",e+=" }\n",e+=" else\n",e+=" {\n",e+=" float w = (h * (180.0 / M_PI)) / 60.0; // sector 0 to 5\n",e+="\n",e+=" float i = floor (w);\n",e+=" float f = w - i; // factorial part of h\n",e+=" float p = v * ( 1.0 - s );\n",e+=" float q = v * ( 1.0 - s * f );\n",e+=" float t = v * ( 1.0 - s * ( 1.0 - f ) );\n",e+="\n",e+=" switch (int (i) % 6)\n",e+=" {\n",e+=" case 0: return vec3 (v, t, p);\n",e+=" case 1: return vec3 (q, v, p);\n",e+=" case 2: return vec3 (p, v, t);\n",e+=" case 3: return vec3 (p, q, v);\n",e+=" case 4: return vec3 (t, p, v);\n",e+=" default: return vec3 (v, p, q);\n",e+=" }\n",e+=" }\n",e+="\n",e+=" return vec3 (0.0);\n",e+="}\n",e+="\n",e+="vec3\n",e+="mix_hsv_"+this.getId()+" (in vec3 a, in vec3 b, in float t)\n",e+="{\n",e+=" // Linearely interpolate in HSV space between source color @a a and destination color @a b by an amount of @a t.\n",e+=" // Source and destination color must be in HSV space.\n",e+="\n",e+=" float ha = a [0];\n",e+=" float sa = a [1];\n",e+=" float va = a [2];\n",e+="\n",e+=" float hb = b [0];\n",e+=" float sb = b [1];\n",e+=" float vb = b [2];\n",e+="\n",e+=" if (sa == 0.0)\n",e+=" ha = hb;\n",e+="\n",e+=" if (sb == 0.0)\n",e+=" hb = ha;\n",e+="\n",e+=" float range = abs (hb - ha);\n",e+="\n",e+=" if (range <= M_PI)\n",e+=" {\n",e+=" float h = ha + t * (hb - ha);\n",e+=" float s = sa + t * (sb - sa);\n",e+=" float v = va + t * (vb - va);\n",e+=" return vec3 (h, s, v);\n",e+=" }\n",e+="\n",e+=" float PI2 = M_PI * 2.0;\n",e+=" float step = (PI2 - range) * t;\n",e+=" float h = ha < hb ? ha - step : ha + step;\n",e+="\n",e+=" if (h < 0.0)\n",e+=" h += PI2;\n",e+="\n",e+=" else if (h > PI2)\n",e+=" h -= PI2;\n",e+="\n",e+=" float s = sa + t * (sb - sa);\n",e+=" float v = va + t * (vb - va);\n",e+=" return vec3 (h, s, v);\n",e+="}\n",e+="\n",e+="vec4\n",e+="getCartoonStyle_"+this.getId()+" (in vec4 originalColor, vec3 texCoord)\n",e+="{\n",e+=" vec4 surfaceNormal = getNormal_"+this.getId()+" (texCoord);\n",e+="\n",e+=" if (surfaceNormal .w == 0.0)\n",e+=" return vec4 (0.0);\n",e+="\n",e+=" vec4 orthogonalColor = orthogonalColor_"+this.getId()+";\n",e+=" vec4 parallelColor = parallelColor_"+this.getId()+";\n",e+=" int colorSteps = colorSteps_"+this.getId()+";\n",e+="\n",e+=" float steps = clamp (float (colorSteps), 1.0, 64.0);\n",e+=" float step = M_PI / 2.0 / steps;\n",e+=" float cosTheta = min (dot (surfaceNormal .xyz, normalize (vertex)), 1.0);\n",e+="\n",e+=" if (cosTheta < 0.0)\n",e+=" return vec4 (0.0);\n",e+="\n",e+=" float t = cos (min (floor (acos (cosTheta) / step) * (steps > 1.0 ? steps / (steps - 1.0) : 1.0), steps) * step);\n",e+=" vec3 orthogonalHSV = rgb2hsv_"+this.getId()+" (orthogonalColor .rgb);\n",e+=" vec3 parallelHSV = rgb2hsv_"+this.getId()+" (parallelColor .rgb);\n",e+="\n",e+=" return vec4 (hsv2rgb_"+this.getId()+" (mix_hsv_"+this.getId()+" (orthogonalHSV, parallelHSV, t)), originalColor .a);\n",e+="}\n",e},getFunctionsText:function(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+=" // CartoonVolumeStyle\n",e+="\n",e+=" textureColor = getCartoonStyle_"+this.getId()+" (textureColor, texCoord);\n",e}});const q=G;S().set("x_ite/Components/VolumeRendering/CartoonVolumeStyle",q);const H=q;function k(e){C.call(this,e),this.addType(m().ComposedVolumeStyle),this.renderStyleNodes=[]}k.prototype=Object.assign(Object.create(C.prototype),{constructor:k,[Symbol.for("X_ITE.X3DBaseNode.fieldDefinitions")]:new(h())([new(u())(m().inputOutput,"metadata",new(l().SFNode)),new(u())(m().inputOutput,"enabled",new(l().SFBool)(!0)),new(u())(m().inputOutput,"renderStyle",new(l().MFNode))]),getTypeName:function(){return"ComposedVolumeStyle"},getComponentName:function(){return"VolumeRendering"},getContainerField:function(){return"renderStyle"},getSpecificationRange:function(){return["3.3","Infinity"]},initialize:function(){C.prototype.initialize.call(this);this.getBrowser().getContext().getVersion()<2||(this._renderStyle.addInterest("set_renderStyle__",this),this.set_renderStyle__())},addVolumeData:function(e){C.prototype.addVolumeData.call(this,e);for(const t of this.renderStyleNodes)t.addVolumeData(e)},removeVolumeData:function(e){C.prototype.removeVolumeData.call(this,e);for(const t of this.renderStyleNodes)t.removeVolumeData(e)},set_renderStyle__:function(){const e=this.renderStyleNodes;for(const t of e){t.removeInterest("addNodeEvent",this);for(const e of this.getVolumeData())t.removeVolumeData(e)}e.length=0;for(const t of this._renderStyle){const n=I()(m().X3DComposableVolumeRenderStyleNode,t);n&&e.push(n)}for(const t of e){t.addInterest("addNodeEvent",this);for(const e of this.getVolumeData())t.addVolumeData(e)}},addShaderFields:function(e){if(this._enabled.getValue())for(const t of this.renderStyleNodes)t.addShaderFields(e)},getUniformsText:function(){if(!this._enabled.getValue())return"";let e="";for(const t of this.renderStyleNodes)e+=t.getUniformsText();e+="\n",e+="vec4\n",e+="getComposedStyle_"+this.getId()+" (in vec4 textureColor, in vec3 texCoord)\n",e+="{\n";for(const t of this.renderStyleNodes)e+=t.getFunctionsText();return e+="\n",e+=" return textureColor;\n",e+="}\n",e},getFunctionsText:function(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+=" // ComposedVolumeStyle\n",e+="\n",e+=" textureColor = getComposedStyle_"+this.getId()+" (textureColor, texCoord);\n",e}});const Y=k;S().set("x_ite/Components/VolumeRendering/ComposedVolumeStyle",Y);const W=Y;function Q(e){C.call(this,e),this.addType(m().EdgeEnhancementVolumeStyle)}Q.prototype=Object.assign(Object.create(C.prototype),{constructor:Q,[Symbol.for("X_ITE.X3DBaseNode.fieldDefinitions")]:new(h())([new(u())(m().inputOutput,"metadata",new(l().SFNode)),new(u())(m().inputOutput,"enabled",new(l().SFBool)(!0)),new(u())(m().inputOutput,"edgeColor",new(l().SFColorRGBA)(0,0,0,1)),new(u())(m().inputOutput,"gradientThreshold",new(l().SFFloat)(.4)),new(u())(m().inputOutput,"surfaceNormals",new(l().SFNode))]),getTypeName:function(){return"EdgeEnhancementVolumeStyle"},getComponentName:function(){return"VolumeRendering"},getContainerField:function(){return"renderStyle"},getSpecificationRange:function(){return["3.3","Infinity"]},initialize:function(){C.prototype.initialize.call(this);this.getBrowser().getContext().getVersion()<2||(this._surfaceNormals.addInterest("set_surfaceNormals__",this),this.set_surfaceNormals__())},set_surfaceNormals__:function(){this.surfaceNormalsNode=I()(m().X3DTexture3DNode,this._surfaceNormals)},addShaderFields:function(e){this._enabled.getValue()&&(e.addUserDefinedField(m().inputOutput,"edgeColor_"+this.getId(),this._edgeColor.copy()),e.addUserDefinedField(m().inputOutput,"gradientThreshold_"+this.getId(),this._gradientThreshold.copy()),this.surfaceNormalsNode&&e.addUserDefinedField(m().inputOutput,"surfaceNormals_"+this.getId(),new(l().SFNode)(this.surfaceNormalsNode)))},getUniformsText:function(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+="// EdgeEnhancementVolumeStyle\n",e+="\n",e+="uniform vec4 edgeColor_"+this.getId()+";\n",e+="uniform float gradientThreshold_"+this.getId()+";\n",e+=this.getNormalText(this.surfaceNormalsNode),e+="\n",e+="vec4\n",e+="getEdgeEnhacementStyle_"+this.getId()+" (in vec4 originalColor, in vec3 texCoord)\n",e+="{\n",e+=" vec4 surfaceNormal = getNormal_"+this.getId()+" (texCoord);\n",e+="\n",e+=" if (surfaceNormal .w == 0.0)\n",e+=" return vec4 (0.0);\n",e+="\n",e+=" vec4 edgeColor = edgeColor_"+this.getId()+";\n",e+=" float gradientThreshold = gradientThreshold_"+this.getId()+";\n",e+="\n",e+=" float angle = abs (dot (surfaceNormal .xyz, normalize (vertex)));\n",e+="\n",e+=" if (angle >= cos (gradientThreshold))\n",e+=" return originalColor;\n",e+=" else\n",e+=" return vec4 (mix (edgeColor .rgb, originalColor.rgb, angle), originalColor .a);\n",e+="}\n",e},getFunctionsText:function(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+=" // EdgeEnhancementVolumeStyle\n",e+="\n",e+=" textureColor = getEdgeEnhacementStyle_"+this.getId()+" (textureColor, texCoord);\n",e}});const Z=Q;S().set("x_ite/Components/VolumeRendering/EdgeEnhancementVolumeStyle",Z);const J=Z,K=window[Symbol.for("X_ITE.X3D-8.7.8")].require("x_ite/Components/Core/X3DChildNode");var $=e.n(K);const ee=window[Symbol.for("X_ITE.X3D-8.7.8")].require("x_ite/Components/Grouping/X3DBoundedObject");var te=e.n(ee);const ne=window[Symbol.for("X_ITE.X3D-8.7.8")].require("x_ite/Browser/Core/TextureQuality");var oe=e.n(ne);const ie=window[Symbol.for("X_ITE.X3D-8.7.8")].require("x_ite/Components/Shape/UnlitMaterial");var re=e.n(ie);const se="#version 300 es\n\nprecision highp float;\nprecision highp int;\n\nuniform mat4 x3d_ProjectionMatrix;\nuniform mat4 x3d_ModelViewMatrix;\nuniform mat4 x3d_TextureMatrix [1];\n\nin vec4 x3d_TexCoord0;\nin vec4 x3d_Vertex;\n\nout vec3 vertex;\nout vec4 texCoord;\n\nvoid\nmain ()\n{\n vec4 position = x3d_ModelViewMatrix * x3d_Vertex;\n\n vertex = position .xyz;\n texCoord = x3d_TextureMatrix [0] * x3d_TexCoord0;\n\n gl_Position = x3d_ProjectionMatrix * position;\n}\n";S().set("x_ite/Browser/VolumeRendering/VolumeStyle.vs",se);const ae=se,le='#version 300 es\n\nprecision highp float;\nprecision highp int;\nprecision highp sampler3D;\n\nin vec3 vertex;\nin vec4 texCoord;\n\nuniform sampler3D x3d_Texture3D [1];\nuniform mat3 x3d_TextureNormalMatrix;\n\nuniform x3d_LightSourceParameters x3d_LightSource [x3d_MaxLights];\n\nconst float M_PI = 3.14159265359;\n\n#pragma X3D include "includes/ClipPlanes.glsl"\n#pragma X3D include "includes/Fog.glsl"\n\n// VOLUME_STYLES_UNIFORMS\n\nout vec4 x3d_FragColor;\n\nvec4\ngetTextureColor (in vec3 texCoord)\n{\n if (texCoord .s < 0.0 || texCoord .s > 1.0)\n discard;\n\n if (texCoord .t < 0.0 || texCoord .t > 1.0)\n discard;\n\n if (texCoord .p < 0.0 || texCoord .p > 1.0)\n discard;\n\n vec4 textureColor = texture (x3d_Texture3D [0], texCoord);\n\n // Apply volume styles.\n\n// VOLUME_STYLES_FUNCTIONS\n\n return textureColor;\n}\n\nvoid\nmain ()\n{\n #if defined (X3D_CLIP_PLANES)\n clip ();\n #endif\n\n vec4 finalColor = getTextureColor (texCoord .stp / texCoord .q);\n\n #if defined (X3D_FOG)\n finalColor .rgb = getFogColor (finalColor .rgb);\n #endif\n\n x3d_FragColor = finalColor;\n}\n';S().set("x_ite/Browser/VolumeRendering/VolumeStyle.fs",le);const de=le;function ue(e,t){re().call(this,e),this.volumeDataNode=t,this.volumeShaderNodes=new Map}ue.prototype=Object.assign(Object.create(re().prototype),{constructor:ue,getTypeName:function(){return"VolumeMaterial"},getComponentName:function(){return"Shape"},getContainerField:function(){return"material"},getVolumeShaders:function(){return this.volumeShaderNodes},getShader:function(e,t){const{fogNode:n,objectsCount:o}=t;let i="";return i+=n?n.getFogType():0,i+=".",i+=o[0],i+=".",i+=o[1],this.volumeShaderNodes.get(i)||this.createShader(i,e,t)},createShader:function(e,t,n){const o=this.getBrowser(),i=[],{fogNode:r,objectsCount:s}=n;r&&i.push("X3D_FOG"),s[0]&&(i.push("X3D_CLIP_PLANES"),i.push("X3D_NUM_CLIP_PLANES "+Math.min(s[0],o.getMaxClipPlanes()))),s[1]&&(i.push("X3D_LIGHTING"),i.push("X3D_NUM_LIGHTS "+Math.min(s[1],o.getMaxLights())));const a=this.volumeDataNode.createShader(i,ae,de);return this.volumeShaderNodes.set(e,a),a},setShaderUniforms:function(e,t,n,o,i){this.volumeDataNode.setShaderUniforms(e,t)}});const ce=ue;S().set("x_ite/Browser/VolumeRendering/VolumeMaterial",ce);const he=ce,fe=window[Symbol.for("X_ITE.X3D-8.7.8")].require("standard/Math/Numbers/Vector3");var pe=e.n(fe);function ge(e){$().call(this,e),te().call(this,e),this.addType(m().X3DVolumeDataNode);const t=this.getBrowser();this.proximitySensorNode=t.getPrivateScene().createNode("ProximitySensor",!1),this.transformNode=t.getPrivateScene().createNode("Transform",!1),this.shapeNode=t.getPrivateScene().createNode("Shape",!1),this.appearanceNode=t.getPrivateScene().createNode("Appearance",!1),this.textureTransformNode=t.getPrivateScene().createNode("TextureTransform3D",!1),this.geometryNode=t.getPrivateScene().createNode("QuadSet",!1),this.textureCoordinateNode=t.getPrivateScene().createNode("TextureCoordinate3D",!1),this.coordinateNode=t.getPrivateScene().createNode("Coordinate",!1),this.volumeMaterialNode=new he(t.getPrivateScene(),this),this.textureNormalMatrixArray=new Float32Array(9),this.setCameraObject(!0)}ge.prototype=Object.assign(Object.create($().prototype),te().prototype,{constructor:ge,initialize:function(){$().prototype.initialize.call(this),te().prototype.initialize.call(this);const e=this.getBrowser(),t=e.getContext();e.getBrowserOptions()._TextureQuality.addInterest("set_dimensions__",this),t.getVersion()>=2&&(this._dimensions.addInterest("set_dimensions__",this),this.set_dimensions__()),this._visible.addFieldInterest(this.transformNode._visible),this._bboxDisplay.addFieldInterest(this.transformNode._bboxDisplay),this.proximitySensorNode._size=new(l().SFVec3f)(-1,-1,-1),this.transformNode._children=new(l().MFNode)(this.shapeNode),this.shapeNode._appearance=this.appearanceNode,this.shapeNode._geometry=this.geometryNode,this.appearanceNode._alphaMode="BLEND",this.appearanceNode._material=this.volumeMaterialNode,this.appearanceNode._textureTransform=this.textureTransformNode,this.textureTransformNode._translation=new(l().SFVec3f)(.5,.5,.5),this.textureTransformNode._center=new(l().SFVec3f)(-.5,-.5,-.5),this.geometryNode._texCoord=this.textureCoordinateNode,this.geometryNode._coord=this.coordinateNode,this.coordinateNode.setPrivate(!0),this.textureCoordinateNode.setPrivate(!0),this.geometryNode.setPrivate(!0),this.textureTransformNode.setPrivate(!0),this.volumeMaterialNode.setPrivate(!0),this.appearanceNode.setPrivate(!0),this.shapeNode.setPrivate(!0),this.transformNode.setPrivate(!0),this.proximitySensorNode.setPrivate(!0),this.coordinateNode.setup(),this.textureCoordinateNode.setup(),this.geometryNode.setup(),this.textureTransformNode.setup(),this.volumeMaterialNode.setup(),this.appearanceNode.setup(),this.shapeNode.setup(),this.transformNode.setup(),this.proximitySensorNode.setup(),this.proximitySensorNode._orientation_changed.addFieldInterest(this.transformNode._rotation),this.proximitySensorNode._orientation_changed.addFieldInterest(this.textureTransformNode._rotation),this.textureTransformNode.addInterest("set_textureTransform__",this),this.set_textureTransform__()},getBBox:function(e,t){return this._bboxSize.getValue().equals(this.getDefaultBBoxSize())?e.set(this._dimensions.getValue(),pe().Zero):e.set(this._bboxSize.getValue(),this._bboxCenter.getValue())},getAppearance:function(){return this.appearanceNode},updateShader:function(){this.volumeMaterialNode.getVolumeShaders().clear()},addShaderUniformNames:function(e){e.push("x3d_TextureNormalMatrix")},getNumPlanes:function(){switch(this.getBrowser().getBrowserOptions().getTextureQuality()){case oe().LOW:return 200;case oe().MEDIUM:return 400;case oe().HIGH:return 600}return 200},set_dimensions__:function(){const e=this.getNumPlanes(),t=this._dimensions.getValue().magnitude(),n=t/2,o=[];this.coordinateNode._point.length=0;for(let i=0;i<e;++i){const r=i/(e-1)-.5;o.push(n,n,t*r,-n,n,t*r,-n,-n,t*r,n,-n,t*r)}this.coordinateNode._point=o,this.textureCoordinateNode._point=o,this.textureTransformNode._scale=new(l().SFVec3f)(1/this._dimensions.x,1/this._dimensions.y,1/this._dimensions.z)},set_textureTransform__:function(){this.textureNormalMatrixArray.set(this.textureTransformNode.getMatrix().submatrix.inverse())},traverse:function(e,t){this.proximitySensorNode.traverse(e,t),this.transformNode.traverse(e,t)},setShaderUniforms(e,t){e.uniformMatrix3fv(t.x3d_TextureNormalMatrix,!0,this.textureNormalMatrixArray)},dispose:function(){te().prototype.dispose.call(this),$().prototype.dispose.call(this)}});const me=ge;S().set("x_ite/Components/VolumeRendering/X3DVolumeDataNode",me);const _e=me,Se=window[Symbol.for("X_ITE.X3D-8.7.8")].require("x_ite/Components/Shaders/ComposedShader");var ye=e.n(Se);const xe=window[Symbol.for("X_ITE.X3D-8.7.8")].require("x_ite/Components/Shaders/ShaderPart");var Ne=e.n(xe);function we(e){_e.call(this,e),this.addType(m().IsoSurfaceVolumeData),this.renderStyleNodes=[]}we.prototype=Object.assign(Object.create(_e.prototype),{constructor:we,[Symbol.for("X_ITE.X3DBaseNode.fieldDefinitions")]:new(h())([new(u())(m().inputOutput,"metadata",new(l().SFNode)),new(u())(m().inputOutput,"dimensions",new(l().SFVec3f)(1,1,1)),new(u())(m().inputOutput,"contourStepSize",new(l().SFFloat)(0)),new(u())(m().inputOutput,"surfaceValues",new(l().MFFloat)),new(u())(m().inputOutput,"surfaceTolerance",new(l().SFFloat)(0)),new(u())(m().inputOutput,"visible",new(l().SFBool)(!0)),new(u())(m().inputOutput,"bboxDisplay",new(l().SFBool)),new(u())(m().initializeOnly,"bboxCenter",new(l().SFVec3f)(0,0,0)),new(u())(m().initializeOnly,"bboxSize",new(l().SFVec3f)(-1,-1,-1)),new(u())(m().inputOutput,"renderStyle",new(l().MFNode)),new(u())(m().inputOutput,"gradients",new(l().SFNode)),new(u())(m().inputOutput,"voxels",new(l().SFNode))]),getTypeName:function(){return"IsoSurfaceVolumeData"},getComponentName:function(){return"VolumeRendering"},getContainerField:function(){return"children"},getSpecificationRange:function(){return["3.3","Infinity"]},initialize:function(){_e.prototype.initialize.call(this);this.getBrowser().getContext().getVersion()<2||(this._gradients.addInterest("set_gradients__",this),this._renderStyle.addInterest("set_renderStyle__",this),this._contourStepSize.addInterest("updateShader",this),this._surfaceValues.addInterest("updateShader",this),this._surfaceTolerance.addInterest("updateShader",this),this._renderStyle.addInterest("updateShader",this),this.getAppearance()._texture=this._voxels,this.set_gradients__(),this.set_renderStyle__(),this.set_voxels__(),this.updateShader())},set_gradients__:function(){this.gradientsNode=I()(m().X3DTexture3DNode,this._gradients)},set_renderStyle__:function(){const e=this.renderStyleNodes;for(const t of e)t.removeInterest("updateShader",this),t.removeVolumeData(this);e.length=0;for(const t of this._renderStyle){const n=I()(m().X3DComposableVolumeRenderStyleNode,t);n&&e.push(n)}for(const t of e)t.addInterest("updateShader",this),t.addVolumeData(this)},set_voxels__:function(){this.voxelsNode=I()(m().X3DTexture3DNode,this._voxels),this.voxelsNode?this.getAppearance()._texture=this._voxels:this.getAppearance()._texture=this.getBrowser().getDefaultVoxels()},createShader:function(e,t,n){const o=this.getBrowser().getDefaultVolumeStyle();let i=o.getUniformsText(),r=o.getFunctionsText();i+="\n",i+="uniform float surfaceValues ["+this._surfaceValues.length+"];\n",i+="uniform float surfaceTolerance;\n";for(const e of this.renderStyleNodes)i+=e.getUniformsText();if(r+="\n",r+=" // IsoSurfaceVolumeData\n",r+="\n",this.gradientsNode?(i+="\n",i+="uniform sampler3D gradients;\n",r+=" if (length (texture (gradients, texCoord) .xyz * 2.0 - 1.0) < surfaceTolerance)\n",r+=" discard;\n"):(i+="\n",i+="vec4\n",i+="getNormal (in vec3 texCoord)\n",i+="{\n",i+=" vec4 offset = vec4 (1.0 / vec3 (textureSize (x3d_Texture3D [0], 0)), 0.0);\n",i+=" float i0 = texture (x3d_Texture3D [0], texCoord + offset .xww) .r;\n",i+=" float i1 = texture (x3d_Texture3D [0], texCoord - offset .xww) .r;\n",i+=" float i2 = texture (x3d_Texture3D [0], texCoord + offset .wyw) .r;\n",i+=" float i3 = texture (x3d_Texture3D [0], texCoord - offset .wyw) .r;\n",i+=" float i4 = texture (x3d_Texture3D [0], texCoord + offset .wwz) .r;\n",i+=" float i5 = texture (x3d_Texture3D [0], texCoord - offset .wwz) .r;\n",i+=" vec3 n = vec3 (i1 - i0, i3 - i2, i5 - i4);\n",i+="\n",i+=" return vec4 (normalize (x3d_TextureNormalMatrix * n), length (n));\n",i+="}\n",r+=" if (getNormal (texCoord) .w < surfaceTolerance)\n",r+=" discard;\n"),r+="\n",r+=" float intensity = textureColor .r;\n",r+="\n",1===this._surfaceValues.length){const e=Math.abs(this._contourStepSize.getValue());if(0===e)r+=" if (intensity > surfaceValues [0])\n",r+=" {\n",r+=" textureColor = vec4 (vec3 (surfaceValues [0]), 1.0);\n",this.renderStyleNodes.length&&(r+=this.renderStyleNodes[0].getFunctionsText()),r+=" }\n",r+=" else\n",r+=" {\n",r+=" discard;\n",r+=" }\n",r+="\n";else{const t=[];for(let n=this._surfaceValues[0]-e;n>0;n-=e)t.unshift(n);t.push(this._surfaceValues[0]);for(let n=this._surfaceValues[0]+e;n<1;n+=e)t.push(n);r+=" if (false)\n",r+=" { }\n";for(let e=this._surfaceValues.length-1;e>=0;--e)r+=" else if (intensity > "+t[e]+")\n",r+=" {\n",r+=" textureColor = vec4 (vec3 ("+t[e]+"), 1.0);\n",this.renderStyleNodes.length&&(r+=this.renderStyleNodes[0].getFunctionsText()),r+=" }\n";r+=" else\n",r+=" {\n",r+=" discard;\n",r+=" }\n",r+="\n"}}else{r+=" if (false)\n",r+=" { }\n";for(let e=this._surfaceValues.length-1;e>=0;--e){if(r+=" else if (intensity > surfaceValues ["+e+"])\n",r+=" {\n",r+=" textureColor = vec4 (vec3 (surfaceValues ["+e+"]), 1.0);\n",this.renderStyleNodes.length){const t=Math.min(e,this.renderStyleNodes.length-1);r+=this.renderStyleNodes[t].getFunctionsText()}r+=" }\n"}r+=" else\n",r+=" {\n",r+=" discard;\n",r+=" }\n",r+="\n"}n=(n=n.replace(/\/\/ VOLUME_STYLES_UNIFORMS\n/,i)).replace(/\/\/ VOLUME_STYLES_FUNCTIONS\n/,r);const s=new(Ne())(this.getExecutionContext());s._url.push(encodeURI("data:x-shader/x-vertex,"+t)),s.setPrivate(!0),s.setName("VolumeDataVertexShader"),s.setOptions(e),s.setup();const a=new(Ne())(this.getExecutionContext());a._type="FRAGMENT",a._url.push(encodeURI("data:x-shader/x-fragment,"+n)),a.setPrivate(!0),a.setName("VolumeDataFragmentShader"),a.setOptions(e),a.setup();const d=new(ye())(this.getExecutionContext());d._language="GLSL",d._parts.push(s),d._parts.push(a),d.setPrivate(!0),d.setName("VolumeDataShader"),d.addUserDefinedField(m().inputOutput,"surfaceValues",this._surfaceValues.copy()),d.addUserDefinedField(m().inputOutput,"surfaceTolerance",this._surfaceTolerance.copy()),this.gradientsNode&&d.addUserDefinedField(m().inputOutput,"gradients",new(l().SFNode)(this.gradientsNode)),o.addShaderFields(d);for(const e of this.renderStyleNodes)e.addShaderFields(d);const u=[];return this.addShaderUniformNames(u),d.setUniformNames(u),d.setup(),d}});const ve=we;S().set("x_ite/Components/VolumeRendering/IsoSurfaceVolumeData",ve);const Ce=ve;function Fe(e){N.call(this,e),this.addType(m().ProjectionVolumeStyle)}Fe.prototype=Object.assign(Object.create(N.prototype),{constructor:Fe,[Symbol.for("X_ITE.X3DBaseNode.fieldDefinitions")]:new(h())([new(u())(m().inputOutput,"metadata",new(l().SFNode)),new(u())(m().inputOutput,"enabled",new(l().SFBool)(!0)),new(u())(m().inputOutput,"type",new(l().SFString)("MAX")),new(u())(m().inputOutput,"intensityThreshold",new(l().SFFloat)(0))]),getTypeName:function(){return"ProjectionVolumeStyle"},getComponentName:function(){return"VolumeRendering"},getContainerField:function(){return"renderStyle"},getSpecificationRange:function(){return["3.3","Infinity"]},addShaderFields:function(e){this._enabled.getValue()&&e.addUserDefinedField(m().inputOutput,"intensityThreshold_"+this.getId(),this._intensityThreshold.copy())},getUniformsText:function(){if(!this._enabled.getValue())return"";let e="";switch(e+="\n",e+="// ProjectionVolumeStyle\n",e+="\n",e+="uniform float intensityThreshold_"+this.getId()+";\n",e+="\n",e+="vec4\n",e+="getProjectionStyle_"+this.getId()+"(in vec4 originalColor, in vec3 texCoord)\n",e+="{\n",this._type.getValue()){default:case"MAX":case"AVERAGE":e+=" float projectionColor = 0.0;\n";break;case"MIN":e+=" float projectionColor = 1.0;\n"}switch(e+=" const int samples = 32;\n",e+=" vec3 step = normalize (x3d_TextureNormalMatrix * vec3 (0.0, 0.0, 1.0)) / float (samples);\n",e+=" vec3 ray = texCoord - step * float (samples) * 0.5;\n",e+=" bool first = false;\n",e+="\n",e+=" for (int i = 0; i < samples; ++ i, ray += step)\n",e+=" {\n",e+=" if (ray .s < 0.0 || ray .s > 1.0)\n",e+=" continue;\n",e+="\n",e+=" if (ray .t < 0.0 || ray .t > 1.0)\n",e+=" continue;\n",e+="\n",e+=" if (ray .p < 0.0 || ray .p > 1.0)\n",e+=" continue;\n",e+="\n",e+=" float intensity = texture (x3d_Texture3D [0], ray) .r;\n",e+="\n",this._type.getValue()){default:case"MAX":e+=" if (intensity < intensityThreshold_"+this.getId()+")\n",e+=" continue;\n",e+="\n",e+=" if (intensityThreshold_"+this.getId()+" > 0.0 && first)\n",e+=" break;\n",e+="\n",e+=" if (intensity <= projectionColor)\n",e+=" {\n",e+=" first = true;\n",e+=" continue;\n",e+=" }\n",e+="\n",e+=" projectionColor = intensity;\n";break;case"MIN":e+=" if (intensity < intensityThreshold_"+this.getId()+")\n",e+=" continue;\n",e+="\n",e+=" if (intensityThreshold_"+this.getId()+" > 0.0 && first)\n",e+=" break;\n",e+="\n",e+=" if (intensity >= projectionColor)\n",e+=" {\n",e+=" first = true;\n",e+=" continue;\n",e+=" }\n",e+="\n",e+=" projectionColor = intensity;\n";break;case"AVERAGE":e+=" projectionColor += intensity;\n"}return e+=" }\n",e+="\n","AVERAGE"===this._type.getValue()&&(e+=" projectionColor /= float (samples);\n"),e+=" return vec4 (vec3 (projectionColor), originalColor .a);\n",e+="}\n",e},getFunctionsText:function(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+=" // ProjectionVolumeStyle\n",e+="\n",e+=" textureColor = getProjectionStyle_"+this.getId()+" (textureColor, texCoord);\n",e}});const Ie=Fe;S().set("x_ite/Components/VolumeRendering/ProjectionVolumeStyle",Ie);const Ve=Ie;function Te(e){_e.call(this,e),this.addType(m().SegmentedVolumeData),this.segmentIdentifiersNode=null,this.renderStyleNodes=[]}Te.prototype=Object.assign(Object.create(_e.prototype),{constructor:Te,[Symbol.for("X_ITE.X3DBaseNode.fieldDefinitions")]:new(h())([new(u())(m().inputOutput,"metadata",new(l().SFNode)),new(u())(m().inputOutput,"dimensions",new(l().SFVec3f)(1,1,1)),new(u())(m().inputOutput,"segmentEnabled",new(l().MFBool)),new(u())(m().inputOutput,"visible",new(l().SFBool)(!0)),new(u())(m().inputOutput,"bboxDisplay",new(l().SFBool)),new(u())(m().initializeOnly,"bboxCenter",new(l().SFVec3f)(0,0,0)),new(u())(m().initializeOnly,"bboxSize",new(l().SFVec3f)(-1,-1,-1)),new(u())(m().inputOutput,"segmentIdentifiers",new(l().SFNode)),new(u())(m().inputOutput,"renderStyle",new(l().MFNode)),new(u())(m().inputOutput,"voxels",new(l().SFNode))]),getTypeName:function(){return"SegmentedVolumeData"},getComponentName:function(){return"VolumeRendering"},getContainerField:function(){return"children"},getSpecificationRange:function(){return["3.3","Infinity"]},initialize:function(){_e.prototype.initialize.call(this);this.getBrowser().getContext().getVersion()<2||(this._segmentIdentifiers.addInterest("set_segmentIdentifiers__",this),this._renderStyle.addInterest("set_renderStyle__",this),this._segmentEnabled.addInterest("updateShader",this),this._segmentIdentifiers.addInterest("updateShader",this),this._renderStyle.addInterest("updateShader",this),this.getAppearance()._texture=this._voxels,this.set_segmentIdentifiers__(),this.set_renderStyle__(),this.set_voxels__(),this.updateShader())},getSegmentEnabled:function(e){return!(e<this._segmentEnabled.length)||this._segmentEnabled[e]},set_segmentIdentifiers__:function(){this.segmentIdentifiersNode=I()(m().X3DTexture3DNode,this._segmentIdentifiers)},set_renderStyle__:function(){const e=this.renderStyleNodes;for(const t of e)t.removeInterest("updateShader",this),t.removeVolumeData(this);e.length=0;for(const t of this._renderStyle){const n=I()(m().X3DComposableVolumeRenderStyleNode,t);n&&e.push(n)}for(const t of e)t.addInterest("updateShader",this),t.addVolumeData(this)},set_voxels__:function(){this.voxelsNode=I()(m().X3DTexture3DNode,this._voxels),this.voxelsNode?this.getAppearance()._texture=this._voxels:this.getAppearance()._texture=this.getBrowser().getDefaultVoxels()},createShader:function(e,t,n){const o=this.getBrowser().getDefaultVolumeStyle();let i=o.getUniformsText(),r=o.getFunctionsText();if(this.segmentIdentifiersNode?(i+="\n",i+="uniform sampler3D segmentIdentifiers;\n",i+="\n",r+="\n",r+=" int segment = int (texture (segmentIdentifiers, texCoord) .r * 255.0);\n"):r+=" int segment = 0;\n",this.renderStyleNodes.length){r+="\n",r+=" switch (segment)\n",r+=" {\n";for(const[e,t]of this.renderStyleNodes.entries())r+=" case "+e+":\n",r+=" {\n",this.getSegmentEnabled(e)?(i+=t.getUniformsText(),r+=t.getFunctionsText(),r+=" break;\n"):r+=" discard;\n",r+=" }\n";r+=" }\n"}n=(n=n.replace(/\/\/ VOLUME_STYLES_UNIFORMS\n/,i)).replace(/\/\/ VOLUME_STYLES_FUNCTIONS\n/,r);const s=new(Ne())(this.getExecutionContext());s._url.push(encodeURI("data:x-shader/x-vertex,"+t)),s.setPrivate(!0),s.setName("SegmentedVolumeDataVertexShader"),s.setOptions(e),s.setup();const a=new(Ne())(this.getExecutionContext());a._type="FRAGMENT",a._url.push(encodeURI("data:x-shader/x-fragment,"+n)),a.setPrivate(!0),a.setName("SegmentedVolumeDataFragmentShader"),a.setOptions(e),a.setup();const d=new(ye())(this.getExecutionContext());d._language="GLSL",d._parts.push(s),d._parts.push(a),d.setPrivate(!0),d.setName("SegmentedVolumeDataShader"),this.segmentIdentifiersNode&&d.addUserDefinedField(m().inputOutput,"segmentIdentifiers",new(l().SFNode)(this.segmentIdentifiersNode)),o.addShaderFields(d);for(const[e,t]of this.renderStyleNodes.entries())this.getSegmentEnabled(e)&&t.addShaderFields(d);const u=[];return this.addShaderUniformNames(u),d.setUniformNames(u),d.setup(),d}});const be=Te;S().set("x_ite/Components/VolumeRendering/SegmentedVolumeData",be);const De=be;function Oe(e){C.call(this,e),this.addType(m().ShadedVolumeStyle)}Oe.prototype=Object.assign(Object.create(C.prototype),{constructor:Oe,[Symbol.for("X_ITE.X3DBaseNode.fieldDefinitions")]:new(h())([new(u())(m().inputOutput,"metadata",new(l().SFNode)),new(u())(m().inputOutput,"enabled",new(l().SFBool)(!0)),new(u())(m().inputOutput,"lighting",new(l().SFBool)),new(u())(m().inputOutput,"shadows",new(l().SFBool)),new(u())(m().initializeOnly,"phaseFunction",new(l().SFString)("Henyey-Greenstein")),new(u())(m().inputOutput,"material",new(l().SFNode)),new(u())(m().inputOutput,"surfaceNormals",new(l().SFNode))]),getTypeName:function(){return"ShadedVolumeStyle"},getComponentName:function(){return"VolumeRendering"},getContainerField:function(){return"renderStyle"},getSpecificationRange:function(){return["3.3","Infinity"]},initialize:function(){C.prototype.initialize.call(this);this.getBrowser().getContext().getVersion()<2||(this._material.addInterest("set_material__",this),this._surfaceNormals.addInterest("set_surfaceNormals__",this),this.set_material__(),this.set_surfaceNormals__())},set_material__:function(){this.materialNode&&this.materialNode.removeInterest("addNodeEvent",this),this.materialNode=I()(m().X3DMaterialNode,this._material),this.materialNode&&this.materialNode.addInterest("addNodeEvent",this)},set_surfaceNormals__:function(){this.surfaceNormalsNode=I()(m().X3DTexture3DNode,this._surfaceNormals)},addShaderFields:function(e){this._enabled.getValue()&&(this.materialNode&&(e.addUserDefinedField(m().inputOutput,"ambientIntensity_"+this.getId(),this.materialNode._ambientIntensity.copy()),e.addUserDefinedField(m().inputOutput,"diffuseColor_"+this.getId(),this.materialNode._diffuseColor.copy()),e.addUserDefinedField(m().inputOutput,"specularColor_"+this.getId(),this.materialNode._specularColor.copy()),e.addUserDefinedField(m().inputOutput,"emissiveColor_"+this.getId(),this.materialNode._emissiveColor.copy()),e.addUserDefinedField(m().inputOutput,"shininess_"+this.getId(),this.materialNode._shininess.copy()),e.addUserDefinedField(m().inputOutput,"transparency_"+this.getId(),this.materialNode._transparency.copy())),this.surfaceNormalsNode&&e.addUserDefinedField(m().inputOutput,"surfaceNormals_"+this.getId(),new(l().SFNode)(this.surfaceNormalsNode)))},getUniformsText:function(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+="// ShadedVolumeStyle\n",e+="\n",e+="uniform float ambientIntensity_"+this.getId()+";\n",e+="uniform vec3 diffuseColor_"+this.getId()+";\n",e+="uniform vec3 specularColor_"+this.getId()+";\n",e+="uniform vec3 emissiveColor_"+this.getId()+";\n",e+="uniform float shininess_"+this.getId()+";\n",e+="uniform float transparency_"+this.getId()+";\n",e+=this.getNormalText(this.surfaceNormalsNode),e+="\n",e+="float\n",e+="getSpotFactor_"+this.getId()+" (const in float cutOffAngle, const in float beamWidth, const in vec3 L, const in vec3 d)\n",e+="{\n",e+=" float spotAngle = acos (clamp (dot (-L, d), -1.0, 1.0));\n",e+="\n",e+=" if (spotAngle >= cutOffAngle)\n",e+=" return 0.0;\n",e+=" else if (spotAngle <= beamWidth)\n",e+=" return 1.0;\n",e+="\n",e+=" return (spotAngle - cutOffAngle) / (beamWidth - cutOffAngle);\n",e+="}\n",e+="\n",e+="vec4\n",e+="getShadedStyle_"+this.getId()+" (in vec4 originalColor, in vec3 texCoord)\n",e+="{\n",e+=" vec4 surfaceNormal = getNormal_"+this.getId()+" (texCoord);\n",e+="\n",e+=" if (surfaceNormal .w == 0.0)\n",e+=" return vec4 (0.0);\n",e+="\n",e+=" vec4 shadedColor = vec4 (0.0);\n",this._lighting.getValue()?(this.materialNode?(e+=" vec3 diffuseFactor = diffuseColor_"+this.getId()+";\n",e+=" vec3 ambientTerm = diffuseFactor * ambientIntensity_"+this.getId()+";\n",e+="\n",e+=" shadedColor .a = originalColor .a * (1.0 - transparency_"+this.getId()+");\n"):(e+=" vec3 diffuseFactor = originalColor .rgb;\n",e+=" vec3 ambientTerm = vec3 (0.0);\n",e+="\n",e+=" shadedColor .a = originalColor .a;\n"),e+="\n",e+=" vec3 N = surfaceNormal .xyz;\n",e+=" vec3 V = normalize (-vertex); // normalized vector from point on geometry to viewer's position\n",e+="\n",e+=" for (int i = 0; i < X3D_NUM_LIGHTS; ++ i)\n",e+=" {\n",e+=" x3d_LightSourceParameters light = x3d_LightSource [i];\n",e+="\n",e+=" vec3 vL = light .location - vertex; // Light to fragment\n",e+=" float dL = length (light .matrix * vL);\n",e+=" bool di = light .type == x3d_DirectionalLight;\n",e+="\n",e+=" if (di || dL <= light .radius)\n",e+=" {\n",e+=" vec3 d = light .direction;\n",e+=" vec3 c = light .attenuation;\n",e+=" vec3 L = di ? -d : normalize (vL); // Normalized vector from point on geometry to light source i position.\n",e+=" vec3 H = normalize (L + V); // Specular term\n",e+="\n",e+=" float lightAngle = max (dot (N, L), 0.0); // Angle between normal and light ray.\n",e+=" vec3 diffuseTerm = diffuseFactor * lightAngle;\n",e+=" float specularFactor = shininess_"+this.getId()+" > 0.0 ? pow (max (dot (N, H), 0.0), shininess_"+this.getId()+" * 128.0) : 1.0;\n",e+=" vec3 specularTerm = light .intensity * specularColor_"+this.getId()+" * specularFactor;\n",e+="\n",e+=" float attenuationFactor = di ? 1.0 : 1.0 / max (dot (c, vec3 (1.0, dL, dL * dL)), 1.0);\n",e+=" float spotFactor = light .type == x3d_SpotLight ? getSpotFactor_"+this.getId()+" (light .cutOffAngle, light .beamWidth, L, d) : 1.0;\n",e+=" float attenuationSpotFactor = attenuationFactor * spotFactor;\n",e+=" vec3 ambientColor = light .ambientIntensity * ambientTerm;\n",e+=" vec3 diffuseSpecularColor = light .intensity * (diffuseTerm + specularTerm);\n",e+="\n",e+=" shadedColor .rgb += attenuationSpotFactor * light .color * (ambientColor + diffuseSpecularColor);\n",e+=" }\n",e+="\n",e+=" shadedColor .rgb += emissiveColor_"+this.getId()+";\n",e+=" }\n"):this.materialNode?(e+=" shadedColor .rgb = diffuseColor_"+this.getId()+";\n",e+=" shadedColor .a = originalColor .a * (1.0 - transparency_"+this.getId()+");\n"):e+=" shadedColor = originalColor;\n",e+="\n",e+=" return shadedColor;\n",e+="}\n",e},getFunctionsText:function(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+=" // ShadedVolumeStyle\n",e+="\n",e+=" textureColor = getShadedStyle_"+this.getId()+" (textureColor, texCoord);\n",e}});const Ee=Oe;S().set("x_ite/Components/VolumeRendering/ShadedVolumeStyle",Ee);const Xe=Ee;function Be(e){C.call(this,e),this.addType(m().SilhouetteEnhancementVolumeStyle)}Be.prototype=Object.assign(Object.create(C.prototype),{constructor:Be,[Symbol.for("X_ITE.X3DBaseNode.fieldDefinitions")]:new(h())([new(u())(m().inputOutput,"metadata",new(l().SFNode)),new(u())(m().inputOutput,"enabled",new(l().SFBool)(!0)),new(u())(m().inputOutput,"silhouetteRetainedOpacity",new(l().SFFloat)(1)),new(u())(m().inputOutput,"silhouetteBoundaryOpacity",new(l().SFFloat)(0)),new(u())(m().inputOutput,"silhouetteSharpness",new(l().SFFloat)(.5)),new(u())(m().inputOutput,"surfaceNormals",new(l().SFNode))]),getTypeName:function(){return"SilhouetteEnhancementVolumeStyle"},getComponentName:function(){return"VolumeRendering"},getContainerField:function(){return"renderStyle"},getSpecificationRange:function(){return["3.3","Infinity"]},initialize:function(){C.prototype.initialize.call(this);this.getBrowser().getContext().getVersion()<2||(this._surfaceNormals.addInterest("set_surfaceNormals__",this),this.set_surfaceNormals__())},set_surfaceNormals__:function(){this.surfaceNormalsNode=I()(m().X3DTexture3DNode,this._surfaceNormals)},addShaderFields:function(e){this._enabled.getValue()&&(e.addUserDefinedField(m().inputOutput,"silhouetteRetainedOpacity_"+this.getId(),this._silhouetteRetainedOpacity.copy()),e.addUserDefinedField(m().inputOutput,"silhouetteBoundaryOpacity_"+this.getId(),this._silhouetteBoundaryOpacity.copy()),e.addUserDefinedField(m().inputOutput,"silhouetteSharpness_"+this.getId(),this._silhouetteSharpness.copy()),this.surfaceNormalsNode&&e.addUserDefinedField(m().inputOutput,"surfaceNormals_"+this.getId(),new(l().SFNode)(this.surfaceNormalsNode)))},getUniformsText:function(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+="// SilhouetteEnhancementVolumeStyle\n",e+="\n",e+="uniform float silhouetteRetainedOpacity_"+this.getId()+";\n",e+="uniform float silhouetteBoundaryOpacity_"+this.getId()+";\n",e+="uniform float silhouetteSharpness_"+this.getId()+";\n",e+=this.getNormalText(this.surfaceNormalsNode),e+="\n",e+="vec4\n",e+="getSilhouetteEnhancementStyle_"+this.getId()+" (in vec4 originalColor, in vec3 texCoord)\n",e+="{\n",e+=" vec4 surfaceNormal = getNormal_"+this.getId()+" (texCoord);\n",e+="\n",e+=" if (surfaceNormal .w == 0.0)\n",e+=" return vec4 (0.0);\n",e+=" \n",e+=" float silhouetteRetainedOpacity = silhouetteRetainedOpacity_"+this.getId()+";\n",e+=" float silhouetteBoundaryOpacity = silhouetteBoundaryOpacity_"+this.getId()+";\n",e+=" float silhouetteSharpness = silhouetteSharpness_"+this.getId()+";\n",e+="\n",e+=" return vec4 (originalColor .rgb, originalColor .a * (silhouetteRetainedOpacity + silhouetteBoundaryOpacity * pow (1.0 - abs (dot (surfaceNormal .xyz, normalize (vertex))), silhouetteSharpness)));\n",e+="}\n",e},getFunctionsText:function(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+=" // SilhouetteEnhancementVolumeStyle\n",e+="\n",e+=" textureColor = getSilhouetteEnhancementStyle_"+this.getId()+" (textureColor, texCoord);\n",e}});const Me=Be;S().set("x_ite/Components/VolumeRendering/SilhouetteEnhancementVolumeStyle",Me);const Ue=Me;function Pe(e){C.call(this,e),this.addType(m().ToneMappedVolumeStyle)}Pe.prototype=Object.assign(Object.create(C.prototype),{constructor:Pe,[Symbol.for("X_ITE.X3DBaseNode.fieldDefinitions")]:new(h())([new(u())(m().inputOutput,"metadata",new(l().SFNode)),new(u())(m().inputOutput,"enabled",new(l().SFBool)(!0)),new(u())(m().inputOutput,"coolColor",new(l().SFColorRGBA)(0,0,1,0)),new(u())(m().inputOutput,"warmColor",new(l().SFColorRGBA)(1,1,0,0)),new(u())(m().inputOutput,"surfaceNormals",new(l().SFNode))]),getTypeName:function(){return"ToneMappedVolumeStyle"},getComponentName:function(){return"VolumeRendering"},getContainerField:function(){return"renderStyle"},getSpecificationRange:function(){return["3.3","Infinity"]},initialize:function(){C.prototype.initialize.call(this);this.getBrowser().getContext().getVersion()<2||(this._surfaceNormals.addInterest("set_surfaceNormals__",this),this.set_surfaceNormals__())},set_surfaceNormals__:function(){this.surfaceNormalsNode=I()(m().X3DTexture3DNode,this._surfaceNormals)},addShaderFields:function(e){this._enabled.getValue()&&(e.addUserDefinedField(m().inputOutput,"coolColor_"+this.getId(),this._coolColor.copy()),e.addUserDefinedField(m().inputOutput,"warmColor_"+this.getId(),this._warmColor.copy()),this.surfaceNormalsNode&&e.addUserDefinedField(m().inputOutput,"surfaceNormals_"+this.getId(),new(l().SFNode)(this.surfaceNormalsNode)))},getUniformsText:function(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+="// ToneMappedVolumeStyle\n",e+="\n",e+="uniform vec4 coolColor_"+this.getId()+";\n",e+="uniform vec4 warmColor_"+this.getId()+";\n",e+=this.getNormalText(this.surfaceNormalsNode),e+="\n",e+="vec4\n",e+="getToneMappedStyle_"+this.getId()+" (in vec4 originalColor, in vec3 texCoord)\n",e+="{\n",e+=" vec4 surfaceNormal = getNormal_"+this.getId()+" (texCoord);\n",e+="\n",e+=" if (surfaceNormal .w == 0.0)\n",e+=" return vec4 (0.0);\n",e+="\n",e+=" vec3 toneColor = vec3 (0.0);\n",e+=" vec3 coolColor = coolColor_"+this.getId()+" .rgb;\n",e+=" vec3 warmColor = warmColor_"+this.getId()+" .rgb;\n",e+="\n",e+=" for (int i = 0; i < X3D_NUM_LIGHTS; ++ i)\n",e+=" {\n",e+=" x3d_LightSourceParameters light = x3d_LightSource [i];\n",e+="\n",e+=" vec3 L = light .type == x3d_DirectionalLight ? -light .direction : normalize (light .location - vertex);\n",e+=" float colorFactor = dot (L, surfaceNormal .xyz) * 0.5 + 0.5;\n",e+="\n",e+=" toneColor += mix (warmColor .rgb, coolColor .rgb, colorFactor);\n",e+=" }\n",e+="\n",e+=" return vec4 (toneColor, originalColor .a);\n",e+="}\n",e},getFunctionsText:function(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+=" // ToneMappedVolumeStyle\n",e+="\n",e+=" textureColor = getToneMappedStyle_"+this.getId()+" (textureColor, texCoord);\n",e}});const Re=Pe;S().set("x_ite/Components/VolumeRendering/ToneMappedVolumeStyle",Re);const Le=Re;function Ae(e){_e.call(this,e),this.addType(m().VolumeData),this.renderStyleNode=null}Ae.prototype=Object.assign(Object.create(_e.prototype),{constructor:Ae,[Symbol.for("X_ITE.X3DBaseNode.fieldDefinitions")]:new(h())([new(u())(m().inputOutput,"metadata",new(l().SFNode)),new(u())(m().inputOutput,"dimensions",new(l().SFVec3f)(1,1,1)),new(u())(m().inputOutput,"visible",new(l().SFBool)(!0)),new(u())(m().inputOutput,"bboxDisplay",new(l().SFBool)),new(u())(m().initializeOnly,"bboxCenter",new(l().SFVec3f)(0,0,0)),new(u())(m().initializeOnly,"bboxSize",new(l().SFVec3f)(-1,-1,-1)),new(u())(m().inputOutput,"renderStyle",new(l().SFNode)),new(u())(m().inputOutput,"voxels",new(l().SFNode))]),getTypeName:function(){return"VolumeData"},getComponentName:function(){return"VolumeRendering"},getContainerField:function(){return"children"},getSpecificationRange:function(){return["3.3","Infinity"]},initialize:function(){_e.prototype.initialize.call(this);this.getBrowser().getContext().getVersion()<2||(this._renderStyle.addInterest("set_renderStyle__",this),this._voxels.addInterest("set_voxels__",this),this._renderStyle.addInterest("updateShader",this),this.getAppearance()._texture=this._voxels,this.set_renderStyle__(),this.set_voxels__(),this.updateShader())},set_renderStyle__:function(){this.renderStyleNode&&(this.renderStyleNode.removeInterest("updateShader",this),this.renderStyleNode.removeVolumeData(this)),this.renderStyleNode=I()(m().X3DVolumeRenderStyleNode,this._renderStyle),this.renderStyleNode&&(this.renderStyleNode.addInterest("updateShader",this),this.renderStyleNode.addVolumeData(this))},set_voxels__:function(){this.voxelsNode=I()(m().X3DTexture3DNode,this._voxels),this.voxelsNode?this.getAppearance()._texture=this._voxels:this.getAppearance()._texture=this.getBrowser().getDefaultVoxels()},createShader:function(e,t,n){const o=this.getBrowser().getDefaultVolumeStyle();let i=o.getUniformsText(),r=o.getFunctionsText();this.renderStyleNode&&(i+=this.renderStyleNode.getUniformsText(),r+=this.renderStyleNode.getFunctionsText()),n=(n=n.replace(/\/\/ VOLUME_STYLES_UNIFORMS\n/,i)).replace(/\/\/ VOLUME_STYLES_FUNCTIONS\n/,r);const s=new(Ne())(this.getExecutionContext());s._url.push(encodeURI("data:x-shader/x-vertex,"+t)),s.setPrivate(!0),s.setName("VolumeDataVertexShader"),s.setOptions(e),s.setup();const a=new(Ne())(this.getExecutionContext());a._type="FRAGMENT",a._url.push(encodeURI("data:x-shader/x-fragment,"+n)),a.setPrivate(!0),a.setName("VolumeDataFragmentShader"),a.setOptions(e),a.setup();const l=new(ye())(this.getExecutionContext());l._language="GLSL",l._parts.push(s),l._parts.push(a),l.setPrivate(!0),l.setName("VolumeDataShader"),o.addShaderFields(l),this.renderStyleNode&&this.renderStyleNode.addShaderFields(l);const d=[];return this.addShaderUniformNames(d),l.setUniformNames(d),l.setup(),l}});const ze=Ae;S().set("x_ite/Components/VolumeRendering/VolumeData",ze);const je=ze;n().addComponent({name:"VolumeRendering",types:{BlendedVolumeStyle:L,BoundaryEnhancementVolumeStyle:j,CartoonVolumeStyle:H,ComposedVolumeStyle:W,EdgeEnhancementVolumeStyle:J,IsoSurfaceVolumeData:Ce,OpacityMapVolumeStyle:b,ProjectionVolumeStyle:Ve,SegmentedVolumeData:De,ShadedVolumeStyle:Xe,SilhouetteEnhancementVolumeStyle:Ue,ToneMappedVolumeStyle:Le,VolumeData:je},abstractTypes:{X3DComposableVolumeRenderStyleNode:C,X3DVolumeDataNode:_e,X3DVolumeRenderStyleNode:N},browserContext:U});const Ge=void 0;S().set("assets/components/VolumeRendering",Ge)})();
1
+ /* X_ITE v8.8.0 */(()=>{"use strict";var e={n:t=>{var n=t&&t.__esModule?()=>t.default:()=>t;return e.d(n,{a:n}),n},d:(t,n)=>{for(var o in n)e.o(n,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:n[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window[Symbol.for("X_ITE.X3D-8.8.0")].require("x_ite/Components");var n=e.n(t);const o=window[Symbol.for("X_ITE.X3D-8.8.0")].require("x_ite/Components/Texturing/PixelTexture");var r=e.n(o);const i=window[Symbol.for("X_ITE.X3D-8.8.0")].require("x_ite/Components/Texturing/TextureProperties");var s=e.n(i);const a=window[Symbol.for("X_ITE.X3D-8.8.0")].require("x_ite/Fields");var l=e.n(a);const d=window[Symbol.for("X_ITE.X3D-8.8.0")].require("x_ite/Base/X3DFieldDefinition");var u=e.n(d);const h=window[Symbol.for("X_ITE.X3D-8.8.0")].require("x_ite/Base/FieldDefinitionArray");var c=e.n(h);const p=window[Symbol.for("X_ITE.X3D-8.8.0")].require("x_ite/Components/Core/X3DNode");var m=e.n(p);const f=window[Symbol.for("X_ITE.X3D-8.8.0")].require("x_ite/Base/X3DConstants");var g=e.n(f);const _=window[Symbol.for("X_ITE.X3D-8.8.0")].require("x_ite/Namespace");var y=e.n(_);function x(e){m().call(this,e),this.addType(g().X3DVolumeRenderStyleNode),this.volumeDataNodes=new Set}Object.assign(Object.setPrototypeOf(x.prototype,m().prototype),{addShaderFields(e){},getUniformsText:()=>"",getFunctionsText:()=>"",getVolumeData(){return this.volumeDataNodes},addVolumeData(e){this.volumeDataNodes.add(e)},removeVolumeData(e){this.volumeDataNodes.delete(e)},getNormalText(e){let t="";return e?(t+="uniform sampler3D surfaceNormals_"+this.getId()+";\n",t+="\n",t+="vec4\n",t+="getNormal_"+this.getId()+" (in vec3 texCoord)\n",t+="{\n",t+=" vec3 n = texture (surfaceNormals_"+this.getId()+", texCoord) .xyz * 2.0 - 1.0;\n",t+="\n",t+=" return vec4 (normalize (x3d_TextureNormalMatrix * n), length (n));\n",t+="}\n"):(t+="\n",t+="vec4\n",t+="getNormal_"+this.getId()+" (in vec3 texCoord)\n",t+="{\n",t+=" vec4 offset = vec4 (1.0 / vec3 (textureSize (x3d_Texture3D [0], 0)), 0.0);\n",t+=" float i0 = texture (x3d_Texture3D [0], texCoord + offset .xww) .r;\n",t+=" float i1 = texture (x3d_Texture3D [0], texCoord - offset .xww) .r;\n",t+=" float i2 = texture (x3d_Texture3D [0], texCoord + offset .wyw) .r;\n",t+=" float i3 = texture (x3d_Texture3D [0], texCoord - offset .wyw) .r;\n",t+=" float i4 = texture (x3d_Texture3D [0], texCoord + offset .wwz) .r;\n",t+=" float i5 = texture (x3d_Texture3D [0], texCoord - offset .wwz) .r;\n",t+=" vec3 n = vec3 (i1 - i0, i3 - i2, i5 - i4);\n",t+="\n",t+=" return vec4 (normalize (x3d_TextureNormalMatrix * n), length (n));\n",t+="}\n"),t}}),Object.defineProperties(x,{typeName:{value:"X3DVolumeRenderStyleNode",enumerable:!0},componentName:{value:"VolumeRendering",enumerable:!0}});const S=x;y().set("x_ite/Components/VolumeRendering/X3DVolumeRenderStyleNode",S);const N=S;function v(e){N.call(this,e),this.addType(g().X3DComposableVolumeRenderStyleNode)}Object.setPrototypeOf(v.prototype,N.prototype),Object.defineProperties(v,{typeName:{value:"X3DComposableVolumeRenderStyleNode",enumerable:!0},componentName:{value:"VolumeRendering",enumerable:!0}});const w=v;y().set("x_ite/Components/VolumeRendering/X3DComposableVolumeRenderStyleNode",w);const b=w,C=window[Symbol.for("X_ITE.X3D-8.8.0")].require("x_ite/Base/X3DCast");var F=e.n(C);function I(e){b.call(this,e),this.addType(g().OpacityMapVolumeStyle)}Object.assign(Object.setPrototypeOf(I.prototype,b.prototype),{initialize(){b.prototype.initialize.call(this);this.getBrowser().getContext().getVersion()<2||(this._transferFunction.addInterest("set_transferFunction__",this),this.set_transferFunction__())},set_transferFunction__(){this.transferFunctionNode=F()(g().X3DTexture2DNode,this._transferFunction),this.transferFunctionNode||(this.transferFunctionNode=F()(g().X3DTexture3DNode,this._transferFunction)),this.transferFunctionNode||(this.transferFunctionNode=this.getBrowser().getDefaultTransferFunction())},addShaderFields(e){this._enabled.getValue()&&e.addUserDefinedField(g().inputOutput,"transferFunction_"+this.getId(),new(l().SFNode)(this.transferFunctionNode))},getUniformsText(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+="// OpacityMapVolumeStyle\n",e+="\n",this.transferFunctionNode.getType().includes(g().X3DTexture2DNode)?(e+="uniform sampler2D transferFunction_"+this.getId()+";\n",e+="\n",e+="vec4\n",e+="getOpacityMapStyle_"+this.getId()+" (in vec4 originalColor)\n",e+="{\n",e+=" return texture (transferFunction_"+this.getId()+", originalColor .rg);\n",e+="}\n"):(e+="uniform sampler3D transferFunction_"+this.getId()+";\n",e+="\n",e+="vec4\n",e+="getOpacityMapStyle_"+this.getId()+" (in vec4 originalColor)\n",e+="{\n",e+=" return texture (transferFunction_"+this.getId()+", originalColor .rgb);\n",e+="}\n"),e},getFunctionsText(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+=" // OpacityMapVolumeStyle\n",e+="\n",e+=" textureColor = getOpacityMapStyle_"+this.getId()+" (textureColor);\n",e}}),Object.defineProperties(I,{typeName:{value:"OpacityMapVolumeStyle",enumerable:!0},componentName:{value:"VolumeRendering",enumerable:!0},containerField:{value:"renderStyle",enumerable:!0},specificationRange:{value:Object.freeze(["3.3","Infinity"]),enumerable:!0},fieldDefinitions:{value:new(c())([new(u())(g().inputOutput,"enabled",new(l().SFBool)(!0)),new(u())(g().inputOutput,"metadata",new(l().SFNode)),new(u())(g().inputOutput,"transferFunction",new(l().SFNode))]),enumerable:!0}});const O=I;y().set("x_ite/Components/VolumeRendering/OpacityMapVolumeStyle",O);const V=O,D=Symbol(),T=Symbol(),P=Symbol(),E=Symbol();function M(){}Object.assign(M.prototype,{getDefaultVoxels(){return this[D]=this.getPrivateScene().createNode("PixelTexture3D",!1),this[D]._image=[1,1,1,1,255],this[D].repeatS=!0,this[D].repeatT=!0,this[D].repeatR=!0,this[D].setPrivate(!0),this[D].setup(),this.getDefaultVoxels=function(){return this[D]},Object.defineProperty(this,"getDefaultVoxels",{enumerable:!1}),this[D]},getDefaultVolumeStyle(){return this[T]=new V(this.getPrivateScene()),this[T].setPrivate(!0),this[T].setup(),this.getDefaultVolumeStyle=function(){return this[T]},Object.defineProperty(this,"getDefaultVolumeStyle",{enumerable:!1}),this[T]},getDefaultBlendedVolumeStyle(){return this[P]=new V(this.getPrivateScene()),this[P].setPrivate(!0),this[P].setup(),this.getDefaultBlendedVolumeStyle=function(){return this[P]},Object.defineProperty(this,"getDefaultBlendedVolumeStyle",{enumerable:!1}),this[P]},getDefaultTransferFunction(){const e=new(s())(this.getPrivateScene());return e._boundaryModeS="CLAMP_TO_EDGE",e._boundaryModeT="REPEAT",e._magnificationFilter="DEFAULT",e._minificationFilter="DEFAULT",e._generateMipMaps=!0,e._textureCompression="DEFAULT",e.setPrivate(!0),e.setup(),this[E]=new(r())(this.getPrivateScene()),this[E]._textureProperties=e,this[E]._image.width=256,this[E]._image.height=1,this[E]._image.comp=2,this[E]._image.array=Array.from({length:256},((e,t)=>t<<8|t)),this[E].setPrivate(!0),this[E].setup(),this.getDefaultTransferFunction=function(){return this[E]},Object.defineProperty(this,"getDefaultTransferFunction",{enumerable:!1}),this[E]}});const U=M;y().set("x_ite/Browser/VolumeRendering/X3DVolumeRenderingContext",U);const B=U;function R(e){b.call(this,e),this.addType(g().BlendedVolumeStyle)}Object.assign(Object.setPrototypeOf(R.prototype,b.prototype),{initialize(){b.prototype.initialize.call(this);this.getBrowser().getContext().getVersion()<2||(this._weightTransferFunction1.addInterest("set_weightTransferFunction1__",this),this._weightTransferFunction2.addInterest("set_weightTransferFunction2__",this),this._renderStyle.addInterest("set_renderStyle__",this),this._voxels.addInterest("set_voxels__",this),this.set_weightTransferFunction1__(),this.set_weightTransferFunction2__(),this.set_renderStyle__(),this.set_voxels__())},addVolumeData(e){b.prototype.addVolumeData.call(this,e),this.renderStyleNode&&this.renderStyleNode.addVolumeData(e)},removeVolumeData(e){b.prototype.removeVolumeData.call(this,e),this.renderStyleNode&&this.renderStyleNode.removeVolumeData(e)},set_weightTransferFunction1__(){this.weightTransferFunction1Node=F()(g().X3DTexture2DNode,this._weightTransferFunction1)},set_weightTransferFunction2__(){this.weightTransferFunction2Node=F()(g().X3DTexture2DNode,this._weightTransferFunction2)},set_renderStyle__(){if(this.renderStyleNode){this.renderStyleNode.removeInterest("addNodeEvent",this);for(const e of this.getVolumeData())this.renderStyleNode.removeVolumeData(e)}if(this.renderStyleNode=F()(g().X3DComposableVolumeRenderStyleNode,this._renderStyle),this.renderStyleNode){this.renderStyleNode.addInterest("addNodeEvent",this);for(const e of this.getVolumeData())this.renderStyleNode.addVolumeData(e)}},set_voxels__(){this.voxelsNode=F()(g().X3DTexture3DNode,this._voxels)},addShaderFields(e){this._enabled.getValue()&&(e.addUserDefinedField(g().inputOutput,"weightConstant1_"+this.getId(),this._weightConstant1.copy()),e.addUserDefinedField(g().inputOutput,"weightConstant2_"+this.getId(),this._weightConstant2.copy()),this.weightTransferFunction1Node&&e.addUserDefinedField(g().inputOutput,"weightTransferFunction1_"+this.getId(),new(l().SFNode)(this.weightTransferFunction1Node)),this.weightTransferFunction2Node&&e.addUserDefinedField(g().inputOutput,"weightTransferFunction2_"+this.getId(),new(l().SFNode)(this.weightTransferFunction2Node)),this.voxelsNode&&e.addUserDefinedField(g().inputOutput,"voxels_"+this.getId(),new(l().SFNode)(this.voxelsNode)),this.getBrowser().getDefaultBlendedVolumeStyle().addShaderFields(e),this.renderStyleNode&&this.renderStyleNode.addShaderFields(e))},getUniformsText(){if(!this._enabled.getValue())return"";if(!this.voxelsNode)return"";let e="";e+="\n",e+="// BlendedVolumeStyle\n",e+="\n",e+="uniform float weightConstant1_"+this.getId()+";\n",e+="uniform float weightConstant2_"+this.getId()+";\n",this.weightTransferFunction1Node&&(e+="uniform sampler2D weightTransferFunction1_"+this.getId()+";\n"),this.weightTransferFunction2Node&&(e+="uniform sampler2D weightTransferFunction2_"+this.getId()+";\n"),e+="uniform sampler3D voxels_"+this.getId()+";\n";let t=this.getBrowser().getDefaultBlendedVolumeStyle().getUniformsText();this.renderStyleNode&&(t+=this.renderStyleNode.getUniformsText()),t=t.replace(/x3d_Texture3D\s*\[0\]/g,"voxels_"+this.getId()),e+="\n",e+=t,e+="\n",e+="vec4\n",e+="getBlendedStyle_"+this.getId()+" (in vec4 originalColor, in vec3 texCoord)\n",e+="{\n",e+=" vec4 blendColor_"+this.getId()+" = texture (voxels_"+this.getId()+", texCoord);";let n=this.getBrowser().getDefaultBlendedVolumeStyle().getFunctionsText();switch(this.renderStyleNode&&(n+=this.renderStyleNode.getFunctionsText()),n=n.replace(/textureColor/g,"blendColor_"+this.getId()),e+="\n",e+=n,this._weightFunction1.getValue()){default:e+=" float w1_"+this.getId()+" = weightConstant1_"+this.getId()+";\n";break;case"ALPHA0":e+=" float w1_"+this.getId()+" = originalColor .a;\n";break;case"ALPHA1":e+=" float w1_"+this.getId()+" = blendColor_ "+this.getId()+" .a;\n";break;case"ONE_MINUS_ALPHA0":e+=" float w1_"+this.getId()+" = 1.0 - originalColor .a;\n";break;case"ONE_MINUS_ALPHA1":e+=" float w1_"+this.getId()+" = 1.0 - blendColor_ "+this.getId()+" .a;\n";break;case"TABLE":this.weightTransferFunction1Node?e+=" float w1_"+this.getId()+" = texture (weightTransferFunction1_"+this.getId()+", vec2 (originalColor .a, blendColor_"+this.getId()+" .a)) .r;\n":e+=" float w1_"+this.getId()+" = weightConstant1_"+this.getId()+";\n"}switch(this._weightFunction2.getValue()){default:e+=" float w2_"+this.getId()+" = weightConstant2_"+this.getId()+";\n";break;case"ALPHA0":e+=" float w2_"+this.getId()+" = originalColor .a;\n";break;case"ALPHA1":e+=" float w2_"+this.getId()+" = blendColor_ "+this.getId()+" .a;\n";break;case"ONE_MINUS_ALPHA0":e+=" float w2_"+this.getId()+" = 1.0 - originalColor .a;\n";break;case"ONE_MINUS_ALPHA1":e+=" float w2_"+this.getId()+" = 1.0 - blendColor_ "+this.getId()+" .a;\n";break;case"TABLE":this.weightTransferFunction2Node?e+=" float w2_"+this.getId()+" = texture (weightTransferFunction2_"+this.getId()+", vec2 (originalColor .a, blendColor_"+this.getId()+" .a)) .r;\n":e+=" float w2_"+this.getId()+" = weightConstant2_"+this.getId()+";\n"}return e+="\n",e+=" return clamp (originalColor * w1_"+this.getId()+" + blendColor_"+this.getId()+" * w2_"+this.getId()+", 0.0, 1.0);\n",e+="}\n",e},getFunctionsText(){if(!this._enabled.getValue())return"";if(!this.voxelsNode)return"";let e="";return e+="\n",e+=" // BlendedVolumeStyle\n",e+="\n",e+=" textureColor = getBlendedStyle_"+this.getId()+" (textureColor, texCoord);\n",e}}),Object.defineProperties(R,{typeName:{value:"BlendedVolumeStyle",enumerable:!0},componentName:{value:"VolumeRendering",enumerable:!0},containerField:{value:"renderStyle",enumerable:!0},specificationRange:{value:Object.freeze(["3.3","Infinity"]),enumerable:!0},fieldDefinitions:{value:new(c())([new(u())(g().inputOutput,"metadata",new(l().SFNode)),new(u())(g().inputOutput,"enabled",new(l().SFBool)(!0)),new(u())(g().inputOutput,"weightConstant1",new(l().SFFloat)(.5)),new(u())(g().inputOutput,"weightConstant2",new(l().SFFloat)(.5)),new(u())(g().inputOutput,"weightFunction1",new(l().SFString)("CONSTANT")),new(u())(g().inputOutput,"weightFunction2",new(l().SFString)("CONSTANT")),new(u())(g().inputOutput,"weightTransferFunction1",new(l().SFNode)),new(u())(g().inputOutput,"weightTransferFunction2",new(l().SFNode)),new(u())(g().inputOutput,"renderStyle",new(l().SFNode)),new(u())(g().inputOutput,"voxels",new(l().SFNode))]),enumerable:!0}});const j=R;y().set("x_ite/Components/VolumeRendering/BlendedVolumeStyle",j);const X=j;function z(e){b.call(this,e),this.addType(g().BoundaryEnhancementVolumeStyle)}Object.assign(Object.setPrototypeOf(z.prototype,b.prototype),{addShaderFields(e){this._enabled.getValue()&&(e.addUserDefinedField(g().inputOutput,"retainedOpacity_"+this.getId(),this._retainedOpacity.copy()),e.addUserDefinedField(g().inputOutput,"boundaryOpacity_"+this.getId(),this._boundaryOpacity.copy()),e.addUserDefinedField(g().inputOutput,"opacityFactor_"+this.getId(),this._opacityFactor.copy()))},getUniformsText(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+="// BoundaryEnhancementVolumeStyle\n",e+="\n",e+="uniform float retainedOpacity_"+this.getId()+";\n",e+="uniform float boundaryOpacity_"+this.getId()+";\n",e+="uniform float opacityFactor_"+this.getId()+";\n",e+="\n",e+="vec4\n",e+="getBoundaryEnhancementStyle_"+this.getId()+" (in vec4 originalColor, in vec3 texCoord)\n",e+="{\n",e+=" float f0 = texture (x3d_Texture3D [0], texCoord) .r;\n",e+=" float f1 = texture (x3d_Texture3D [0], texCoord + vec3 (0.0, 0.0, 1.0 / float (textureSize (x3d_Texture3D [0], 0) .z))) .r;\n",e+=" float f = abs (f0 - f1);\n",e+="\n",e+=" float retainedOpacity = retainedOpacity_"+this.getId()+";\n",e+=" float boundaryOpacity = boundaryOpacity_"+this.getId()+";\n",e+=" float opacityFactor = opacityFactor_"+this.getId()+";\n",e+="\n",e+=" return vec4 (originalColor .rgb, originalColor .a * (retainedOpacity + boundaryOpacity * pow (f, opacityFactor)));\n",e+="}\n",e},getFunctionsText(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+=" // BoundaryEnhancementVolumeStyle\n",e+="\n",e+=" textureColor = getBoundaryEnhancementStyle_"+this.getId()+" (textureColor, texCoord);\n",e}}),Object.defineProperties(z,{typeName:{value:"BoundaryEnhancementVolumeStyle",enumerable:!0},componentName:{value:"VolumeRendering",enumerable:!0},containerField:{value:"renderStyle",enumerable:!0},specificationRange:{value:Object.freeze(["3.3","Infinity"]),enumerable:!0},fieldDefinitions:{value:new(c())([new(u())(g().inputOutput,"metadata",new(l().SFNode)),new(u())(g().inputOutput,"enabled",new(l().SFBool)(!0)),new(u())(g().inputOutput,"retainedOpacity",new(l().SFFloat)(.2)),new(u())(g().inputOutput,"boundaryOpacity",new(l().SFFloat)(.9)),new(u())(g().inputOutput,"opacityFactor",new(l().SFFloat)(2))]),enumerable:!0}});const L=z;y().set("x_ite/Components/VolumeRendering/BoundaryEnhancementVolumeStyle",L);const A=L;function G(e){b.call(this,e),this.addType(g().CartoonVolumeStyle)}Object.assign(Object.setPrototypeOf(G.prototype,b.prototype),{initialize(){b.prototype.initialize.call(this);this.getBrowser().getContext().getVersion()<2||(this._surfaceNormals.addInterest("set_surfaceNormals__",this),this.set_surfaceNormals__())},set_surfaceNormals__(){this.surfaceNormalsNode=F()(g().X3DTexture3DNode,this._surfaceNormals)},addShaderFields(e){this._enabled.getValue()&&(e.addUserDefinedField(g().inputOutput,"colorSteps_"+this.getId(),this._colorSteps.copy()),e.addUserDefinedField(g().inputOutput,"orthogonalColor_"+this.getId(),this._orthogonalColor.copy()),e.addUserDefinedField(g().inputOutput,"parallelColor_"+this.getId(),this._parallelColor.copy()),this.surfaceNormalsNode&&e.addUserDefinedField(g().inputOutput,"surfaceNormals_"+this.getId(),new(l().SFNode)(this.surfaceNormalsNode)))},getUniformsText(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+="// CartoonVolumeStyle\n",e+="\n",e+="uniform int colorSteps_"+this.getId()+";\n",e+="uniform vec4 orthogonalColor_"+this.getId()+";\n",e+="uniform vec4 parallelColor_"+this.getId()+";\n",e+=this.getNormalText(this.surfaceNormalsNode),e+="\n",e+="vec3\n",e+="rgb2hsv_"+this.getId()+" (in vec3 color)\n",e+="{\n",e+=" float h = 0.0;\n",e+=" float s = 0.0;\n",e+=" float v = 0.0;\n",e+="\n",e+=" float min = min (min (color .r, color .g), color .b);\n",e+=" float max = max (max (color .r, color .g), color .b);\n",e+=" v = max; // value\n",e+="\n",e+=" float delta = max - min;\n",e+="\n",e+=" if (max != 0.0 && delta != 0.0)\n",e+=" {\n",e+=" s = delta / max; // s\n",e+="\n",e+=" if (color .r == max)\n",e+=" h = (color .g - color .b) / delta; // between yellow & magenta\n",e+=" else if (color .g == max)\n",e+=" h = 2.0 + (color .b - color .r) / delta; // between cyan & yellow\n",e+=" else\n",e+=" h = 4.0 + (color .r - color .g) / delta; // between magenta & cyan\n",e+="\n",e+=" h *= M_PI / 3.0; // radiants\n",e+=" if (h < 0.0)\n",e+=" h += M_PI * 2.0;\n",e+=" }\n",e+=" else\n",e+=" s = h = 0.0; // s = 0, h is undefined\n",e+="\n",e+=" return vec3 (h, s, v);\n",e+="}\n",e+="\n",e+="vec3\n",e+="hsv2rgb_"+this.getId()+" (in vec3 hsv)\n",e+="{\n",e+=" float h = hsv [0];\n",e+=" float s = clamp (hsv [1], 0.0, 1.0);\n",e+=" float v = clamp (hsv [2], 0.0, 1.0);\n",e+="\n",e+=" // H is given on [0, 2 * Pi]. S and V are given on [0, 1].\n",e+=" // RGB are each returned on [0, 1].\n",e+="\n",e+=" if (s == 0.0)\n",e+=" {\n",e+=" // achromatic (grey)\n",e+=" return vec3 (v, v, v);\n",e+=" }\n",e+=" else\n",e+=" {\n",e+=" float w = (h * (180.0 / M_PI)) / 60.0; // sector 0 to 5\n",e+="\n",e+=" float i = floor (w);\n",e+=" float f = w - i; // factorial part of h\n",e+=" float p = v * ( 1.0 - s );\n",e+=" float q = v * ( 1.0 - s * f );\n",e+=" float t = v * ( 1.0 - s * ( 1.0 - f ) );\n",e+="\n",e+=" switch (int (i) % 6)\n",e+=" {\n",e+=" case 0: return vec3 (v, t, p);\n",e+=" case 1: return vec3 (q, v, p);\n",e+=" case 2: return vec3 (p, v, t);\n",e+=" case 3: return vec3 (p, q, v);\n",e+=" case 4: return vec3 (t, p, v);\n",e+=" default: return vec3 (v, p, q);\n",e+=" }\n",e+=" }\n",e+="\n",e+=" return vec3 (0.0);\n",e+="}\n",e+="\n",e+="vec3\n",e+="mix_hsv_"+this.getId()+" (in vec3 a, in vec3 b, in float t)\n",e+="{\n",e+=" // Linearely interpolate in HSV space between source color @a a and destination color @a b by an amount of @a t.\n",e+=" // Source and destination color must be in HSV space.\n",e+="\n",e+=" float ha = a [0];\n",e+=" float sa = a [1];\n",e+=" float va = a [2];\n",e+="\n",e+=" float hb = b [0];\n",e+=" float sb = b [1];\n",e+=" float vb = b [2];\n",e+="\n",e+=" if (sa == 0.0)\n",e+=" ha = hb;\n",e+="\n",e+=" if (sb == 0.0)\n",e+=" hb = ha;\n",e+="\n",e+=" float range = abs (hb - ha);\n",e+="\n",e+=" if (range <= M_PI)\n",e+=" {\n",e+=" float h = ha + t * (hb - ha);\n",e+=" float s = sa + t * (sb - sa);\n",e+=" float v = va + t * (vb - va);\n",e+=" return vec3 (h, s, v);\n",e+=" }\n",e+="\n",e+=" float PI2 = M_PI * 2.0;\n",e+=" float step = (PI2 - range) * t;\n",e+=" float h = ha < hb ? ha - step : ha + step;\n",e+="\n",e+=" if (h < 0.0)\n",e+=" h += PI2;\n",e+="\n",e+=" else if (h > PI2)\n",e+=" h -= PI2;\n",e+="\n",e+=" float s = sa + t * (sb - sa);\n",e+=" float v = va + t * (vb - va);\n",e+=" return vec3 (h, s, v);\n",e+="}\n",e+="\n",e+="vec4\n",e+="getCartoonStyle_"+this.getId()+" (in vec4 originalColor, vec3 texCoord)\n",e+="{\n",e+=" vec4 surfaceNormal = getNormal_"+this.getId()+" (texCoord);\n",e+="\n",e+=" if (surfaceNormal .w == 0.0)\n",e+=" return vec4 (0.0);\n",e+="\n",e+=" vec4 orthogonalColor = orthogonalColor_"+this.getId()+";\n",e+=" vec4 parallelColor = parallelColor_"+this.getId()+";\n",e+=" int colorSteps = colorSteps_"+this.getId()+";\n",e+="\n",e+=" float steps = clamp (float (colorSteps), 1.0, 64.0);\n",e+=" float step = M_PI / 2.0 / steps;\n",e+=" float cosTheta = min (dot (surfaceNormal .xyz, normalize (vertex)), 1.0);\n",e+="\n",e+=" if (cosTheta < 0.0)\n",e+=" return vec4 (0.0);\n",e+="\n",e+=" float t = cos (min (floor (acos (cosTheta) / step) * (steps > 1.0 ? steps / (steps - 1.0) : 1.0), steps) * step);\n",e+=" vec3 orthogonalHSV = rgb2hsv_"+this.getId()+" (orthogonalColor .rgb);\n",e+=" vec3 parallelHSV = rgb2hsv_"+this.getId()+" (parallelColor .rgb);\n",e+="\n",e+=" return vec4 (hsv2rgb_"+this.getId()+" (mix_hsv_"+this.getId()+" (orthogonalHSV, parallelHSV, t)), originalColor .a);\n",e+="}\n",e},getFunctionsText(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+=" // CartoonVolumeStyle\n",e+="\n",e+=" textureColor = getCartoonStyle_"+this.getId()+" (textureColor, texCoord);\n",e}}),Object.defineProperties(G,{typeName:{value:"CartoonVolumeStyle",enumerable:!0},componentName:{value:"VolumeRendering",enumerable:!0},containerField:{value:"renderStyle",enumerable:!0},specificationRange:{value:Object.freeze(["3.3","Infinity"]),enumerable:!0},fieldDefinitions:{value:new(c())([new(u())(g().inputOutput,"metadata",new(l().SFNode)),new(u())(g().inputOutput,"enabled",new(l().SFBool)(!0)),new(u())(g().inputOutput,"colorSteps",new(l().SFInt32)(4)),new(u())(g().inputOutput,"orthogonalColor",new(l().SFColorRGBA)(1,1,1,1)),new(u())(g().inputOutput,"parallelColor",new(l().SFColorRGBA)(0,0,0,1)),new(u())(g().inputOutput,"surfaceNormals",new(l().SFNode))]),enumerable:!0}});const H=G;y().set("x_ite/Components/VolumeRendering/CartoonVolumeStyle",H);const q=H;function k(e){b.call(this,e),this.addType(g().ComposedVolumeStyle),this.renderStyleNodes=[]}Object.assign(Object.setPrototypeOf(k.prototype,b.prototype),{initialize(){b.prototype.initialize.call(this);this.getBrowser().getContext().getVersion()<2||(this._renderStyle.addInterest("set_renderStyle__",this),this.set_renderStyle__())},addVolumeData(e){b.prototype.addVolumeData.call(this,e);for(const t of this.renderStyleNodes)t.addVolumeData(e)},removeVolumeData(e){b.prototype.removeVolumeData.call(this,e);for(const t of this.renderStyleNodes)t.removeVolumeData(e)},set_renderStyle__(){const e=this.renderStyleNodes;for(const t of e){t.removeInterest("addNodeEvent",this);for(const e of this.getVolumeData())t.removeVolumeData(e)}e.length=0;for(const t of this._renderStyle){const n=F()(g().X3DComposableVolumeRenderStyleNode,t);n&&e.push(n)}for(const t of e){t.addInterest("addNodeEvent",this);for(const e of this.getVolumeData())t.addVolumeData(e)}},addShaderFields(e){if(this._enabled.getValue())for(const t of this.renderStyleNodes)t.addShaderFields(e)},getUniformsText(){if(!this._enabled.getValue())return"";let e="";for(const t of this.renderStyleNodes)e+=t.getUniformsText();e+="\n",e+="vec4\n",e+="getComposedStyle_"+this.getId()+" (in vec4 textureColor, in vec3 texCoord)\n",e+="{\n";for(const t of this.renderStyleNodes)e+=t.getFunctionsText();return e+="\n",e+=" return textureColor;\n",e+="}\n",e},getFunctionsText(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+=" // ComposedVolumeStyle\n",e+="\n",e+=" textureColor = getComposedStyle_"+this.getId()+" (textureColor, texCoord);\n",e}}),Object.defineProperties(k,{typeName:{value:"ComposedVolumeStyle",enumerable:!0},componentName:{value:"VolumeRendering",enumerable:!0},containerField:{value:"renderStyle",enumerable:!0},specificationRange:{value:Object.freeze(["3.3","Infinity"]),enumerable:!0},fieldDefinitions:{value:new(c())([new(u())(g().inputOutput,"metadata",new(l().SFNode)),new(u())(g().inputOutput,"enabled",new(l().SFBool)(!0)),new(u())(g().inputOutput,"renderStyle",new(l().MFNode))]),enumerable:!0}});const Y=k;y().set("x_ite/Components/VolumeRendering/ComposedVolumeStyle",Y);const W=Y;function Q(e){b.call(this,e),this.addType(g().EdgeEnhancementVolumeStyle)}Object.assign(Object.setPrototypeOf(Q.prototype,b.prototype),{initialize(){b.prototype.initialize.call(this);this.getBrowser().getContext().getVersion()<2||(this._surfaceNormals.addInterest("set_surfaceNormals__",this),this.set_surfaceNormals__())},set_surfaceNormals__(){this.surfaceNormalsNode=F()(g().X3DTexture3DNode,this._surfaceNormals)},addShaderFields(e){this._enabled.getValue()&&(e.addUserDefinedField(g().inputOutput,"edgeColor_"+this.getId(),this._edgeColor.copy()),e.addUserDefinedField(g().inputOutput,"gradientThreshold_"+this.getId(),this._gradientThreshold.copy()),this.surfaceNormalsNode&&e.addUserDefinedField(g().inputOutput,"surfaceNormals_"+this.getId(),new(l().SFNode)(this.surfaceNormalsNode)))},getUniformsText(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+="// EdgeEnhancementVolumeStyle\n",e+="\n",e+="uniform vec4 edgeColor_"+this.getId()+";\n",e+="uniform float gradientThreshold_"+this.getId()+";\n",e+=this.getNormalText(this.surfaceNormalsNode),e+="\n",e+="vec4\n",e+="getEdgeEnhacementStyle_"+this.getId()+" (in vec4 originalColor, in vec3 texCoord)\n",e+="{\n",e+=" vec4 surfaceNormal = getNormal_"+this.getId()+" (texCoord);\n",e+="\n",e+=" if (surfaceNormal .w == 0.0)\n",e+=" return vec4 (0.0);\n",e+="\n",e+=" vec4 edgeColor = edgeColor_"+this.getId()+";\n",e+=" float gradientThreshold = gradientThreshold_"+this.getId()+";\n",e+="\n",e+=" float angle = abs (dot (surfaceNormal .xyz, normalize (vertex)));\n",e+="\n",e+=" if (angle >= cos (gradientThreshold))\n",e+=" return originalColor;\n",e+=" else\n",e+=" return vec4 (mix (edgeColor .rgb, originalColor.rgb, angle), originalColor .a);\n",e+="}\n",e},getFunctionsText(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+=" // EdgeEnhancementVolumeStyle\n",e+="\n",e+=" textureColor = getEdgeEnhacementStyle_"+this.getId()+" (textureColor, texCoord);\n",e}}),Object.defineProperties(Q,{typeName:{value:"EdgeEnhancementVolumeStyle",enumerable:!0},componentName:{value:"VolumeRendering",enumerable:!0},containerField:{value:"renderStyle",enumerable:!0},specificationRange:{value:Object.freeze(["3.3","Infinity"]),enumerable:!0},fieldDefinitions:{value:new(c())([new(u())(g().inputOutput,"metadata",new(l().SFNode)),new(u())(g().inputOutput,"enabled",new(l().SFBool)(!0)),new(u())(g().inputOutput,"edgeColor",new(l().SFColorRGBA)(0,0,0,1)),new(u())(g().inputOutput,"gradientThreshold",new(l().SFFloat)(.4)),new(u())(g().inputOutput,"surfaceNormals",new(l().SFNode))]),enumerable:!0}});const $=Q;y().set("x_ite/Components/VolumeRendering/EdgeEnhancementVolumeStyle",$);const Z=$,J=window[Symbol.for("X_ITE.X3D-8.8.0")].require("x_ite/Components/Core/X3DChildNode");var K=e.n(J);const ee=window[Symbol.for("X_ITE.X3D-8.8.0")].require("x_ite/Components/Grouping/X3DBoundedObject");var te=e.n(ee);const ne=window[Symbol.for("X_ITE.X3D-8.8.0")].require("x_ite/Browser/Core/TextureQuality");var oe=e.n(ne);const re=window[Symbol.for("X_ITE.X3D-8.8.0")].require("x_ite/Components/Shape/UnlitMaterial");var ie=e.n(re);const se="#version 300 es\n\nprecision highp float;\nprecision highp int;\n\nuniform mat4 x3d_ProjectionMatrix;\nuniform mat4 x3d_ModelViewMatrix;\nuniform mat4 x3d_TextureMatrix [1];\n\nin vec4 x3d_TexCoord0;\nin vec4 x3d_Vertex;\n\nout vec3 vertex;\nout vec4 texCoord;\n\nvoid\nmain ()\n{\n vec4 position = x3d_ModelViewMatrix * x3d_Vertex;\n\n vertex = position .xyz;\n texCoord = x3d_TextureMatrix [0] * x3d_TexCoord0;\n\n gl_Position = x3d_ProjectionMatrix * position;\n}\n";y().set("x_ite/Browser/VolumeRendering/VolumeStyle.vs",se);const ae=se,le='#version 300 es\n\nprecision highp float;\nprecision highp int;\nprecision highp sampler3D;\n\nin vec3 vertex;\nin vec4 texCoord;\n\nuniform sampler3D x3d_Texture3D [1];\nuniform mat3 x3d_TextureNormalMatrix;\n\nuniform x3d_LightSourceParameters x3d_LightSource [x3d_MaxLights];\n\nconst float M_PI = 3.14159265359;\n\n#pragma X3D include "includes/ClipPlanes.glsl"\n#pragma X3D include "includes/Fog.glsl"\n\n// VOLUME_STYLES_UNIFORMS\n\nout vec4 x3d_FragColor;\n\nvec4\ngetTextureColor (in vec3 texCoord)\n{\n if (texCoord .s < 0.0 || texCoord .s > 1.0)\n discard;\n\n if (texCoord .t < 0.0 || texCoord .t > 1.0)\n discard;\n\n if (texCoord .p < 0.0 || texCoord .p > 1.0)\n discard;\n\n vec4 textureColor = texture (x3d_Texture3D [0], texCoord);\n\n // Apply volume styles.\n\n// VOLUME_STYLES_FUNCTIONS\n\n return textureColor;\n}\n\nvoid\nmain ()\n{\n #if defined (X3D_CLIP_PLANES)\n clip ();\n #endif\n\n vec4 finalColor = getTextureColor (texCoord .stp / texCoord .q);\n\n #if defined (X3D_FOG)\n finalColor .rgb = getFogColor (finalColor .rgb);\n #endif\n\n x3d_FragColor = finalColor;\n}\n';y().set("x_ite/Browser/VolumeRendering/VolumeStyle.fs",le);const de=le;function ue(e,t){ie().call(this,e),this.volumeDataNode=t,this.volumeShaderNodes=new Map}Object.assign(Object.setPrototypeOf(ue.prototype,ie().prototype),{getVolumeShaders(){return this.volumeShaderNodes},getShader(e,t){const{fogNode:n,objectsCount:o}=t;let r="";return r+=n?n.getFogType():0,r+=".",r+=o[0],r+=".",r+=o[1],this.volumeShaderNodes.get(r)||this.createShader(r,e,t)},createShader(e,t,n){const o=this.getBrowser(),r=[],{fogNode:i,objectsCount:s}=n;switch(i?.getFogType()){case 1:r.push("X3D_FOG","X3D_FOG_LINEAR");break;case 2:r.push("X3D_FOG","X3D_FOG_EXPONENTIAL")}s[0]&&(r.push("X3D_CLIP_PLANES"),r.push(`X3D_NUM_CLIP_PLANES ${Math.min(s[0],o.getMaxClipPlanes())}`)),s[1]&&(r.push("X3D_LIGHTING"),r.push(`X3D_NUM_LIGHTS ${Math.min(s[1],o.getMaxLights())}`));const a=this.volumeDataNode.createShader(r,ae,de);return this.volumeShaderNodes.set(e,a),a},setShaderUniforms(e,t,n,o,r){this.volumeDataNode.setShaderUniforms(e,t)}}),Object.defineProperties(ue,{typeName:{value:"VolumeMaterial",enumerable:!0},componentName:{value:"Shape",enumerable:!0},containerField:{value:"material",enumerable:!0},fieldDefinitions:{value:ie().fieldDefinitions}});const he=ue;y().set("x_ite/Browser/VolumeRendering/VolumeMaterial",he);const ce=he,pe=window[Symbol.for("X_ITE.X3D-8.8.0")].require("standard/Math/Numbers/Vector3");var me=e.n(pe);function fe(e){K().call(this,e),te().call(this,e),this.addType(g().X3DVolumeDataNode);const t=this.getBrowser();this.proximitySensorNode=t.getPrivateScene().createNode("ProximitySensor",!1),this.transformNode=t.getPrivateScene().createNode("Transform",!1),this.shapeNode=t.getPrivateScene().createNode("Shape",!1),this.appearanceNode=t.getPrivateScene().createNode("Appearance",!1),this.textureTransformNode=t.getPrivateScene().createNode("TextureTransform3D",!1),this.geometryNode=t.getPrivateScene().createNode("QuadSet",!1),this.textureCoordinateNode=t.getPrivateScene().createNode("TextureCoordinate3D",!1),this.coordinateNode=t.getPrivateScene().createNode("Coordinate",!1),this.volumeMaterialNode=new ce(t.getPrivateScene(),this),this.textureNormalMatrixArray=new Float32Array(9),this.setCameraObject(!0)}Object.assign(Object.setPrototypeOf(fe.prototype,K().prototype),te().prototype,{initialize(){K().prototype.initialize.call(this),te().prototype.initialize.call(this);const e=this.getBrowser(),t=e.getContext();e.getBrowserOptions()._TextureQuality.addInterest("set_dimensions__",this),t.getVersion()>=2&&(this._dimensions.addInterest("set_dimensions__",this),this.set_dimensions__()),this._visible.addFieldInterest(this.transformNode._visible),this._bboxDisplay.addFieldInterest(this.transformNode._bboxDisplay),this.proximitySensorNode._size=new(l().SFVec3f)(-1,-1,-1),this.transformNode._children=new(l().MFNode)(this.shapeNode),this.shapeNode._appearance=this.appearanceNode,this.shapeNode._geometry=this.geometryNode,this.appearanceNode._alphaMode="BLEND",this.appearanceNode._material=this.volumeMaterialNode,this.appearanceNode._textureTransform=this.textureTransformNode,this.textureTransformNode._translation=new(l().SFVec3f)(.5,.5,.5),this.textureTransformNode._center=new(l().SFVec3f)(-.5,-.5,-.5),this.geometryNode._texCoord=this.textureCoordinateNode,this.geometryNode._coord=this.coordinateNode,this.coordinateNode.setPrivate(!0),this.textureCoordinateNode.setPrivate(!0),this.geometryNode.setPrivate(!0),this.textureTransformNode.setPrivate(!0),this.volumeMaterialNode.setPrivate(!0),this.appearanceNode.setPrivate(!0),this.shapeNode.setPrivate(!0),this.transformNode.setPrivate(!0),this.proximitySensorNode.setPrivate(!0),this.coordinateNode.setup(),this.textureCoordinateNode.setup(),this.geometryNode.setup(),this.textureTransformNode.setup(),this.volumeMaterialNode.setup(),this.appearanceNode.setup(),this.shapeNode.setup(),this.transformNode.setup(),this.proximitySensorNode.setup(),this.proximitySensorNode._orientation_changed.addFieldInterest(this.transformNode._rotation),this.proximitySensorNode._orientation_changed.addFieldInterest(this.textureTransformNode._rotation),this.textureTransformNode.addInterest("set_textureTransform__",this),this.set_textureTransform__()},getBBox(e,t){return this._bboxSize.getValue().equals(this.getDefaultBBoxSize())?e.set(this._dimensions.getValue(),me().Zero):e.set(this._bboxSize.getValue(),this._bboxCenter.getValue())},getAppearance(){return this.appearanceNode},updateShader(){this.volumeMaterialNode.getVolumeShaders().clear()},addShaderUniformNames(e){e.push("x3d_TextureNormalMatrix")},getNumPlanes(){switch(this.getBrowser().getBrowserOptions().getTextureQuality()){case oe().LOW:return 200;case oe().MEDIUM:return 400;case oe().HIGH:return 600}return 200},set_dimensions__(){const e=this.getNumPlanes(),t=this._dimensions.getValue().magnitude(),n=t/2,o=[];this.coordinateNode._point.length=0;for(let r=0;r<e;++r){const i=r/(e-1)-.5;o.push(n,n,t*i,-n,n,t*i,-n,-n,t*i,n,-n,t*i)}this.coordinateNode._point=o,this.textureCoordinateNode._point=o,this.textureTransformNode._scale=new(l().SFVec3f)(1/this._dimensions.x,1/this._dimensions.y,1/this._dimensions.z)},set_textureTransform__(){this.textureNormalMatrixArray.set(this.textureTransformNode.getMatrix().submatrix.inverse())},traverse(e,t){this.proximitySensorNode.traverse(e,t),this.transformNode.traverse(e,t)},setShaderUniforms(e,t){e.uniformMatrix3fv(t.x3d_TextureNormalMatrix,!0,this.textureNormalMatrixArray)},dispose(){te().prototype.dispose.call(this),K().prototype.dispose.call(this)}}),Object.defineProperties(fe,{typeName:{value:"X3DVolumeDataNode",enumerable:!0},componentName:{value:"VolumeRendering",enumerable:!0}});const ge=fe;y().set("x_ite/Components/VolumeRendering/X3DVolumeDataNode",ge);const _e=ge,ye=window[Symbol.for("X_ITE.X3D-8.8.0")].require("x_ite/Components/Shaders/ComposedShader");var xe=e.n(ye);const Se=window[Symbol.for("X_ITE.X3D-8.8.0")].require("x_ite/Components/Shaders/ShaderPart");var Ne=e.n(Se);function ve(e){_e.call(this,e),this.addType(g().IsoSurfaceVolumeData),this.renderStyleNodes=[]}Object.assign(Object.setPrototypeOf(ve.prototype,_e.prototype),{initialize(){_e.prototype.initialize.call(this);this.getBrowser().getContext().getVersion()<2||(this._gradients.addInterest("set_gradients__",this),this._renderStyle.addInterest("set_renderStyle__",this),this._contourStepSize.addInterest("updateShader",this),this._surfaceValues.addInterest("updateShader",this),this._surfaceTolerance.addInterest("updateShader",this),this._renderStyle.addInterest("updateShader",this),this.getAppearance()._texture=this._voxels,this.set_gradients__(),this.set_renderStyle__(),this.set_voxels__(),this.updateShader())},set_gradients__(){this.gradientsNode=F()(g().X3DTexture3DNode,this._gradients)},set_renderStyle__(){const e=this.renderStyleNodes;for(const t of e)t.removeInterest("updateShader",this),t.removeVolumeData(this);e.length=0;for(const t of this._renderStyle){const n=F()(g().X3DComposableVolumeRenderStyleNode,t);n&&e.push(n)}for(const t of e)t.addInterest("updateShader",this),t.addVolumeData(this)},set_voxels__(){this.voxelsNode=F()(g().X3DTexture3DNode,this._voxels),this.voxelsNode?this.getAppearance()._texture=this._voxels:this.getAppearance()._texture=this.getBrowser().getDefaultVoxels()},createShader(e,t,n){const o=this.getBrowser().getDefaultVolumeStyle();let r=o.getUniformsText(),i=o.getFunctionsText();r+="\n",r+="uniform float surfaceValues ["+this._surfaceValues.length+"];\n",r+="uniform float surfaceTolerance;\n";for(const e of this.renderStyleNodes)r+=e.getUniformsText();if(i+="\n",i+=" // IsoSurfaceVolumeData\n",i+="\n",this.gradientsNode?(r+="\n",r+="uniform sampler3D gradients;\n",i+=" if (length (texture (gradients, texCoord) .xyz * 2.0 - 1.0) < surfaceTolerance)\n",i+=" discard;\n"):(r+="\n",r+="vec4\n",r+="getNormal (in vec3 texCoord)\n",r+="{\n",r+=" vec4 offset = vec4 (1.0 / vec3 (textureSize (x3d_Texture3D [0], 0)), 0.0);\n",r+=" float i0 = texture (x3d_Texture3D [0], texCoord + offset .xww) .r;\n",r+=" float i1 = texture (x3d_Texture3D [0], texCoord - offset .xww) .r;\n",r+=" float i2 = texture (x3d_Texture3D [0], texCoord + offset .wyw) .r;\n",r+=" float i3 = texture (x3d_Texture3D [0], texCoord - offset .wyw) .r;\n",r+=" float i4 = texture (x3d_Texture3D [0], texCoord + offset .wwz) .r;\n",r+=" float i5 = texture (x3d_Texture3D [0], texCoord - offset .wwz) .r;\n",r+=" vec3 n = vec3 (i1 - i0, i3 - i2, i5 - i4);\n",r+="\n",r+=" return vec4 (normalize (x3d_TextureNormalMatrix * n), length (n));\n",r+="}\n",i+=" if (getNormal (texCoord) .w < surfaceTolerance)\n",i+=" discard;\n"),i+="\n",i+=" float intensity = textureColor .r;\n",i+="\n",1===this._surfaceValues.length){const e=Math.abs(this._contourStepSize.getValue());if(0===e)i+=" if (intensity > surfaceValues [0])\n",i+=" {\n",i+=" textureColor = vec4 (vec3 (surfaceValues [0]), 1.0);\n",this.renderStyleNodes.length&&(i+=this.renderStyleNodes[0].getFunctionsText()),i+=" }\n",i+=" else\n",i+=" {\n",i+=" discard;\n",i+=" }\n",i+="\n";else{const t=[];for(let n=this._surfaceValues[0]-e;n>0;n-=e)t.unshift(n);t.push(this._surfaceValues[0]);for(let n=this._surfaceValues[0]+e;n<1;n+=e)t.push(n);i+=" if (false)\n",i+=" { }\n";for(let e=this._surfaceValues.length-1;e>=0;--e)i+=" else if (intensity > "+t[e]+")\n",i+=" {\n",i+=" textureColor = vec4 (vec3 ("+t[e]+"), 1.0);\n",this.renderStyleNodes.length&&(i+=this.renderStyleNodes[0].getFunctionsText()),i+=" }\n";i+=" else\n",i+=" {\n",i+=" discard;\n",i+=" }\n",i+="\n"}}else{i+=" if (false)\n",i+=" { }\n";for(let e=this._surfaceValues.length-1;e>=0;--e){if(i+=" else if (intensity > surfaceValues ["+e+"])\n",i+=" {\n",i+=" textureColor = vec4 (vec3 (surfaceValues ["+e+"]), 1.0);\n",this.renderStyleNodes.length){const t=Math.min(e,this.renderStyleNodes.length-1);i+=this.renderStyleNodes[t].getFunctionsText()}i+=" }\n"}i+=" else\n",i+=" {\n",i+=" discard;\n",i+=" }\n",i+="\n"}n=(n=n.replace(/\/\/ VOLUME_STYLES_UNIFORMS\n/,r)).replace(/\/\/ VOLUME_STYLES_FUNCTIONS\n/,i);const s=new(Ne())(this.getExecutionContext());s._url.push(encodeURI("data:x-shader/x-vertex,"+t)),s.setPrivate(!0),s.setName("VolumeDataVertexShader"),s.setOptions(e),s.setup();const a=new(Ne())(this.getExecutionContext());a._type="FRAGMENT",a._url.push(encodeURI("data:x-shader/x-fragment,"+n)),a.setPrivate(!0),a.setName("VolumeDataFragmentShader"),a.setOptions(e),a.setup();const d=new(xe())(this.getExecutionContext());d._language="GLSL",d._parts.push(s),d._parts.push(a),d.setPrivate(!0),d.setName("VolumeDataShader"),d.addUserDefinedField(g().inputOutput,"surfaceValues",this._surfaceValues.copy()),d.addUserDefinedField(g().inputOutput,"surfaceTolerance",this._surfaceTolerance.copy()),this.gradientsNode&&d.addUserDefinedField(g().inputOutput,"gradients",new(l().SFNode)(this.gradientsNode)),o.addShaderFields(d);for(const e of this.renderStyleNodes)e.addShaderFields(d);const u=[];return this.addShaderUniformNames(u),d.setUniformNames(u),d.setup(),d}}),Object.defineProperties(ve,{typeName:{value:"IsoSurfaceVolumeData",enumerable:!0},componentName:{value:"VolumeRendering",enumerable:!0},containerField:{value:"children",enumerable:!0},specificationRange:{value:Object.freeze(["3.3","Infinity"]),enumerable:!0},fieldDefinitions:{value:new(c())([new(u())(g().inputOutput,"metadata",new(l().SFNode)),new(u())(g().inputOutput,"dimensions",new(l().SFVec3f)(1,1,1)),new(u())(g().inputOutput,"contourStepSize",new(l().SFFloat)(0)),new(u())(g().inputOutput,"surfaceValues",new(l().MFFloat)),new(u())(g().inputOutput,"surfaceTolerance",new(l().SFFloat)(0)),new(u())(g().inputOutput,"visible",new(l().SFBool)(!0)),new(u())(g().inputOutput,"bboxDisplay",new(l().SFBool)),new(u())(g().initializeOnly,"bboxCenter",new(l().SFVec3f)(0,0,0)),new(u())(g().initializeOnly,"bboxSize",new(l().SFVec3f)(-1,-1,-1)),new(u())(g().inputOutput,"renderStyle",new(l().MFNode)),new(u())(g().inputOutput,"gradients",new(l().SFNode)),new(u())(g().inputOutput,"voxels",new(l().SFNode))]),enumerable:!0}});const we=ve;y().set("x_ite/Components/VolumeRendering/IsoSurfaceVolumeData",we);const be=we;function Ce(e){N.call(this,e),this.addType(g().ProjectionVolumeStyle)}Object.assign(Object.setPrototypeOf(Ce.prototype,N.prototype),{addShaderFields(e){this._enabled.getValue()&&e.addUserDefinedField(g().inputOutput,"intensityThreshold_"+this.getId(),this._intensityThreshold.copy())},getUniformsText(){if(!this._enabled.getValue())return"";let e="";switch(e+="\n",e+="// ProjectionVolumeStyle\n",e+="\n",e+="uniform float intensityThreshold_"+this.getId()+";\n",e+="\n",e+="vec4\n",e+="getProjectionStyle_"+this.getId()+"(in vec4 originalColor, in vec3 texCoord)\n",e+="{\n",this._type.getValue()){default:case"MAX":case"AVERAGE":e+=" float projectionColor = 0.0;\n";break;case"MIN":e+=" float projectionColor = 1.0;\n"}switch(e+=" const int samples = 32;\n",e+=" vec3 step = normalize (x3d_TextureNormalMatrix * vec3 (0.0, 0.0, 1.0)) / float (samples);\n",e+=" vec3 ray = texCoord - step * float (samples) * 0.5;\n",e+=" bool first = false;\n",e+="\n",e+=" for (int i = 0; i < samples; ++ i, ray += step)\n",e+=" {\n",e+=" if (ray .s < 0.0 || ray .s > 1.0)\n",e+=" continue;\n",e+="\n",e+=" if (ray .t < 0.0 || ray .t > 1.0)\n",e+=" continue;\n",e+="\n",e+=" if (ray .p < 0.0 || ray .p > 1.0)\n",e+=" continue;\n",e+="\n",e+=" float intensity = texture (x3d_Texture3D [0], ray) .r;\n",e+="\n",this._type.getValue()){default:case"MAX":e+=" if (intensity < intensityThreshold_"+this.getId()+")\n",e+=" continue;\n",e+="\n",e+=" if (intensityThreshold_"+this.getId()+" > 0.0 && first)\n",e+=" break;\n",e+="\n",e+=" if (intensity <= projectionColor)\n",e+=" {\n",e+=" first = true;\n",e+=" continue;\n",e+=" }\n",e+="\n",e+=" projectionColor = intensity;\n";break;case"MIN":e+=" if (intensity < intensityThreshold_"+this.getId()+")\n",e+=" continue;\n",e+="\n",e+=" if (intensityThreshold_"+this.getId()+" > 0.0 && first)\n",e+=" break;\n",e+="\n",e+=" if (intensity >= projectionColor)\n",e+=" {\n",e+=" first = true;\n",e+=" continue;\n",e+=" }\n",e+="\n",e+=" projectionColor = intensity;\n";break;case"AVERAGE":e+=" projectionColor += intensity;\n"}return e+=" }\n",e+="\n","AVERAGE"===this._type.getValue()&&(e+=" projectionColor /= float (samples);\n"),e+=" return vec4 (vec3 (projectionColor), originalColor .a);\n",e+="}\n",e},getFunctionsText(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+=" // ProjectionVolumeStyle\n",e+="\n",e+=" textureColor = getProjectionStyle_"+this.getId()+" (textureColor, texCoord);\n",e}}),Object.defineProperties(Ce,{typeName:{value:"ProjectionVolumeStyle",enumerable:!0},componentName:{value:"VolumeRendering",enumerable:!0},containerField:{value:"renderStyle",enumerable:!0},specificationRange:{value:Object.freeze(["3.3","Infinity"]),enumerable:!0},fieldDefinitions:{value:new(c())([new(u())(g().inputOutput,"metadata",new(l().SFNode)),new(u())(g().inputOutput,"enabled",new(l().SFBool)(!0)),new(u())(g().inputOutput,"type",new(l().SFString)("MAX")),new(u())(g().inputOutput,"intensityThreshold",new(l().SFFloat)(0))]),enumerable:!0}});const Fe=Ce;y().set("x_ite/Components/VolumeRendering/ProjectionVolumeStyle",Fe);const Ie=Fe;function Oe(e){_e.call(this,e),this.addType(g().SegmentedVolumeData),this.segmentIdentifiersNode=null,this.renderStyleNodes=[]}Object.assign(Object.setPrototypeOf(Oe.prototype,_e.prototype),{initialize(){_e.prototype.initialize.call(this);this.getBrowser().getContext().getVersion()<2||(this._segmentIdentifiers.addInterest("set_segmentIdentifiers__",this),this._renderStyle.addInterest("set_renderStyle__",this),this._segmentEnabled.addInterest("updateShader",this),this._segmentIdentifiers.addInterest("updateShader",this),this._renderStyle.addInterest("updateShader",this),this.getAppearance()._texture=this._voxels,this.set_segmentIdentifiers__(),this.set_renderStyle__(),this.set_voxels__(),this.updateShader())},getSegmentEnabled(e){return!(e<this._segmentEnabled.length)||this._segmentEnabled[e]},set_segmentIdentifiers__(){this.segmentIdentifiersNode=F()(g().X3DTexture3DNode,this._segmentIdentifiers)},set_renderStyle__(){const e=this.renderStyleNodes;for(const t of e)t.removeInterest("updateShader",this),t.removeVolumeData(this);e.length=0;for(const t of this._renderStyle){const n=F()(g().X3DComposableVolumeRenderStyleNode,t);n&&e.push(n)}for(const t of e)t.addInterest("updateShader",this),t.addVolumeData(this)},set_voxels__(){this.voxelsNode=F()(g().X3DTexture3DNode,this._voxels),this.voxelsNode?this.getAppearance()._texture=this._voxels:this.getAppearance()._texture=this.getBrowser().getDefaultVoxels()},createShader(e,t,n){const o=this.getBrowser().getDefaultVolumeStyle();let r=o.getUniformsText(),i=o.getFunctionsText();if(this.segmentIdentifiersNode?(r+="\n",r+="uniform sampler3D segmentIdentifiers;\n",r+="\n",i+="\n",i+=" int segment = int (texture (segmentIdentifiers, texCoord) .r * 255.0);\n"):i+=" int segment = 0;\n",this.renderStyleNodes.length){i+="\n",i+=" switch (segment)\n",i+=" {\n";for(const[e,t]of this.renderStyleNodes.entries())i+=" case "+e+":\n",i+=" {\n",this.getSegmentEnabled(e)?(r+=t.getUniformsText(),i+=t.getFunctionsText(),i+=" break;\n"):i+=" discard;\n",i+=" }\n";i+=" }\n"}n=(n=n.replace(/\/\/ VOLUME_STYLES_UNIFORMS\n/,r)).replace(/\/\/ VOLUME_STYLES_FUNCTIONS\n/,i);const s=new(Ne())(this.getExecutionContext());s._url.push(encodeURI("data:x-shader/x-vertex,"+t)),s.setPrivate(!0),s.setName("SegmentedVolumeDataVertexShader"),s.setOptions(e),s.setup();const a=new(Ne())(this.getExecutionContext());a._type="FRAGMENT",a._url.push(encodeURI("data:x-shader/x-fragment,"+n)),a.setPrivate(!0),a.setName("SegmentedVolumeDataFragmentShader"),a.setOptions(e),a.setup();const d=new(xe())(this.getExecutionContext());d._language="GLSL",d._parts.push(s),d._parts.push(a),d.setPrivate(!0),d.setName("SegmentedVolumeDataShader"),this.segmentIdentifiersNode&&d.addUserDefinedField(g().inputOutput,"segmentIdentifiers",new(l().SFNode)(this.segmentIdentifiersNode)),o.addShaderFields(d);for(const[e,t]of this.renderStyleNodes.entries())this.getSegmentEnabled(e)&&t.addShaderFields(d);const u=[];return this.addShaderUniformNames(u),d.setUniformNames(u),d.setup(),d}}),Object.defineProperties(Oe,{typeName:{value:"SegmentedVolumeData",enumerable:!0},componentName:{value:"VolumeRendering",enumerable:!0},containerField:{value:"children",enumerable:!0},specificationRange:{value:Object.freeze(["3.3","Infinity"]),enumerable:!0},fieldDefinitions:{value:new(c())([new(u())(g().inputOutput,"metadata",new(l().SFNode)),new(u())(g().inputOutput,"dimensions",new(l().SFVec3f)(1,1,1)),new(u())(g().inputOutput,"segmentEnabled",new(l().MFBool)),new(u())(g().inputOutput,"visible",new(l().SFBool)(!0)),new(u())(g().inputOutput,"bboxDisplay",new(l().SFBool)),new(u())(g().initializeOnly,"bboxCenter",new(l().SFVec3f)(0,0,0)),new(u())(g().initializeOnly,"bboxSize",new(l().SFVec3f)(-1,-1,-1)),new(u())(g().inputOutput,"segmentIdentifiers",new(l().SFNode)),new(u())(g().inputOutput,"renderStyle",new(l().MFNode)),new(u())(g().inputOutput,"voxels",new(l().SFNode))]),enumerable:!0}});const Ve=Oe;y().set("x_ite/Components/VolumeRendering/SegmentedVolumeData",Ve);const De=Ve;function Te(e){b.call(this,e),this.addType(g().ShadedVolumeStyle)}Object.assign(Object.setPrototypeOf(Te.prototype,b.prototype),{initialize(){b.prototype.initialize.call(this);this.getBrowser().getContext().getVersion()<2||(this._material.addInterest("set_material__",this),this._surfaceNormals.addInterest("set_surfaceNormals__",this),this.set_material__(),this.set_surfaceNormals__())},set_material__(){this.materialNode&&this.materialNode.removeInterest("addNodeEvent",this),this.materialNode=F()(g().X3DMaterialNode,this._material),this.materialNode&&this.materialNode.addInterest("addNodeEvent",this)},set_surfaceNormals__(){this.surfaceNormalsNode=F()(g().X3DTexture3DNode,this._surfaceNormals)},addShaderFields(e){this._enabled.getValue()&&(this.materialNode&&(e.addUserDefinedField(g().inputOutput,"ambientIntensity_"+this.getId(),this.materialNode._ambientIntensity.copy()),e.addUserDefinedField(g().inputOutput,"diffuseColor_"+this.getId(),this.materialNode._diffuseColor.copy()),e.addUserDefinedField(g().inputOutput,"specularColor_"+this.getId(),this.materialNode._specularColor.copy()),e.addUserDefinedField(g().inputOutput,"emissiveColor_"+this.getId(),this.materialNode._emissiveColor.copy()),e.addUserDefinedField(g().inputOutput,"shininess_"+this.getId(),this.materialNode._shininess.copy()),e.addUserDefinedField(g().inputOutput,"transparency_"+this.getId(),this.materialNode._transparency.copy())),this.surfaceNormalsNode&&e.addUserDefinedField(g().inputOutput,"surfaceNormals_"+this.getId(),new(l().SFNode)(this.surfaceNormalsNode)))},getUniformsText(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+="// ShadedVolumeStyle\n",e+="\n",e+="uniform float ambientIntensity_"+this.getId()+";\n",e+="uniform vec3 diffuseColor_"+this.getId()+";\n",e+="uniform vec3 specularColor_"+this.getId()+";\n",e+="uniform vec3 emissiveColor_"+this.getId()+";\n",e+="uniform float shininess_"+this.getId()+";\n",e+="uniform float transparency_"+this.getId()+";\n",e+=this.getNormalText(this.surfaceNormalsNode),e+="\n",e+="float\n",e+="getSpotFactor_"+this.getId()+" (const in float cutOffAngle, const in float beamWidth, const in vec3 L, const in vec3 d)\n",e+="{\n",e+=" float spotAngle = acos (clamp (dot (-L, d), -1.0, 1.0));\n",e+="\n",e+=" if (spotAngle >= cutOffAngle)\n",e+=" return 0.0;\n",e+=" else if (spotAngle <= beamWidth)\n",e+=" return 1.0;\n",e+="\n",e+=" return (spotAngle - cutOffAngle) / (beamWidth - cutOffAngle);\n",e+="}\n",e+="\n",e+="vec4\n",e+="getShadedStyle_"+this.getId()+" (in vec4 originalColor, in vec3 texCoord)\n",e+="{\n",e+=" vec4 surfaceNormal = getNormal_"+this.getId()+" (texCoord);\n",e+="\n",e+=" if (surfaceNormal .w == 0.0)\n",e+=" return vec4 (0.0);\n",e+="\n",e+=" vec4 shadedColor = vec4 (0.0);\n",this._lighting.getValue()?(this.materialNode?(e+=" vec3 diffuseFactor = diffuseColor_"+this.getId()+";\n",e+=" vec3 ambientTerm = diffuseFactor * ambientIntensity_"+this.getId()+";\n",e+="\n",e+=" shadedColor .a = originalColor .a * (1.0 - transparency_"+this.getId()+");\n"):(e+=" vec3 diffuseFactor = originalColor .rgb;\n",e+=" vec3 ambientTerm = vec3 (0.0);\n",e+="\n",e+=" shadedColor .a = originalColor .a;\n"),e+="\n",e+=" vec3 N = surfaceNormal .xyz;\n",e+=" vec3 V = normalize (-vertex); // normalized vector from point on geometry to viewer's position\n",e+="\n",e+=" for (int i = 0; i < X3D_NUM_LIGHTS; ++ i)\n",e+=" {\n",e+=" x3d_LightSourceParameters light = x3d_LightSource [i];\n",e+="\n",e+=" vec3 vL = light .location - vertex; // Light to fragment\n",e+=" float dL = length (light .matrix * vL);\n",e+=" bool di = light .type == x3d_DirectionalLight;\n",e+="\n",e+=" if (di || dL <= light .radius)\n",e+=" {\n",e+=" vec3 d = light .direction;\n",e+=" vec3 c = light .attenuation;\n",e+=" vec3 L = di ? -d : normalize (vL); // Normalized vector from point on geometry to light source i position.\n",e+=" vec3 H = normalize (L + V); // Specular term\n",e+="\n",e+=" float lightAngle = max (dot (N, L), 0.0); // Angle between normal and light ray.\n",e+=" vec3 diffuseTerm = diffuseFactor * lightAngle;\n",e+=" float specularFactor = shininess_"+this.getId()+" > 0.0 ? pow (max (dot (N, H), 0.0), shininess_"+this.getId()+" * 128.0) : 1.0;\n",e+=" vec3 specularTerm = light .intensity * specularColor_"+this.getId()+" * specularFactor;\n",e+="\n",e+=" float attenuationFactor = di ? 1.0 : 1.0 / max (dot (c, vec3 (1.0, dL, dL * dL)), 1.0);\n",e+=" float spotFactor = light .type == x3d_SpotLight ? getSpotFactor_"+this.getId()+" (light .cutOffAngle, light .beamWidth, L, d) : 1.0;\n",e+=" float attenuationSpotFactor = attenuationFactor * spotFactor;\n",e+=" vec3 ambientColor = light .ambientIntensity * ambientTerm;\n",e+=" vec3 diffuseSpecularColor = light .intensity * (diffuseTerm + specularTerm);\n",e+="\n",e+=" shadedColor .rgb += attenuationSpotFactor * light .color * (ambientColor + diffuseSpecularColor);\n",e+=" }\n",e+="\n",e+=" shadedColor .rgb += emissiveColor_"+this.getId()+";\n",e+=" }\n"):this.materialNode?(e+=" shadedColor .rgb = diffuseColor_"+this.getId()+";\n",e+=" shadedColor .a = originalColor .a * (1.0 - transparency_"+this.getId()+");\n"):e+=" shadedColor = originalColor;\n",e+="\n",e+=" return shadedColor;\n",e+="}\n",e},getFunctionsText(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+=" // ShadedVolumeStyle\n",e+="\n",e+=" textureColor = getShadedStyle_"+this.getId()+" (textureColor, texCoord);\n",e}}),Object.defineProperties(Te,{typeName:{value:"ShadedVolumeStyle",enumerable:!0},componentName:{value:"VolumeRendering",enumerable:!0},containerField:{value:"renderStyle",enumerable:!0},specificationRange:{value:Object.freeze(["3.3","Infinity"]),enumerable:!0},fieldDefinitions:{value:new(c())([new(u())(g().inputOutput,"metadata",new(l().SFNode)),new(u())(g().inputOutput,"enabled",new(l().SFBool)(!0)),new(u())(g().inputOutput,"lighting",new(l().SFBool)),new(u())(g().inputOutput,"shadows",new(l().SFBool)),new(u())(g().initializeOnly,"phaseFunction",new(l().SFString)("Henyey-Greenstein")),new(u())(g().inputOutput,"material",new(l().SFNode)),new(u())(g().inputOutput,"surfaceNormals",new(l().SFNode))]),enumerable:!0}});const Pe=Te;y().set("x_ite/Components/VolumeRendering/ShadedVolumeStyle",Pe);const Ee=Pe;function Me(e){b.call(this,e),this.addType(g().SilhouetteEnhancementVolumeStyle)}Object.assign(Object.setPrototypeOf(Me.prototype,b.prototype),{initialize(){b.prototype.initialize.call(this);this.getBrowser().getContext().getVersion()<2||(this._surfaceNormals.addInterest("set_surfaceNormals__",this),this.set_surfaceNormals__())},set_surfaceNormals__(){this.surfaceNormalsNode=F()(g().X3DTexture3DNode,this._surfaceNormals)},addShaderFields(e){this._enabled.getValue()&&(e.addUserDefinedField(g().inputOutput,"silhouetteRetainedOpacity_"+this.getId(),this._silhouetteRetainedOpacity.copy()),e.addUserDefinedField(g().inputOutput,"silhouetteBoundaryOpacity_"+this.getId(),this._silhouetteBoundaryOpacity.copy()),e.addUserDefinedField(g().inputOutput,"silhouetteSharpness_"+this.getId(),this._silhouetteSharpness.copy()),this.surfaceNormalsNode&&e.addUserDefinedField(g().inputOutput,"surfaceNormals_"+this.getId(),new(l().SFNode)(this.surfaceNormalsNode)))},getUniformsText(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+="// SilhouetteEnhancementVolumeStyle\n",e+="\n",e+="uniform float silhouetteRetainedOpacity_"+this.getId()+";\n",e+="uniform float silhouetteBoundaryOpacity_"+this.getId()+";\n",e+="uniform float silhouetteSharpness_"+this.getId()+";\n",e+=this.getNormalText(this.surfaceNormalsNode),e+="\n",e+="vec4\n",e+="getSilhouetteEnhancementStyle_"+this.getId()+" (in vec4 originalColor, in vec3 texCoord)\n",e+="{\n",e+=" vec4 surfaceNormal = getNormal_"+this.getId()+" (texCoord);\n",e+="\n",e+=" if (surfaceNormal .w == 0.0)\n",e+=" return vec4 (0.0);\n",e+=" \n",e+=" float silhouetteRetainedOpacity = silhouetteRetainedOpacity_"+this.getId()+";\n",e+=" float silhouetteBoundaryOpacity = silhouetteBoundaryOpacity_"+this.getId()+";\n",e+=" float silhouetteSharpness = silhouetteSharpness_"+this.getId()+";\n",e+="\n",e+=" return vec4 (originalColor .rgb, originalColor .a * (silhouetteRetainedOpacity + silhouetteBoundaryOpacity * pow (1.0 - abs (dot (surfaceNormal .xyz, normalize (vertex))), silhouetteSharpness)));\n",e+="}\n",e},getFunctionsText(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+=" // SilhouetteEnhancementVolumeStyle\n",e+="\n",e+=" textureColor = getSilhouetteEnhancementStyle_"+this.getId()+" (textureColor, texCoord);\n",e}}),Object.defineProperties(Me,{typeName:{value:"SilhouetteEnhancementVolumeStyle",enumerable:!0},componentName:{value:"VolumeRendering",enumerable:!0},containerField:{value:"renderStyle",enumerable:!0},specificationRange:{value:Object.freeze(["3.3","Infinity"]),enumerable:!0},fieldDefinitions:{value:new(c())([new(u())(g().inputOutput,"metadata",new(l().SFNode)),new(u())(g().inputOutput,"enabled",new(l().SFBool)(!0)),new(u())(g().inputOutput,"silhouetteRetainedOpacity",new(l().SFFloat)(1)),new(u())(g().inputOutput,"silhouetteBoundaryOpacity",new(l().SFFloat)(0)),new(u())(g().inputOutput,"silhouetteSharpness",new(l().SFFloat)(.5)),new(u())(g().inputOutput,"surfaceNormals",new(l().SFNode))]),enumerable:!0}});const Ue=Me;y().set("x_ite/Components/VolumeRendering/SilhouetteEnhancementVolumeStyle",Ue);const Be=Ue;function Re(e){b.call(this,e),this.addType(g().ToneMappedVolumeStyle)}Object.assign(Object.setPrototypeOf(Re.prototype,b.prototype),{initialize(){b.prototype.initialize.call(this);this.getBrowser().getContext().getVersion()<2||(this._surfaceNormals.addInterest("set_surfaceNormals__",this),this.set_surfaceNormals__())},set_surfaceNormals__(){this.surfaceNormalsNode=F()(g().X3DTexture3DNode,this._surfaceNormals)},addShaderFields(e){this._enabled.getValue()&&(e.addUserDefinedField(g().inputOutput,"coolColor_"+this.getId(),this._coolColor.copy()),e.addUserDefinedField(g().inputOutput,"warmColor_"+this.getId(),this._warmColor.copy()),this.surfaceNormalsNode&&e.addUserDefinedField(g().inputOutput,"surfaceNormals_"+this.getId(),new(l().SFNode)(this.surfaceNormalsNode)))},getUniformsText(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+="// ToneMappedVolumeStyle\n",e+="\n",e+="uniform vec4 coolColor_"+this.getId()+";\n",e+="uniform vec4 warmColor_"+this.getId()+";\n",e+=this.getNormalText(this.surfaceNormalsNode),e+="\n",e+="vec4\n",e+="getToneMappedStyle_"+this.getId()+" (in vec4 originalColor, in vec3 texCoord)\n",e+="{\n",e+=" vec4 surfaceNormal = getNormal_"+this.getId()+" (texCoord);\n",e+="\n",e+=" if (surfaceNormal .w == 0.0)\n",e+=" return vec4 (0.0);\n",e+="\n",e+=" vec3 toneColor = vec3 (0.0);\n",e+=" vec3 coolColor = coolColor_"+this.getId()+" .rgb;\n",e+=" vec3 warmColor = warmColor_"+this.getId()+" .rgb;\n",e+="\n",e+=" for (int i = 0; i < X3D_NUM_LIGHTS; ++ i)\n",e+=" {\n",e+=" x3d_LightSourceParameters light = x3d_LightSource [i];\n",e+="\n",e+=" vec3 L = light .type == x3d_DirectionalLight ? -light .direction : normalize (light .location - vertex);\n",e+=" float colorFactor = dot (L, surfaceNormal .xyz) * 0.5 + 0.5;\n",e+="\n",e+=" toneColor += mix (warmColor .rgb, coolColor .rgb, colorFactor);\n",e+=" }\n",e+="\n",e+=" return vec4 (toneColor, originalColor .a);\n",e+="}\n",e},getFunctionsText(){if(!this._enabled.getValue())return"";let e="";return e+="\n",e+=" // ToneMappedVolumeStyle\n",e+="\n",e+=" textureColor = getToneMappedStyle_"+this.getId()+" (textureColor, texCoord);\n",e}}),Object.defineProperties(Re,{typeName:{value:"ToneMappedVolumeStyle",enumerable:!0},componentName:{value:"VolumeRendering",enumerable:!0},containerField:{value:"renderStyle",enumerable:!0},specificationRange:{value:Object.freeze(["3.3","Infinity"]),enumerable:!0},fieldDefinitions:{value:new(c())([new(u())(g().inputOutput,"metadata",new(l().SFNode)),new(u())(g().inputOutput,"enabled",new(l().SFBool)(!0)),new(u())(g().inputOutput,"coolColor",new(l().SFColorRGBA)(0,0,1,0)),new(u())(g().inputOutput,"warmColor",new(l().SFColorRGBA)(1,1,0,0)),new(u())(g().inputOutput,"surfaceNormals",new(l().SFNode))]),enumerable:!0}});const je=Re;y().set("x_ite/Components/VolumeRendering/ToneMappedVolumeStyle",je);const Xe=je;function ze(e){_e.call(this,e),this.addType(g().VolumeData),this.renderStyleNode=null}Object.assign(Object.setPrototypeOf(ze.prototype,_e.prototype),{initialize(){_e.prototype.initialize.call(this);this.getBrowser().getContext().getVersion()<2||(this._renderStyle.addInterest("set_renderStyle__",this),this._voxels.addInterest("set_voxels__",this),this._renderStyle.addInterest("updateShader",this),this.getAppearance()._texture=this._voxels,this.set_renderStyle__(),this.set_voxels__(),this.updateShader())},set_renderStyle__(){this.renderStyleNode&&(this.renderStyleNode.removeInterest("updateShader",this),this.renderStyleNode.removeVolumeData(this)),this.renderStyleNode=F()(g().X3DVolumeRenderStyleNode,this._renderStyle),this.renderStyleNode&&(this.renderStyleNode.addInterest("updateShader",this),this.renderStyleNode.addVolumeData(this))},set_voxels__(){this.voxelsNode=F()(g().X3DTexture3DNode,this._voxels),this.voxelsNode?this.getAppearance()._texture=this._voxels:this.getAppearance()._texture=this.getBrowser().getDefaultVoxels()},createShader(e,t,n){const o=this.getBrowser().getDefaultVolumeStyle();let r=o.getUniformsText(),i=o.getFunctionsText();this.renderStyleNode&&(r+=this.renderStyleNode.getUniformsText(),i+=this.renderStyleNode.getFunctionsText()),n=(n=n.replace(/\/\/ VOLUME_STYLES_UNIFORMS\n/,r)).replace(/\/\/ VOLUME_STYLES_FUNCTIONS\n/,i);const s=new(Ne())(this.getExecutionContext());s._url.push(encodeURI("data:x-shader/x-vertex,"+t)),s.setPrivate(!0),s.setName("VolumeDataVertexShader"),s.setOptions(e),s.setup();const a=new(Ne())(this.getExecutionContext());a._type="FRAGMENT",a._url.push(encodeURI("data:x-shader/x-fragment,"+n)),a.setPrivate(!0),a.setName("VolumeDataFragmentShader"),a.setOptions(e),a.setup();const l=new(xe())(this.getExecutionContext());l._language="GLSL",l._parts.push(s),l._parts.push(a),l.setPrivate(!0),l.setName("VolumeDataShader"),o.addShaderFields(l),this.renderStyleNode&&this.renderStyleNode.addShaderFields(l);const d=[];return this.addShaderUniformNames(d),l.setUniformNames(d),l.setup(),l}}),Object.defineProperties(ze,{typeName:{value:"VolumeData",enumerable:!0},componentName:{value:"VolumeRendering",enumerable:!0},containerField:{value:"children",enumerable:!0},specificationRange:{value:Object.freeze(["3.3","Infinity"]),enumerable:!0},fieldDefinitions:{value:new(c())([new(u())(g().inputOutput,"metadata",new(l().SFNode)),new(u())(g().inputOutput,"dimensions",new(l().SFVec3f)(1,1,1)),new(u())(g().inputOutput,"visible",new(l().SFBool)(!0)),new(u())(g().inputOutput,"bboxDisplay",new(l().SFBool)),new(u())(g().initializeOnly,"bboxCenter",new(l().SFVec3f)(0,0,0)),new(u())(g().initializeOnly,"bboxSize",new(l().SFVec3f)(-1,-1,-1)),new(u())(g().inputOutput,"renderStyle",new(l().SFNode)),new(u())(g().inputOutput,"voxels",new(l().SFNode))]),enumerable:!0}});const Le=ze;y().set("x_ite/Components/VolumeRendering/VolumeData",Le);const Ae=Le;n().add({name:"VolumeRendering",concreteNodes:[X,A,q,W,Z,be,V,Ie,De,Ee,Be,Xe,Ae],abstractNodes:[b,_e,N],browserContext:B});const Ge=void 0;y().set("assets/components/VolumeRendering",Ge)})();
@@ -1,4 +1,4 @@
1
- /* X_ITE v8.7.8 */(() => { // webpackBootstrap
1
+ /* X_ITE v8.8.0 */(() => { // webpackBootstrap
2
2
  /******/ "use strict";
3
3
  /******/ // The require scope
4
4
  /******/ var __webpack_require__ = {};
@@ -39,27 +39,27 @@ var __webpack_exports__ = {};
39
39
  // UNUSED EXPORTS: default
40
40
 
41
41
  ;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Components\")"
42
- const Components_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.7.8")] .require ("x_ite/Components");
42
+ const Components_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.8.0")] .require ("x_ite/Components");
43
43
  var Components_default = /*#__PURE__*/__webpack_require__.n(Components_namespaceObject);
44
44
  ;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Fields\")"
45
- const Fields_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.7.8")] .require ("x_ite/Fields");
45
+ const Fields_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.8.0")] .require ("x_ite/Fields");
46
46
  var Fields_default = /*#__PURE__*/__webpack_require__.n(Fields_namespaceObject);
47
47
  ;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/X3DFieldDefinition\")"
48
- const X3DFieldDefinition_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.7.8")] .require ("x_ite/Base/X3DFieldDefinition");
48
+ const X3DFieldDefinition_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.8.0")] .require ("x_ite/Base/X3DFieldDefinition");
49
49
  var X3DFieldDefinition_default = /*#__PURE__*/__webpack_require__.n(X3DFieldDefinition_namespaceObject);
50
50
  ;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/FieldDefinitionArray\")"
51
- const FieldDefinitionArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.7.8")] .require ("x_ite/Base/FieldDefinitionArray");
51
+ const FieldDefinitionArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.8.0")] .require ("x_ite/Base/FieldDefinitionArray");
52
52
  var FieldDefinitionArray_default = /*#__PURE__*/__webpack_require__.n(FieldDefinitionArray_namespaceObject);
53
53
  ;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Components/Shape/X3DAppearanceChildNode\")"
54
- const X3DAppearanceChildNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.7.8")] .require ("x_ite/Components/Shape/X3DAppearanceChildNode");
54
+ const X3DAppearanceChildNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.8.0")] .require ("x_ite/Components/Shape/X3DAppearanceChildNode");
55
55
  var X3DAppearanceChildNode_default = /*#__PURE__*/__webpack_require__.n(X3DAppearanceChildNode_namespaceObject);
56
56
  ;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Rendering/TraverseType\")"
57
- const TraverseType_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.7.8")] .require ("x_ite/Rendering/TraverseType");
57
+ const TraverseType_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.8.0")] .require ("x_ite/Rendering/TraverseType");
58
58
  ;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/X3DConstants\")"
59
- const X3DConstants_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.7.8")] .require ("x_ite/Base/X3DConstants");
59
+ const X3DConstants_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.8.0")] .require ("x_ite/Base/X3DConstants");
60
60
  var X3DConstants_default = /*#__PURE__*/__webpack_require__.n(X3DConstants_namespaceObject);
61
61
  ;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Namespace\")"
62
- const Namespace_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.7.8")] .require ("x_ite/Namespace");
62
+ const Namespace_namespaceObject = window [Symbol .for ("X_ITE.X3D-8.8.0")] .require ("x_ite/Namespace");
63
63
  var Namespace_default = /*#__PURE__*/__webpack_require__.n(Namespace_namespaceObject);
64
64
  ;// CONCATENATED MODULE: ./src/x_ite/Components/X_ITE/BlendMode.js
65
65
  /*******************************************************************************
@@ -126,38 +126,11 @@ function BlendMode (executionContext)
126
126
  this .equationTypes = new Map ();
127
127
  }
128
128
 
129
- BlendMode .prototype = Object .assign (Object .create ((X3DAppearanceChildNode_default()).prototype),
129
+ Object .assign (Object .setPrototypeOf (BlendMode .prototype, (X3DAppearanceChildNode_default()).prototype),
130
130
  {
131
- constructor: BlendMode,
132
- [Symbol .for ("X_ITE.X3DBaseNode.fieldDefinitions")]: new (FieldDefinitionArray_default()) ([
133
- new (X3DFieldDefinition_default()) ((X3DConstants_default()).inputOutput, "metadata", new (Fields_default()).SFNode ()),
134
- new (X3DFieldDefinition_default()) ((X3DConstants_default()).inputOutput, "blendColor", new (Fields_default()).SFColorRGBA ()),
135
- new (X3DFieldDefinition_default()) ((X3DConstants_default()).inputOutput, "sourceColorFactor", new (Fields_default()).SFString ("SRC_ALPHA")),
136
- new (X3DFieldDefinition_default()) ((X3DConstants_default()).inputOutput, "sourceAlphaFactor", new (Fields_default()).SFString ("ONE")),
137
- new (X3DFieldDefinition_default()) ((X3DConstants_default()).inputOutput, "destinationColorFactor", new (Fields_default()).SFString ("ONE_MINUS_SRC_ALPHA")),
138
- new (X3DFieldDefinition_default()) ((X3DConstants_default()).inputOutput, "destinationAlphaFactor", new (Fields_default()).SFString ("ONE_MINUS_SRC_ALPHA")),
139
- new (X3DFieldDefinition_default()) ((X3DConstants_default()).inputOutput, "colorEquation", new (Fields_default()).SFString ("FUNC_ADD")),
140
- new (X3DFieldDefinition_default()) ((X3DConstants_default()).inputOutput, "alphaEquation", new (Fields_default()).SFString ("FUNC_ADD")),
141
- ]),
142
- getTypeName: function ()
131
+ initialize ()
143
132
  {
144
- return "BlendMode";
145
- },
146
- getComponentName: function ()
147
- {
148
- return "X_ITE";
149
- },
150
- getContainerField: function ()
151
- {
152
- return "blendMode";
153
- },
154
- getSpecificationRange: function ()
155
- {
156
- return ["3.3", "Infinity"];
157
- },
158
- initialize: function ()
159
- {
160
- X3DAppearanceChildNode_default().prototype.initialize.call (this);
133
+ X3DAppearanceChildNode_default().prototype .initialize .call (this);
161
134
 
162
135
  const
163
136
  gl = this .getBrowser () .getContext (),
@@ -199,49 +172,49 @@ BlendMode .prototype = Object .assign (Object .create ((X3DAppearanceChildNode_d
199
172
  this .set_colorEquation__ ();
200
173
  this .set_alphaEquation__ ();
201
174
  },
202
- set_sourceColorFactor__: function ()
175
+ set_sourceColorFactor__ ()
203
176
  {
204
177
  this .sourceColorFactorType = this .factorTypes .get (this ._sourceColorFactor .getValue ());
205
178
 
206
179
  if (this .sourceColorFactorType === undefined)
207
180
  this .sourceColorFactorType = this .factorTypes .get ("SRC_ALPHA");
208
181
  },
209
- set_sourceAlphaFactor__: function ()
182
+ set_sourceAlphaFactor__ ()
210
183
  {
211
184
  this .sourceAlphaFactorType = this .factorTypes .get (this ._sourceAlphaFactor .getValue ());
212
185
 
213
186
  if (this .sourceAlphaFactorType === undefined)
214
187
  this .sourceAlphaFactorType = this .factorTypes .get ("ONE");
215
188
  },
216
- set_destinationColorFactor__: function ()
189
+ set_destinationColorFactor__ ()
217
190
  {
218
191
  this .destinationColorFactorType = this .factorTypes .get (this ._destinationColorFactor .getValue ());
219
192
 
220
193
  if (this .destinationColorFactorType === undefined)
221
194
  this .destinationColorFactorType = this .factorTypes .get ("ONE_MINUS_SRC_ALPHA");
222
195
  },
223
- set_destinationAlphaFactor__: function ()
196
+ set_destinationAlphaFactor__ ()
224
197
  {
225
198
  this .destinationAlphaFactorType = this .factorTypes .get (this ._destinationAlphaFactor .getValue ());
226
199
 
227
200
  if (this .destinationAlphaFactorType === undefined)
228
201
  this .destinationAlphaFactorType = this .factorTypes .get ("ONE_MINUS_SRC_ALPHA");
229
202
  },
230
- set_colorEquation__: function ()
203
+ set_colorEquation__ ()
231
204
  {
232
205
  this .colorEquationType = this .equationTypes .get (this ._colorEquation .getValue ());
233
206
 
234
207
  if (this .colorEquationType === undefined)
235
208
  this .colorEquationType = this .equationTypes .get ("FUNC_ADD");
236
209
  },
237
- set_alphaEquation__: function ()
210
+ set_alphaEquation__ ()
238
211
  {
239
212
  this .alphaEquationType = this .equationTypes .get (this ._alphaEquation .getValue ());
240
213
 
241
214
  if (this .alphaEquationType === undefined)
242
215
  this .alphaEquationType = this .equationTypes .get ("FUNC_ADD");
243
216
  },
244
- enable: function (gl)
217
+ enable (gl)
245
218
  {
246
219
  const color = this ._blendColor .getValue ();
247
220
 
@@ -249,13 +222,51 @@ BlendMode .prototype = Object .assign (Object .create ((X3DAppearanceChildNode_d
249
222
  gl .blendFuncSeparate (this .sourceColorFactorType, this .destinationColorFactorType, this .sourceAlphaFactorType, this .destinationAlphaFactorType);
250
223
  gl .blendEquationSeparate (this .colorEquationType, this .alphaEquationType);
251
224
  },
252
- disable: function (gl)
225
+ disable (gl)
253
226
  {
254
227
  gl .blendFuncSeparate (gl .SRC_ALPHA, gl .ONE_MINUS_SRC_ALPHA, gl .ONE, gl .ONE_MINUS_SRC_ALPHA);
255
228
  gl .blendEquationSeparate (gl .FUNC_ADD, gl .FUNC_ADD);
256
229
  },
257
230
  });
258
231
 
232
+ Object .defineProperties (BlendMode,
233
+ {
234
+ typeName:
235
+ {
236
+ value: "BlendMode",
237
+ enumerable: true,
238
+ },
239
+ componentName:
240
+ {
241
+ value: "X_ITE",
242
+ enumerable: true,
243
+ },
244
+ containerField:
245
+ {
246
+ value: "blendMode",
247
+ enumerable: true,
248
+ },
249
+ specificationRange:
250
+ {
251
+ value: Object .freeze (["3.3", "Infinity"]),
252
+ enumerable: true,
253
+ },
254
+ fieldDefinitions:
255
+ {
256
+ value: new (FieldDefinitionArray_default()) ([
257
+ new (X3DFieldDefinition_default()) ((X3DConstants_default()).inputOutput, "metadata", new (Fields_default()).SFNode ()),
258
+ new (X3DFieldDefinition_default()) ((X3DConstants_default()).inputOutput, "blendColor", new (Fields_default()).SFColorRGBA ()),
259
+ new (X3DFieldDefinition_default()) ((X3DConstants_default()).inputOutput, "sourceColorFactor", new (Fields_default()).SFString ("SRC_ALPHA")),
260
+ new (X3DFieldDefinition_default()) ((X3DConstants_default()).inputOutput, "sourceAlphaFactor", new (Fields_default()).SFString ("ONE")),
261
+ new (X3DFieldDefinition_default()) ((X3DConstants_default()).inputOutput, "destinationColorFactor", new (Fields_default()).SFString ("ONE_MINUS_SRC_ALPHA")),
262
+ new (X3DFieldDefinition_default()) ((X3DConstants_default()).inputOutput, "destinationAlphaFactor", new (Fields_default()).SFString ("ONE_MINUS_SRC_ALPHA")),
263
+ new (X3DFieldDefinition_default()) ((X3DConstants_default()).inputOutput, "colorEquation", new (Fields_default()).SFString ("FUNC_ADD")),
264
+ new (X3DFieldDefinition_default()) ((X3DConstants_default()).inputOutput, "alphaEquation", new (Fields_default()).SFString ("FUNC_ADD")),
265
+ ]),
266
+ enumerable: true,
267
+ },
268
+ });
269
+
259
270
  const __default__ = BlendMode;
260
271
  ;
261
272
 
@@ -312,14 +323,15 @@ Namespace_default().set ("x_ite/Components/X_ITE/BlendMode", __default__);
312
323
 
313
324
 
314
325
 
315
- Components_default().addComponent ({
326
+ Components_default().add ({
316
327
  name: "X_ITE",
317
- types:
318
- {
319
- BlendMode: X_ITE_BlendMode,
320
- },
321
- abstractTypes:
322
- { },
328
+ concreteNodes:
329
+ [
330
+ X_ITE_BlendMode,
331
+ ],
332
+ abstractNodes:
333
+ [
334
+ ],
323
335
  });
324
336
 
325
337
  const X_ITE_default_ = undefined;