x_ite 5.0.3 → 6.1.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 (385) hide show
  1. package/.vscode/settings.json +12 -5
  2. package/.vscode/tasks.json +25 -1
  3. package/Makefile +36 -28
  4. package/README.md +6 -11
  5. package/build/bin/dist.pl +0 -6
  6. package/build/bin/examples-and-tests.pl +75 -0
  7. package/build/bin/tests-menu.pl +57 -0
  8. package/build/bin/version.pl +7 -4
  9. package/build/parts/default.start.frag.js +3 -2
  10. package/dist/assets/components/annotation.js +3 -2
  11. package/dist/assets/components/annotation.min.js +1 -1
  12. package/dist/assets/components/cad-geometry.js +3 -2
  13. package/dist/assets/components/cad-geometry.min.js +1 -1
  14. package/dist/assets/components/cube-map-texturing.js +8 -20
  15. package/dist/assets/components/cube-map-texturing.min.js +1 -1
  16. package/dist/assets/components/dis.js +3 -2
  17. package/dist/assets/components/dis.min.js +1 -1
  18. package/dist/assets/components/event-utilities.js +4 -3
  19. package/dist/assets/components/event-utilities.min.js +1 -1
  20. package/dist/assets/components/geometry2d.js +38 -52
  21. package/dist/assets/components/geometry2d.min.js +1 -1
  22. package/dist/assets/components/geospatial.js +34 -1686
  23. package/dist/assets/components/geospatial.min.js +1 -1
  24. package/dist/assets/components/h-anim.js +71 -77
  25. package/dist/assets/components/h-anim.min.js +1 -1
  26. package/dist/assets/components/key-device-sensor.js +4 -3
  27. package/dist/assets/components/key-device-sensor.min.js +1 -1
  28. package/dist/assets/components/layout.js +101 -173
  29. package/dist/assets/components/layout.min.js +1 -1
  30. package/dist/assets/components/nurbs.js +3 -2
  31. package/dist/assets/components/nurbs.min.js +1 -1
  32. package/dist/assets/components/particle-systems.js +1926 -1669
  33. package/dist/assets/components/particle-systems.min.js +1 -1
  34. package/dist/assets/components/picking.js +34 -41
  35. package/dist/assets/components/picking.min.js +1 -1
  36. package/dist/assets/components/projective-texture-mapping.js +73 -86
  37. package/dist/assets/components/projective-texture-mapping.min.js +1 -1
  38. package/dist/assets/components/rigid-body-physics.js +37 -57
  39. package/dist/assets/components/rigid-body-physics.min.js +1 -1
  40. package/dist/assets/components/scripting.js +3 -2
  41. package/dist/assets/components/scripting.min.js +1 -1
  42. package/dist/assets/components/texturing-3d.js +27 -33
  43. package/dist/assets/components/texturing-3d.min.js +3 -3
  44. package/dist/assets/components/volume-rendering.js +12 -11
  45. package/dist/assets/components/volume-rendering.min.js +1 -1
  46. package/dist/assets/components/x_ite.js +3 -2
  47. package/dist/assets/components/x_ite.min.js +1 -1
  48. package/dist/assets/images/Shading.png +0 -0
  49. package/dist/assets/linetype/1.png +0 -0
  50. package/dist/assets/linetype/10.png +0 -0
  51. package/dist/assets/linetype/11.png +0 -0
  52. package/dist/assets/linetype/12.png +0 -0
  53. package/dist/assets/linetype/13.png +0 -0
  54. package/dist/assets/linetype/14.png +0 -0
  55. package/dist/assets/linetype/15.png +0 -0
  56. package/dist/assets/linetype/16.png +0 -0
  57. package/dist/assets/linetype/2.png +0 -0
  58. package/dist/assets/linetype/3.png +0 -0
  59. package/dist/assets/linetype/4.png +0 -0
  60. package/dist/assets/linetype/5.png +0 -0
  61. package/dist/assets/linetype/6.png +0 -0
  62. package/dist/assets/linetype/7.png +0 -0
  63. package/dist/assets/linetype/8.png +0 -0
  64. package/dist/assets/linetype/9.png +0 -0
  65. package/dist/assets/shaders/webgl1/Gouraud.vs +1 -1
  66. package/dist/assets/shaders/webgl1/Line.fs +0 -21
  67. package/dist/assets/shaders/webgl1/Line.vs +0 -10
  68. package/dist/assets/shaders/webgl1/PBR.fs +1 -1
  69. package/dist/assets/shaders/webgl1/PBR.vs +1 -1
  70. package/dist/assets/shaders/webgl1/Phong.fs +1 -1
  71. package/dist/assets/shaders/webgl1/Point.vs +1 -1
  72. package/dist/assets/shaders/webgl2/Depth.vs +29 -1
  73. package/dist/assets/shaders/webgl2/Gouraud.vs +32 -4
  74. package/dist/assets/shaders/webgl2/Line.fs +24 -12
  75. package/dist/assets/shaders/webgl2/Line.vs +36 -11
  76. package/dist/assets/shaders/webgl2/LineTransform.fs +4 -0
  77. package/dist/assets/shaders/webgl2/LineTransform.vs +57 -0
  78. package/dist/assets/shaders/webgl2/PBR.fs +1 -1
  79. package/dist/assets/shaders/webgl2/PBR.vs +35 -7
  80. package/dist/assets/shaders/webgl2/Phong.fs +1 -1
  81. package/dist/assets/shaders/webgl2/Phong.vs +31 -3
  82. package/dist/assets/shaders/webgl2/Point.vs +30 -2
  83. package/dist/assets/shaders/webgl2/Unlit.vs +31 -3
  84. package/dist/example.html +6 -6
  85. package/dist/x_ite.css +199 -224
  86. package/dist/x_ite.js +16335 -15917
  87. package/dist/x_ite.min.js +17 -17
  88. package/dist/x_ite.zip +0 -0
  89. package/docs/404.md +6 -0
  90. package/docs/Accessing-the-External-Browser.md +21 -15
  91. package/docs/Browser-Support.md +6 -0
  92. package/docs/Custom-Shaders.md +18 -25
  93. package/docs/Features.md +11 -5
  94. package/docs/Gemfile +44 -0
  95. package/docs/Gemfile.lock +122 -0
  96. package/docs/Glossary.md +6 -0
  97. package/docs/How-To-Configure-Your-Web-Server.md +6 -0
  98. package/docs/Supported-Nodes.md +9 -1
  99. package/docs/What's-New.md +93 -39
  100. package/docs/XHTML-DOM-Integration.md +6 -0
  101. package/docs/_config.yml +2 -2
  102. package/docs/assets/css/main.scss +26 -0
  103. package/docs/index.md +42 -50
  104. package/docs/reference/Browser-Services.md +9 -3
  105. package/docs/reference/Constants-Services.md +6 -0
  106. package/docs/reference/ECMAScript-Object-and-Function-Definitions.md +12 -6
  107. package/docs/reference/Field-Services-and-Objects.md +105 -1
  108. package/docs/reference/Prototype-Services.md +11 -0
  109. package/docs/reference/Route-Services.md +9 -0
  110. package/docs/reference/Scene-Services.md +17 -2
  111. package/docs/reference/Script-Node-Authoring-Interface.md +7 -1
  112. package/docs/tutorials/Adding-backgrounds.md +6 -0
  113. package/docs/tutorials/Adding-fog.md +6 -0
  114. package/docs/tutorials/Adding-sound.md +6 -0
  115. package/docs/tutorials/Animating-transforms.md +6 -0
  116. package/docs/tutorials/Basic-Nodes.md +6 -0
  117. package/docs/tutorials/Building-a-X3D-world.md +6 -0
  118. package/docs/tutorials/Building-elevation-grids.md +6 -0
  119. package/docs/tutorials/Building-extruded-shapes.md +6 -0
  120. package/docs/tutorials/Building-primitive-shapes.md +6 -0
  121. package/docs/tutorials/Building-shapes-out-of-points,-lines,-and-faces.md +6 -0
  122. package/docs/tutorials/Controlling-appearance-with-materials.md +6 -0
  123. package/docs/tutorials/Controlling-color-on-coordinate-based-geometry.md +6 -0
  124. package/docs/tutorials/Controlling-detail.md +6 -0
  125. package/docs/tutorials/Controlling-how-textures-are-mapped.md +6 -0
  126. package/docs/tutorials/Controlling-navigation.md +6 -0
  127. package/docs/tutorials/Controlling-shading-on-coordinate-based-geometry.md +6 -0
  128. package/docs/tutorials/Controlling-the-viewpoint.md +6 -0
  129. package/docs/tutorials/Creating-new-node-types.md +6 -0
  130. package/docs/tutorials/Grouping-nodes.md +6 -0
  131. package/docs/tutorials/Hello,-World!.md +6 -0
  132. package/docs/tutorials/Improving-Performance.md +6 -0
  133. package/docs/tutorials/Increasing-Rendering-Speed.md +6 -0
  134. package/docs/tutorials/Introducing-X3D.md +6 -0
  135. package/docs/tutorials/Introducing-animation.md +6 -0
  136. package/docs/tutorials/Introducing-script-use.md +6 -0
  137. package/docs/tutorials/Lighting-your-world.md +6 -0
  138. package/docs/tutorials/Mapping-textures.md +6 -0
  139. package/docs/tutorials/Naming-nodes.md +6 -0
  140. package/docs/tutorials/Providing-information-about-your-world.md +6 -0
  141. package/docs/tutorials/Sensing-the-viewer.md +6 -0
  142. package/docs/tutorials/Sensing-viewer-actions.md +6 -0
  143. package/docs/tutorials/Transforming-Shapes.md +6 -0
  144. package/docs/tutorials/Writing-program-scripts-with-ECMAScript.md +6 -0
  145. package/docs/tutorials/index.md +42 -36
  146. package/package.json +6 -7
  147. package/src/assets/components/geometry2d.js +1 -1
  148. package/src/assets/components/key-device-sensor.js +1 -1
  149. package/src/assets/components/layout.js +1 -1
  150. package/src/assets/components/particle-systems.js +1 -1
  151. package/src/assets/components/volume-rendering.js +1 -1
  152. package/src/assets/images/Shading.png +0 -0
  153. package/src/assets/linetype/1.png +0 -0
  154. package/src/assets/linetype/10.png +0 -0
  155. package/src/assets/linetype/11.png +0 -0
  156. package/src/assets/linetype/12.png +0 -0
  157. package/src/assets/linetype/13.png +0 -0
  158. package/src/assets/linetype/14.png +0 -0
  159. package/src/assets/linetype/15.png +0 -0
  160. package/src/assets/linetype/16.png +0 -0
  161. package/src/assets/linetype/2.png +0 -0
  162. package/src/assets/linetype/3.png +0 -0
  163. package/src/assets/linetype/4.png +0 -0
  164. package/src/assets/linetype/5.png +0 -0
  165. package/src/assets/linetype/6.png +0 -0
  166. package/src/assets/linetype/7.png +0 -0
  167. package/src/assets/linetype/8.png +0 -0
  168. package/src/assets/linetype/9.png +0 -0
  169. package/src/assets/shaders/Types.glsl +1 -9
  170. package/src/assets/shaders/webgl1/Gouraud.fs +1 -1
  171. package/src/assets/shaders/webgl1/Gouraud.vs +2 -3
  172. package/src/assets/shaders/webgl1/Line.fs +3 -28
  173. package/src/assets/shaders/webgl1/Line.vs +6 -20
  174. package/src/assets/shaders/webgl1/PBR.fs +6 -6
  175. package/src/assets/shaders/webgl1/PBR.vs +1 -1
  176. package/src/assets/shaders/webgl1/Phong.fs +10 -10
  177. package/src/assets/shaders/webgl1/Point.vs +2 -2
  178. package/src/assets/shaders/webgl1/Unlit.fs +4 -4
  179. package/src/assets/shaders/webgl1/include/Normal.glsl +1 -1
  180. package/src/assets/shaders/webgl1/include/Texture.glsl +3 -8
  181. package/src/assets/shaders/webgl2/Depth.vs +4 -1
  182. package/src/assets/shaders/webgl2/Gouraud.fs +1 -1
  183. package/src/assets/shaders/webgl2/Gouraud.vs +8 -6
  184. package/src/assets/shaders/webgl2/Line.fs +11 -17
  185. package/src/assets/shaders/webgl2/Line.vs +17 -21
  186. package/src/assets/shaders/webgl2/LineTransform.fs +6 -0
  187. package/src/assets/shaders/webgl2/LineTransform.vs +77 -0
  188. package/src/assets/shaders/webgl2/PBR.fs +6 -6
  189. package/src/assets/shaders/webgl2/PBR.vs +10 -7
  190. package/src/assets/shaders/webgl2/Phong.fs +11 -11
  191. package/src/assets/shaders/webgl2/Phong.vs +6 -3
  192. package/src/assets/shaders/webgl2/Point.vs +5 -4
  193. package/src/assets/shaders/webgl2/Unlit.fs +5 -5
  194. package/src/assets/shaders/webgl2/Unlit.vs +6 -3
  195. package/src/assets/shaders/webgl2/include/Line2.glsl +20 -0
  196. package/src/assets/shaders/webgl2/include/Normal.glsl +1 -1
  197. package/src/assets/shaders/webgl2/include/Particle.glsl +36 -0
  198. package/src/assets/shaders/webgl2/include/Texture.glsl +3 -3
  199. package/src/example.html +6 -6
  200. package/src/examples.js +5 -4
  201. package/src/standard/Math/Algorithm.js +12 -28
  202. package/src/standard/Math/Geometry/Line2.js +163 -0
  203. package/src/standard/Math/Geometry/Line3.js +3 -5
  204. package/src/standard/Math/Geometry/Plane3.js +0 -2
  205. package/src/standard/Math/Geometry/Triangle3.js +1 -1
  206. package/src/standard/Math/Geometry/ViewVolume.js +121 -103
  207. package/src/standard/Math/Numbers/Color3.js +6 -0
  208. package/src/standard/Math/Numbers/Color4.js +7 -0
  209. package/src/standard/Math/Numbers/Complex.js +48 -34
  210. package/src/standard/Math/Numbers/Matrix2.js +62 -2
  211. package/src/standard/Math/Numbers/Matrix3.js +129 -110
  212. package/src/standard/Math/Numbers/Matrix4.js +138 -119
  213. package/src/standard/Math/Numbers/Quaternion.js +12 -5
  214. package/src/standard/Math/Numbers/Rotation4.js +8 -1
  215. package/src/standard/Math/Numbers/Vector2.js +42 -9
  216. package/src/standard/Math/Numbers/Vector3.js +50 -14
  217. package/src/standard/Math/Numbers/Vector4.js +48 -11
  218. package/src/standard/Math/Utility/BVH.js +45 -17
  219. package/src/tests.js +68 -66
  220. package/src/x_ite/Base/X3DBaseNode.js +22 -11
  221. package/src/x_ite/Base/X3DField.js +1 -1
  222. package/src/x_ite/Browser/Core/BrowserOptions.js +24 -143
  223. package/src/x_ite/Browser/Core/BrowserTimings.js +6 -4
  224. package/src/x_ite/Browser/Core/Context.js +185 -0
  225. package/src/x_ite/Browser/Core/ContextMenu.js +398 -211
  226. package/src/x_ite/Browser/Core/Notification.js +1 -0
  227. package/src/x_ite/Browser/Core/X3DCoreContext.js +35 -146
  228. package/src/x_ite/Browser/Followers/X3DArrayFollowerTemplate.js +1 -1
  229. package/src/x_ite/Browser/Geometry2D/Disk2DOptions.js +1 -0
  230. package/src/x_ite/Browser/Geometry2D/X3DGeometry2DContext.js +2 -2
  231. package/src/x_ite/Browser/Geometry3D/X3DGeometry3DContext.js +41 -2
  232. package/src/x_ite/Browser/Geospatial/Geocentric.js +2 -2
  233. package/src/x_ite/Browser/Interpolation/CatmullRomSplineInterpolatorTemplate.js +1 -1
  234. package/src/x_ite/Browser/Layout/ScreenText.js +18 -65
  235. package/src/x_ite/Browser/Layout/X3DLayoutContext.js +59 -16
  236. package/src/x_ite/Browser/Navigation/ExamineViewer.js +13 -20
  237. package/src/x_ite/Browser/Navigation/LookAtViewer.js +1 -4
  238. package/src/x_ite/Browser/Navigation/PlaneViewer.js +0 -3
  239. package/src/x_ite/Browser/Navigation/X3DFlyViewer.js +15 -8
  240. package/src/x_ite/Browser/Navigation/X3DViewer.js +12 -20
  241. package/src/x_ite/Browser/Networking/X3DNetworkingContext.js +11 -7
  242. package/src/x_ite/Browser/ParticleSystems/BVH.glsl +183 -0
  243. package/src/x_ite/Browser/ParticleSystems/Box3.glsl +47 -0
  244. package/src/x_ite/Browser/ParticleSystems/GeometryTypes.js +66 -0
  245. package/src/x_ite/Browser/ParticleSystems/Line3.glsl +55 -0
  246. package/src/x_ite/Browser/ParticleSystems/Plane3.glsl +160 -0
  247. package/src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js +27 -3
  248. package/src/x_ite/Browser/PointingDeviceSensor/X3DPointingDeviceSensorContext.js +41 -37
  249. package/src/x_ite/Browser/Rendering/X3DRenderingContext.js +21 -13
  250. package/src/x_ite/Browser/Shaders/Shader.js +33 -12
  251. package/src/x_ite/Browser/Shaders/ShaderSource.js +6 -0
  252. package/src/x_ite/Browser/Shaders/ShaderTest.js +16 -10
  253. package/src/x_ite/Browser/Shape/X3DShapeContext.js +50 -9
  254. package/src/x_ite/Browser/Text/X3DTextContext.js +4 -13
  255. package/src/x_ite/Browser/Text/X3DTextGeometry.js +2 -1
  256. package/src/x_ite/Browser/Texturing/X3DTexturingContext.js +71 -34
  257. package/src/x_ite/Browser/Texturing3D/DICOMParser.js +2 -2
  258. package/src/x_ite/Browser/Time/X3DTimeContext.js +4 -2
  259. package/src/x_ite/Browser/VERSION.js +1 -1
  260. package/src/x_ite/Browser/X3DBrowser.js +7 -6
  261. package/src/x_ite/Browser/X3DBrowserContext.js +43 -10
  262. package/src/x_ite/Components/Core/X3DNode.js +4 -0
  263. package/src/x_ite/Components/Core/X3DPrototypeInstance.js +0 -2
  264. package/src/x_ite/Components/CubeMapTexturing/ComposedCubeMapTexture.js +3 -4
  265. package/src/x_ite/Components/CubeMapTexturing/GeneratedCubeMapTexture.js +1 -12
  266. package/src/x_ite/Components/CubeMapTexturing/ImageCubeMapTexture.js +1 -2
  267. package/src/x_ite/Components/EnvironmentalEffects/TextureBackground.js +1 -1
  268. package/src/x_ite/Components/EnvironmentalEffects/X3DBackgroundNode.js +76 -77
  269. package/src/x_ite/Components/EnvironmentalEffects/X3DFogObject.js +2 -9
  270. package/src/x_ite/Components/EnvironmentalSensor/ProximitySensor.js +51 -65
  271. package/src/x_ite/Components/EventUtilities/X3DSequencerNode.js +1 -1
  272. package/src/x_ite/Components/Followers/ColorDamper.js +1 -1
  273. package/src/x_ite/Components/Followers/X3DChaserNode.js +18 -32
  274. package/src/x_ite/Components/Followers/X3DDamperNode.js +1 -6
  275. package/src/x_ite/Components/Followers/X3DFollowerNode.js +1 -1
  276. package/src/x_ite/Components/Geometry2D/Disk2D.js +30 -46
  277. package/src/x_ite/Components/Geometry2D/TriangleSet2D.js +1 -1
  278. package/src/x_ite/Components/Geometry3D/ElevationGrid.js +12 -4
  279. package/src/x_ite/Components/Geometry3D/IndexedFaceSet.js +4 -4
  280. package/src/x_ite/Components/Geospatial/GeoCoordinate.js +10 -27
  281. package/src/x_ite/Components/Geospatial/GeoLOD.js +1 -1
  282. package/src/x_ite/Components/Geospatial/GeoPositionInterpolator.js +5 -10
  283. package/src/x_ite/Components/Geospatial/GeoTouchSensor.js +9 -16
  284. package/src/x_ite/Components/Geospatial/GeoTransform.js +6 -18
  285. package/src/x_ite/Components/Geospatial/GeoViewpoint.js +26 -30
  286. package/src/x_ite/Components/Geospatial/X3DGeospatialObject.js +20 -27
  287. package/src/x_ite/Components/Grouping/X3DGroupingNode.js +8 -8
  288. package/src/x_ite/Components/Grouping/X3DTransformNode.js +0 -4
  289. package/src/x_ite/Components/HAnim/HAnimHumanoid.js +68 -75
  290. package/src/x_ite/Components/Interpolation/OrientationInterpolator.js +4 -11
  291. package/src/x_ite/Components/Interpolation/X3DInterpolatorNode.js +1 -1
  292. package/src/x_ite/Components/Layout/LayoutGroup.js +4 -9
  293. package/src/x_ite/Components/Layout/ScreenFontStyle.js +1 -1
  294. package/src/x_ite/Components/Layout/ScreenGroup.js +16 -80
  295. package/src/x_ite/Components/Lighting/DirectionalLight.js +28 -36
  296. package/src/x_ite/Components/Lighting/PointLight.js +32 -47
  297. package/src/x_ite/Components/Lighting/SpotLight.js +33 -48
  298. package/src/x_ite/Components/Navigation/Billboard.js +49 -56
  299. package/src/x_ite/Components/Navigation/LOD.js +2 -2
  300. package/src/x_ite/Components/Navigation/OrthoViewpoint.js +29 -30
  301. package/src/x_ite/Components/Navigation/Viewpoint.js +16 -20
  302. package/src/x_ite/Components/Navigation/X3DViewpointNode.js +82 -111
  303. package/src/x_ite/Components/Networking/Anchor.js +18 -7
  304. package/src/x_ite/Components/ParticleSystems/BoundedPhysicsModel.js +6 -6
  305. package/src/x_ite/Components/ParticleSystems/ConeEmitter.js +44 -36
  306. package/src/x_ite/Components/ParticleSystems/ExplosionEmitter.js +26 -17
  307. package/src/x_ite/Components/ParticleSystems/ForcePhysicsModel.js +20 -7
  308. package/src/x_ite/Components/ParticleSystems/ParticleSystem.js +463 -882
  309. package/src/x_ite/Components/ParticleSystems/PointEmitter.js +39 -35
  310. package/src/x_ite/Components/ParticleSystems/PolylineEmitter.js +112 -128
  311. package/src/x_ite/Components/ParticleSystems/SurfaceEmitter.js +105 -112
  312. package/src/x_ite/Components/ParticleSystems/VolumeEmitter.js +138 -176
  313. package/src/x_ite/Components/ParticleSystems/WindPhysicsModel.js +16 -11
  314. package/src/x_ite/Components/ParticleSystems/X3DParticleEmitterNode.js +807 -217
  315. package/src/x_ite/Components/Picking/LinePickSensor.js +31 -39
  316. package/src/x_ite/Components/PointingDeviceSensor/CylinderSensor.js +91 -108
  317. package/src/x_ite/Components/PointingDeviceSensor/PlaneSensor.js +56 -59
  318. package/src/x_ite/Components/PointingDeviceSensor/SphereSensor.js +54 -71
  319. package/src/x_ite/Components/PointingDeviceSensor/TouchSensor.js +8 -15
  320. package/src/x_ite/Components/ProjectiveTextureMapping/TextureProjectorParallel.js +43 -50
  321. package/src/x_ite/Components/ProjectiveTextureMapping/TextureProjectorPerspective.js +32 -39
  322. package/src/x_ite/Components/Rendering/ClipPlane.js +3 -11
  323. package/src/x_ite/Components/Rendering/Color.js +12 -24
  324. package/src/x_ite/Components/Rendering/ColorRGBA.js +13 -25
  325. package/src/x_ite/Components/Rendering/IndexedLineSet.js +26 -4
  326. package/src/x_ite/Components/Rendering/LineSet.js +35 -13
  327. package/src/x_ite/Components/Rendering/PointSet.js +35 -13
  328. package/src/x_ite/Components/Rendering/X3DComposedGeometryNode.js +13 -5
  329. package/src/x_ite/Components/Rendering/X3DGeometryNode.js +331 -387
  330. package/src/x_ite/Components/Rendering/X3DLineGeometryNode.js +350 -140
  331. package/src/x_ite/Components/Rendering/X3DPointGeometryNode.js +116 -126
  332. package/src/x_ite/Components/RigidBodyPhysics/DoubleAxisHingeJoint.js +24 -38
  333. package/src/x_ite/Components/RigidBodyPhysics/SingleAxisHingeJoint.js +10 -17
  334. package/src/x_ite/Components/Shaders/ComposedShader.js +35 -75
  335. package/src/x_ite/Components/Shaders/FloatVertexAttribute.js +8 -11
  336. package/src/x_ite/Components/Shaders/Matrix3VertexAttribute.js +10 -14
  337. package/src/x_ite/Components/Shaders/Matrix4VertexAttribute.js +10 -14
  338. package/src/x_ite/Components/Shaders/ShaderPart.js +1 -10
  339. package/src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js +220 -210
  340. package/src/x_ite/Components/Shaders/X3DShaderNode.js +28 -10
  341. package/src/x_ite/Components/Shaders/X3DVertexAttributeNode.js +15 -1
  342. package/src/x_ite/Components/Shape/Appearance.js +37 -4
  343. package/src/x_ite/Components/Shape/FillProperties.js +12 -1
  344. package/src/x_ite/Components/Shape/LineProperties.js +33 -1
  345. package/src/x_ite/Components/Shape/PointProperties.js +24 -3
  346. package/src/x_ite/Components/Shape/Shape.js +30 -39
  347. package/src/x_ite/Components/Shape/TwoSidedMaterial.js +3 -1
  348. package/src/x_ite/Components/Sound/Sound.js +31 -41
  349. package/src/x_ite/Components/Text/Text.js +6 -20
  350. package/src/x_ite/Components/Texturing/ImageTexture.js +1 -1
  351. package/src/x_ite/Components/Texturing/MovieTexture.js +1 -1
  352. package/src/x_ite/Components/Texturing/PixelTexture.js +2 -2
  353. package/src/x_ite/Components/Texturing/TextureCoordinate.js +5 -5
  354. package/src/x_ite/Components/Texturing/TextureProperties.js +4 -4
  355. package/src/x_ite/Components/Texturing/X3DSingleTextureNode.js +5 -4
  356. package/src/x_ite/Components/Texturing/X3DTexture2DNode.js +24 -33
  357. package/src/x_ite/Components/Texturing3D/TextureCoordinate3D.js +5 -5
  358. package/src/x_ite/Components/Texturing3D/TextureCoordinate4D.js +5 -5
  359. package/src/x_ite/Components/Texturing3D/X3DTexture3DNode.js +12 -19
  360. package/src/x_ite/Components/VolumeRendering/X3DVolumeDataNode.js +8 -8
  361. package/src/x_ite/Components.js +2 -2
  362. package/src/x_ite/Fallback.js +9 -3
  363. package/src/x_ite/Fields/SFColor.js +4 -0
  364. package/src/x_ite/Fields/SFColorRGBA.js +4 -0
  365. package/src/x_ite/Fields/SFImage.js +2 -11
  366. package/src/x_ite/Fields/SFMatrixPrototypeTemplate.js +4 -0
  367. package/src/x_ite/Fields/SFRotation.js +4 -0
  368. package/src/x_ite/Fields/SFString.js +4 -0
  369. package/src/x_ite/Fields/SFVecPrototypeTemplate.js +22 -2
  370. package/src/x_ite/Parser/XMLParser.js +1 -1
  371. package/src/x_ite/Rendering/TextureBuffer.js +43 -36
  372. package/src/x_ite/Rendering/VertexArray.js +103 -0
  373. package/src/x_ite/Rendering/X3DRenderObject.js +127 -148
  374. package/src/x_ite/X3D.js +32 -26
  375. package/src/x_ite.config.js +0 -5
  376. package/src/x_ite.css +216 -175
  377. package/src/x_ite.html +15 -10
  378. package/src/x_ite.js +49 -1
  379. package/x_ite.min.html +15 -10
  380. package/dist/assets/hatching/0.png +0 -0
  381. package/dist/assets/linetype/0.png +0 -0
  382. package/src/assets/hatching/0.png +0 -0
  383. package/src/assets/linetype/0.png +0 -0
  384. package/src/spinner.css +0 -67
  385. package/src/x_ite/Browser/Shape/LineStipples.xcf +0 -0
@@ -70,25 +70,38 @@ function (Fields,
70
70
 
71
71
  this .addType (X3DConstants .PointEmitter);
72
72
 
73
- this ._position .setUnit ("length");
74
- this ._speed .setUnit ("speed");
75
- this ._mass .setUnit ("mass");
76
- this ._surfaceArea .setUnit ("area");
73
+ this ._position .setUnit ("length");
77
74
 
78
- this .direction = new Vector3 (0, 0, 0);
75
+ this .addUniform ("position", "uniform vec3 position;");
76
+ this .addUniform ("direction", "uniform vec3 direction;");
77
+
78
+ this .addFunction (/* glsl */ `vec3 getRandomVelocity ()
79
+ {
80
+ if (direction == vec3 (0.0))
81
+ return getRandomSphericalVelocity ();
82
+
83
+ else
84
+ return direction * getRandomSpeed ();
85
+ }`);
86
+
87
+ this .addFunction (/* glsl */ `vec4 getRandomPosition ()
88
+ {
89
+ return vec4 (position, 1.0);
90
+ }`);
79
91
  }
80
92
 
81
93
  PointEmitter .prototype = Object .assign (Object .create (X3DParticleEmitterNode .prototype),
82
94
  {
83
95
  constructor: PointEmitter,
84
96
  [Symbol .for ("X_ITE.X3DBaseNode.fieldDefinitions")]: new FieldDefinitionArray ([
85
- new X3DFieldDefinition (X3DConstants .inputOutput, "metadata", new Fields .SFNode ()),
86
- new X3DFieldDefinition (X3DConstants .inputOutput, "position", new Fields .SFVec3f ()),
87
- new X3DFieldDefinition (X3DConstants .inputOutput, "direction", new Fields .SFVec3f (0, 1, 0)),
88
- new X3DFieldDefinition (X3DConstants .inputOutput, "speed", new Fields .SFFloat ()),
89
- new X3DFieldDefinition (X3DConstants .inputOutput, "variation", new Fields .SFFloat (0.25)),
90
- new X3DFieldDefinition (X3DConstants .initializeOnly, "mass", new Fields .SFFloat ()),
91
- new X3DFieldDefinition (X3DConstants .initializeOnly, "surfaceArea", new Fields .SFFloat ()),
97
+ new X3DFieldDefinition (X3DConstants .inputOutput, "metadata", new Fields .SFNode ()),
98
+ new X3DFieldDefinition (X3DConstants .inputOutput, "on", new Fields .SFBool (true)),
99
+ new X3DFieldDefinition (X3DConstants .inputOutput, "position", new Fields .SFVec3f ()),
100
+ new X3DFieldDefinition (X3DConstants .inputOutput, "direction", new Fields .SFVec3f (0, 1, 0)),
101
+ new X3DFieldDefinition (X3DConstants .inputOutput, "speed", new Fields .SFFloat ()),
102
+ new X3DFieldDefinition (X3DConstants .inputOutput, "variation", new Fields .SFFloat (0.25)),
103
+ new X3DFieldDefinition (X3DConstants .inputOutput, "mass", new Fields .SFFloat ()),
104
+ new X3DFieldDefinition (X3DConstants .inputOutput, "surfaceArea", new Fields .SFFloat ()),
92
105
  ]),
93
106
  getTypeName: function ()
94
107
  {
@@ -106,7 +119,10 @@ function (Fields,
106
119
  {
107
120
  X3DParticleEmitterNode .prototype .initialize .call (this);
108
121
 
109
- this ._position .addInterest ("set_position__", this);
122
+ if (this .getBrowser () .getContext () .getVersion () < 2)
123
+ return;
124
+
125
+ this ._position .addInterest ("set_position__", this);
110
126
  this ._direction .addInterest ("set_direction__", this);
111
127
 
112
128
  this .set_position__ ();
@@ -114,33 +130,21 @@ function (Fields,
114
130
  },
115
131
  set_position__: function ()
116
132
  {
117
- this .position = this ._position .getValue ()
118
- },
119
- set_direction__: function ()
120
- {
121
- this .direction .assign (this ._direction .getValue ()) .normalize ();
133
+ const position = this ._position .getValue ();
122
134
 
123
- if (this .direction .equals (Vector3 .Zero))
124
- this .getRandomVelocity = this .getSphericalRandomVelocity;
125
- else
126
- delete this .getRandomVelocity;
127
- },
128
- getRandomPosition: function (position)
129
- {
130
- return position .assign (this .position);
135
+ this .setUniform ("uniform3f", "position", position .x, position .y, position .z);
131
136
  },
132
- getRandomVelocity: function (velocity)
137
+ set_direction__: (function ()
133
138
  {
134
- var
135
- direction = this .direction,
136
- speed = this .getRandomSpeed ();
139
+ const direction = new Vector3 (0, 0, 0);
137
140
 
138
- velocity .x = direction .x * speed;
139
- velocity .y = direction .y * speed;
140
- velocity .z = direction .z * speed;
141
+ return function ()
142
+ {
143
+ direction .assign (this ._direction .getValue ()) .normalize ();
141
144
 
142
- return velocity;
143
- },
145
+ this .setUniform ("uniform3f", "direction", direction .x, direction .y, direction .z);
146
+ };
147
+ })(),
144
148
  });
145
149
 
146
150
  return PointEmitter;
@@ -55,7 +55,6 @@ define ([
55
55
  "x_ite/Components/Rendering/IndexedLineSet",
56
56
  "x_ite/Base/X3DConstants",
57
57
  "standard/Math/Numbers/Vector3",
58
- "standard/Math/Algorithm",
59
58
  ],
60
59
  function (Fields,
61
60
  X3DFieldDefinition,
@@ -63,8 +62,7 @@ function (Fields,
63
62
  X3DParticleEmitterNode,
64
63
  IndexedLineSet,
65
64
  X3DConstants,
66
- Vector3,
67
- Algorithm)
65
+ Vector3)
68
66
  {
69
67
  "use strict";
70
68
 
@@ -74,28 +72,69 @@ function (Fields,
74
72
 
75
73
  this .addType (X3DConstants .PolylineEmitter);
76
74
 
77
- this ._speed .setUnit ("speed");
78
- this ._mass .setUnit ("mass");
79
- this ._surfaceArea .setUnit ("area");
75
+ this .polylinesNode = new IndexedLineSet (executionContext);
76
+ this .polylinesArray = new Float32Array ();
80
77
 
81
- this .direction = new Vector3 (0, 0, 0);
82
- this .polylineNode = new IndexedLineSet (executionContext);
83
- this .polylines = [ ];
84
- this .lengthSoFarArray = [ 0 ];
78
+ this .addSampler ("polylines");
79
+
80
+ this .addUniform ("direction", "uniform vec3 direction;");
81
+ this .addUniform ("verticesIndex", "uniform int verticesIndex;");
82
+ this .addUniform ("polylines", "uniform sampler2D polylines;");
83
+
84
+ this .addFunction (/* glsl */ `vec3 getRandomVelocity ()
85
+ {
86
+ if (direction == vec3 (0.0))
87
+ return getRandomSphericalVelocity ();
88
+
89
+ else
90
+ return direction * getRandomSpeed ();
91
+ }`);
92
+
93
+ this .addFunction (/* glsl */ `vec4 getRandomPosition ()
94
+ {
95
+ if (verticesIndex < 0)
96
+ {
97
+ return vec4 (NaN);
98
+ }
99
+ else
100
+ {
101
+ // Determine index0, index1 and weight.
102
+
103
+ float lastLengthSoFar = texelFetch (polylines, verticesIndex - 1, 0) .x;
104
+ float fraction = random () * lastLengthSoFar;
105
+
106
+ int index0 = 0;
107
+ int index1 = 0;
108
+ float weight = 0.0;
109
+
110
+ interpolate (polylines, verticesIndex, fraction, index0, index1, weight);
111
+
112
+ // Interpolate and return position.
113
+
114
+ index0 *= 2;
115
+ index1 = index0 + 1;
116
+
117
+ vec4 vertex0 = texelFetch (polylines, verticesIndex + index0, 0);
118
+ vec4 vertex1 = texelFetch (polylines, verticesIndex + index1, 0);
119
+
120
+ return mix (vertex0, vertex1, weight);
121
+ }
122
+ }`);
85
123
  }
86
124
 
87
125
  PolylineEmitter .prototype = Object .assign (Object .create (X3DParticleEmitterNode .prototype),
88
126
  {
89
127
  constructor: PolylineEmitter,
90
128
  [Symbol .for ("X_ITE.X3DBaseNode.fieldDefinitions")]: new FieldDefinitionArray ([
91
- new X3DFieldDefinition (X3DConstants .inputOutput, "metadata", new Fields .SFNode ()),
92
- new X3DFieldDefinition (X3DConstants .inputOutput, "direction", new Fields .SFVec3f (0, 1, 0)),
93
- new X3DFieldDefinition (X3DConstants .inputOutput, "speed", new Fields .SFFloat ()),
94
- new X3DFieldDefinition (X3DConstants .inputOutput, "variation", new Fields .SFFloat (0.25)),
95
- new X3DFieldDefinition (X3DConstants .initializeOnly, "mass", new Fields .SFFloat ()),
96
- new X3DFieldDefinition (X3DConstants .initializeOnly, "surfaceArea", new Fields .SFFloat ()),
97
- new X3DFieldDefinition (X3DConstants .inputOutput, "coordIndex", new Fields .MFInt32 (-1)),
98
- new X3DFieldDefinition (X3DConstants .inputOutput, "coord", new Fields .SFNode ()),
129
+ new X3DFieldDefinition (X3DConstants .inputOutput, "metadata", new Fields .SFNode ()),
130
+ new X3DFieldDefinition (X3DConstants .inputOutput, "on", new Fields .SFBool (true)),
131
+ new X3DFieldDefinition (X3DConstants .inputOutput, "direction", new Fields .SFVec3f (0, 1, 0)),
132
+ new X3DFieldDefinition (X3DConstants .inputOutput, "speed", new Fields .SFFloat ()),
133
+ new X3DFieldDefinition (X3DConstants .inputOutput, "variation", new Fields .SFFloat (0.25)),
134
+ new X3DFieldDefinition (X3DConstants .inputOutput, "mass", new Fields .SFFloat ()),
135
+ new X3DFieldDefinition (X3DConstants .inputOutput, "surfaceArea", new Fields .SFFloat ()),
136
+ new X3DFieldDefinition (X3DConstants .inputOutput, "coordIndex", new Fields .MFInt32 (-1)),
137
+ new X3DFieldDefinition (X3DConstants .inputOutput, "coord", new Fields .SFNode ()),
99
138
  ]),
100
139
  getTypeName: function ()
101
140
  {
@@ -113,147 +152,92 @@ function (Fields,
113
152
  {
114
153
  X3DParticleEmitterNode .prototype .initialize .call (this);
115
154
 
155
+ const browser = this .getBrowser ();
156
+
157
+ if (browser .getContext () .getVersion () < 2)
158
+ return;
159
+
160
+ // Create GL stuff.
161
+
162
+ this .polylinesTexture = this .createTexture ();
163
+
164
+ // Initialize fields.
165
+
116
166
  this ._direction .addInterest ("set_direction__", this);
117
167
 
118
- this ._coordIndex .addFieldInterest (this .polylineNode ._coordIndex);
119
- this ._coord .addFieldInterest (this .polylineNode ._coord);
168
+ this ._coordIndex .addFieldInterest (this .polylinesNode ._coordIndex);
169
+ this ._coord .addFieldInterest (this .polylinesNode ._coord);
120
170
 
121
- this .polylineNode ._coordIndex = this ._coordIndex;
122
- this .polylineNode ._coord = this ._coord;
171
+ this .polylinesNode ._coordIndex = this ._coordIndex;
172
+ this .polylinesNode ._coord = this ._coord;
123
173
 
124
- this .polylineNode ._rebuild .addInterest ("set_polyline", this);
125
- this .polylineNode .setPrivate (true);
126
- this .polylineNode .setup ();
174
+ this .polylinesNode ._rebuild .addInterest ("set_polyline", this);
175
+ this .polylinesNode .setPrivate (true);
176
+ this .polylinesNode .setup ();
127
177
 
128
178
  this .set_direction__ ();
129
179
  this .set_polyline ();
130
180
  },
131
- set_direction__: function ()
181
+ set_direction__: (function ()
132
182
  {
133
- this .direction .assign (this ._direction .getValue ()) .normalize ();
183
+ const direction = new Vector3 (0, 0, 0);
134
184
 
135
- if (this .direction .equals (Vector3 .Zero))
136
- this .getRandomVelocity = this .getSphericalRandomVelocity;
137
- else
138
- delete this .getRandomVelocity;
139
- },
185
+ return function ()
186
+ {
187
+ direction .assign (this ._direction .getValue ()) .normalize ();
188
+
189
+ this .setUniform ("uniform3f", "direction", direction .x, direction .y, direction .z);
190
+ };
191
+ })(),
140
192
  set_polyline: (function ()
141
193
  {
142
- var
194
+ const
143
195
  vertex1 = new Vector3 (0, 0, 0),
144
196
  vertex2 = new Vector3 (0, 0, 0);
145
197
 
146
198
  return function ()
147
199
  {
148
- var vertices = this .vertices = this .polylineNode .getVertices () .getValue ();
200
+ const
201
+ gl = this .getBrowser () .getContext (),
202
+ vertices = this .polylinesNode .getVertices () .getValue (),
203
+ numVertices = vertices .length / 4,
204
+ numLengthSoFar = numVertices / 2 + 1,
205
+ polylineArraySize = Math .ceil (Math .sqrt (numLengthSoFar + numVertices));
149
206
 
150
- if (vertices .length)
151
- {
152
- delete this .getRandomPosition;
207
+ const verticesIndex = numLengthSoFar;
153
208
 
154
- var
155
- lengthSoFar = 0,
156
- lengthSoFarArray = this .lengthSoFarArray;
209
+ let polylinesArray = this .polylinesArray;
157
210
 
158
- lengthSoFarArray .length = 1;
211
+ if (polylinesArray .length < polylineArraySize * polylineArraySize * 4)
212
+ polylinesArray = this .polylinesArray = new Float32Array (polylineArraySize * polylineArraySize * 4);
159
213
 
160
- for (var i = 0, length = vertices .length; i < length; i += 8)
161
- {
162
- vertex1 .set (vertices [i], vertices [i + 1], vertices [i + 2]);
163
- vertex2 .set (vertices [i + 4], vertices [i + 5], vertices [i + 6]);
214
+ let lengthSoFar = 0;
164
215
 
165
- lengthSoFar += vertex2 .subtract (vertex1) .abs ();
166
- lengthSoFarArray .push (lengthSoFar);
167
- }
168
- }
169
- else
216
+ for (let i = 0, length = vertices .length; i < length; i += 8)
170
217
  {
171
- this .getRandomPosition = getPosition;
172
- }
173
- };
174
- })(),
175
- getRandomPosition: function (position)
176
- {
177
- // Determine index0 and weight.
218
+ vertex1 .set (vertices [i], vertices [i + 1], vertices [i + 2]);
219
+ vertex2 .set (vertices [i + 4], vertices [i + 5], vertices [i + 6]);
178
220
 
179
- var
180
- lengthSoFarArray = this .lengthSoFarArray,
181
- length = lengthSoFarArray .length,
182
- fraction = Math .random () * lengthSoFarArray .at (-1),
183
- index0 = 0,
184
- index1 = 0,
185
- weight = 0;
186
-
187
- if (length == 1 || fraction <= lengthSoFarArray [0])
188
- {
189
- index0 = 0;
190
- weight = 0;
191
- }
192
- else if (fraction >= lengthSoFarArray .at (-1))
193
- {
194
- index0 = length - 2;
195
- weight = 1;
196
- }
197
- else
198
- {
199
- var index = Algorithm .upperBound (lengthSoFarArray, 0, length, fraction, Algorithm .less);
221
+ polylinesArray [i / 2 + 4] = lengthSoFar += vertex2 .subtract (vertex1) .magnitude ();
222
+ }
200
223
 
201
- if (index < length)
202
- {
203
- index1 = index;
204
- index0 = index - 1;
224
+ polylinesArray .set (vertices, verticesIndex * 4);
205
225
 
206
- var
207
- key0 = lengthSoFarArray [index0],
208
- key1 = lengthSoFarArray [index1];
226
+ this .setUniform ("uniform1i", "verticesIndex", numVertices ? verticesIndex : -1);
209
227
 
210
- weight = Algorithm .clamp ((fraction - key0) / (key1 - key0), 0, 1);
211
- }
212
- else
228
+ if (polylineArraySize)
213
229
  {
214
- index0 = 0;
215
- weight = 0;
230
+ gl .bindTexture (gl .TEXTURE_2D, this .polylinesTexture);
231
+ gl .texImage2D (gl .TEXTURE_2D, 0, gl .RGBA32F, polylineArraySize, polylineArraySize, 0, gl .RGBA, gl .FLOAT, polylinesArray);
216
232
  }
217
- }
218
-
219
- // Interpolate and set position.
220
-
221
- index0 *= 8;
222
- index1 = index0 + 4;
223
-
224
- var
225
- vertices = this .vertices,
226
- x1 = vertices [index0],
227
- y1 = vertices [index0 + 1],
228
- z1 = vertices [index0 + 2],
229
- x2 = vertices [index1],
230
- y2 = vertices [index1 + 1],
231
- z2 = vertices [index1 + 2];
232
-
233
- position .x = x1 + weight * (x2 - x1);
234
- position .y = y1 + weight * (y2 - y1);
235
- position .z = z1 + weight * (z2 - z1);
236
-
237
- return position;
238
- },
239
- getRandomVelocity: function (velocity)
233
+ };
234
+ })(),
235
+ activateTextures: function (gl, program)
240
236
  {
241
- var
242
- direction = this .direction,
243
- speed = this .getRandomSpeed ();
244
-
245
- velocity .x = direction .x * speed;
246
- velocity .y = direction .y * speed;
247
- velocity .z = direction .z * speed;
248
-
249
- return velocity;
250
- },
237
+ gl .activeTexture (gl .TEXTURE0 + program .polylinesTextureUnit);
238
+ gl .bindTexture (gl .TEXTURE_2D, this .polylinesTexture);
239
+ },
251
240
  });
252
241
 
253
- function getPosition (position)
254
- {
255
- return position .set (0, 0, 0);
256
- }
257
-
258
242
  return PolylineEmitter;
259
243
  });