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
@@ -80,12 +80,12 @@ function (Fields,
80
80
  new X3DFieldDefinition (X3DConstants .inputOutput, "borderWidth", new Fields .SFInt32 ()),
81
81
  new X3DFieldDefinition (X3DConstants .inputOutput, "anisotropicDegree", new Fields .SFFloat (1)),
82
82
  new X3DFieldDefinition (X3DConstants .initializeOnly, "generateMipMaps", new Fields .SFBool ()),
83
- new X3DFieldDefinition (X3DConstants .inputOutput, "minificationFilter", new Fields .SFString ("FASTEST")),
84
- new X3DFieldDefinition (X3DConstants .inputOutput, "magnificationFilter", new Fields .SFString ("FASTEST")),
83
+ new X3DFieldDefinition (X3DConstants .inputOutput, "minificationFilter", new Fields .SFString ("DEFAULT")),
84
+ new X3DFieldDefinition (X3DConstants .inputOutput, "magnificationFilter", new Fields .SFString ("DEFAULT")),
85
85
  new X3DFieldDefinition (X3DConstants .inputOutput, "boundaryModeS", new Fields .SFString ("REPEAT")),
86
86
  new X3DFieldDefinition (X3DConstants .inputOutput, "boundaryModeT", new Fields .SFString ("REPEAT")),
87
87
  new X3DFieldDefinition (X3DConstants .inputOutput, "boundaryModeR", new Fields .SFString ("REPEAT")),
88
- new X3DFieldDefinition (X3DConstants .inputOutput, "textureCompression", new Fields .SFString ("FASTEST")),
88
+ new X3DFieldDefinition (X3DConstants .inputOutput, "textureCompression", new Fields .SFString ("DEFAULT")),
89
89
  new X3DFieldDefinition (X3DConstants .inputOutput, "texturePriority", new Fields .SFFloat ()),
90
90
  ]),
91
91
  getTypeName: function ()
@@ -201,7 +201,7 @@ function (Fields,
201
201
  const
202
202
  browser = this .getBrowser (),
203
203
  gl = browser .getContext (),
204
- compressedTexture = browser .getExtension ("WEBGL_compressed_texture_etc"), // TODO: find suitable compression.
204
+ compressedTexture = gl .getExtension ("WEBGL_compressed_texture_etc"), // TODO: find suitable compression.
205
205
  textureCompression = compressedTexture ? compressedTexture [textureCompressions .get (this ._textureCompression .getValue ())] : undefined;
206
206
 
207
207
  if (textureCompression !== undefined)
@@ -78,15 +78,15 @@ function (X3DTextureNode,
78
78
  {
79
79
  X3DTextureNode .prototype .initialize .call (this);
80
80
 
81
- this ._textureProperties .addInterest ("set_textureProperties__", this);
81
+ this ._textureProperties .addInterest ("set_textureProperties__", this, true);
82
82
 
83
83
  const gl = this .getBrowser () .getContext ();
84
84
 
85
85
  this .texture = gl .createTexture ();
86
86
 
87
- this .set_textureProperties__ ();
87
+ this .set_textureProperties__ (false);
88
88
  },
89
- set_textureProperties__: function ()
89
+ set_textureProperties__: function (update)
90
90
  {
91
91
  if (this .texturePropertiesNode)
92
92
  this .texturePropertiesNode .removeInterest ("updateTextureProperties", this);
@@ -98,7 +98,8 @@ function (X3DTextureNode,
98
98
 
99
99
  this .texturePropertiesNode .addInterest ("updateTextureProperties", this);
100
100
 
101
- this .updateTextureProperties ();
101
+ if (update)
102
+ this .updateTextureProperties ();
102
103
  },
103
104
  getTexture: function ()
104
105
  {
@@ -124,46 +124,37 @@ function (X3DSingleTextureNode,
124
124
  },
125
125
  setTexture: function (width, height, transparent, data, flipY)
126
126
  {
127
- try
128
- {
129
- this .width = width;
130
- this .height = height;
131
- this .flipY = flipY;
132
- this .data = data;
133
-
134
- const gl = this .getBrowser () .getContext ();
135
-
136
- gl .pixelStorei (gl .UNPACK_FLIP_Y_WEBGL, flipY);
137
- gl .pixelStorei (gl .UNPACK_ALIGNMENT, 1);
138
- gl .bindTexture (gl .TEXTURE_2D, this .getTexture ());
139
- gl .texImage2D (gl .TEXTURE_2D, 0, gl .RGBA, width, height, 0, gl .RGBA, gl .UNSIGNED_BYTE, data);
140
-
141
- this .setTransparent (transparent);
142
- this .updateTextureProperties ();
143
- this .addNodeEvent ();
144
- }
145
- catch (error)
146
- { }
127
+ this .width = width;
128
+ this .height = height;
129
+ this .flipY = flipY;
130
+ this .data = data;
131
+
132
+ const gl = this .getBrowser () .getContext ();
133
+
134
+ gl .pixelStorei (gl .UNPACK_FLIP_Y_WEBGL, flipY);
135
+ gl .bindTexture (gl .TEXTURE_2D, this .getTexture ());
136
+ gl .texImage2D (gl .TEXTURE_2D, 0, gl .RGBA, width, height, 0, gl .RGBA, gl .UNSIGNED_BYTE, data);
137
+ gl .pixelStorei (gl .UNPACK_FLIP_Y_WEBGL, false);
138
+
139
+ this .setTransparent (transparent);
140
+ this .updateTextureProperties ();
141
+ this .addNodeEvent ();
147
142
  },
148
143
  updateTexture: function (data, flipY)
149
144
  {
150
- try
151
- {
152
- this .data = data;
145
+ this .data = data;
153
146
 
154
- const gl = this .getBrowser () .getContext ();
147
+ const gl = this .getBrowser () .getContext ();
155
148
 
156
- gl .pixelStorei (gl .UNPACK_FLIP_Y_WEBGL, flipY);
157
- gl .bindTexture (gl .TEXTURE_2D, this .getTexture ());
158
- gl .texSubImage2D (gl .TEXTURE_2D, 0, 0, 0, gl .RGBA, gl .UNSIGNED_BYTE, data);
149
+ gl .pixelStorei (gl .UNPACK_FLIP_Y_WEBGL, flipY);
150
+ gl .bindTexture (gl .TEXTURE_2D, this .getTexture ());
151
+ gl .texSubImage2D (gl .TEXTURE_2D, 0, 0, 0, gl .RGBA, gl .UNSIGNED_BYTE, data);
152
+ gl .pixelStorei (gl .UNPACK_FLIP_Y_WEBGL, false);
159
153
 
160
- if (this .texturePropertiesNode ._generateMipMaps .getValue ())
161
- gl .generateMipmap (gl .TEXTURE_2D);
154
+ if (this .texturePropertiesNode ._generateMipMaps .getValue ())
155
+ gl .generateMipmap (gl .TEXTURE_2D);
162
156
 
163
- this .addNodeEvent ();
164
- }
165
- catch (error)
166
- { }
157
+ this .addNodeEvent ();
167
158
  },
168
159
  updateTextureProperties: function ()
169
160
  {
@@ -162,12 +162,12 @@ function (Fields,
162
162
  },
163
163
  getTexCoord: function (array)
164
164
  {
165
- const point = this .point;
165
+ const
166
+ point = this .point,
167
+ length = this .length;
166
168
 
167
- for (let i = 0, p = 0, length = this .length; i < length; ++ i, p += 3)
168
- array [i] = new Vector4 (point [p], point [p + 1], point [p + 2], 1);
169
-
170
- array .length = this .length;
169
+ for (let i = 0, p = 0; i < length; ++ i, p += 3)
170
+ array .push (point [p], point [p + 1], point [p + 2], 1);
171
171
 
172
172
  return array;
173
173
  },
@@ -162,12 +162,12 @@ function (Fields,
162
162
  },
163
163
  getTexCoord: function (array)
164
164
  {
165
- const point = this .point;
165
+ const
166
+ point = this .point,
167
+ length = this .length;
166
168
 
167
- for (let i = 0, p = 0, length = this .length; i < length; ++ i, p += 4)
168
- array [i] = new Vector4 (point [p], point [p + 1], point [p + 2], point [p + 3]);
169
-
170
- array .length = this .length;
169
+ for (let i = 0, p = 0; i < length; ++ i, p += 4)
170
+ array .push (point [p], point [p + 1], point [p + 2], point [p + 3]);
171
171
 
172
172
  return array;
173
173
  },
@@ -134,29 +134,22 @@ function (X3DSingleTextureNode,
134
134
  },
135
135
  setTexture: function (width, height, depth, transparent, format, data)
136
136
  {
137
- try
138
- {
139
- this .width = width;
140
- this .height = height;
141
- this .depth = depth;
142
- this .data = data;
137
+ this .width = width;
138
+ this .height = height;
139
+ this .depth = depth;
140
+ this .data = data;
143
141
 
144
- const gl = this .getBrowser () .getContext ();
142
+ const gl = this .getBrowser () .getContext ();
145
143
 
146
- if (gl .getVersion () < 2)
147
- return;
144
+ if (gl .getVersion () < 2)
145
+ return;
148
146
 
149
- gl .pixelStorei (gl .UNPACK_FLIP_Y_WEBGL, false);
150
- gl .pixelStorei (gl .UNPACK_ALIGNMENT, 1);
151
- gl .bindTexture (gl .TEXTURE_3D, this .getTexture ());
152
- gl .texImage3D (gl .TEXTURE_3D, 0, format, width, height, depth, 0, format, gl .UNSIGNED_BYTE, data);
147
+ gl .bindTexture (gl .TEXTURE_3D, this .getTexture ());
148
+ gl .texImage3D (gl .TEXTURE_3D, 0, format, width, height, depth, 0, format, gl .UNSIGNED_BYTE, data);
153
149
 
154
- this .setTransparent (transparent);
155
- this .updateTextureProperties ();
156
- this .addNodeEvent ();
157
- }
158
- catch (error)
159
- { }
150
+ this .setTransparent (transparent);
151
+ this .updateTextureProperties ();
152
+ this .addNodeEvent ();
160
153
  },
161
154
  updateTextureProperties: function ()
162
155
  {
@@ -71,14 +71,14 @@ function (Fields,
71
71
 
72
72
  this .addType (X3DConstants .X3DVolumeDataNode);
73
73
 
74
- this .proximitySensorNode = executionContext .createNode ("ProximitySensor", false);
75
- this .transformNode = executionContext .createNode ("Transform", false);
76
- this .shapeNode = executionContext .createNode ("Shape", false);
77
- this .appearanceNode = executionContext .createNode ("Appearance", false);
78
- this .textureTransformNode = executionContext .createNode ("TextureTransform3D", false);
79
- this .geometryNode = executionContext .createNode ("QuadSet", false);
74
+ this .proximitySensorNode = executionContext .createNode ("ProximitySensor", false);
75
+ this .transformNode = executionContext .createNode ("Transform", false);
76
+ this .shapeNode = executionContext .createNode ("Shape", false);
77
+ this .appearanceNode = executionContext .createNode ("Appearance", false);
78
+ this .textureTransformNode = executionContext .createNode ("TextureTransform3D", false);
79
+ this .geometryNode = executionContext .createNode ("QuadSet", false);
80
80
  this .textureCoordinateNode = executionContext .createNode ("TextureCoordinate3D", false);
81
- this .coordinateNode = executionContext .createNode ("Coordinate", false);
81
+ this .coordinateNode = executionContext .createNode ("Coordinate", false);
82
82
 
83
83
  this .setCameraObject (true);
84
84
  }
@@ -185,7 +185,7 @@ function (Fields,
185
185
  {
186
186
  var
187
187
  NUM_PLANES = this .getNumPlanes (),
188
- size = this ._dimensions .getValue () .abs (),
188
+ size = this ._dimensions .getValue () .magnitude (),
189
189
  size1_2 = size / 2,
190
190
  points = [ ];
191
191
 
@@ -95,8 +95,8 @@ function (DEBUG,
95
95
  SupportedNodes .addAbstractType (typeName, component .abstractTypes [typeName]);
96
96
  }
97
97
 
98
- if (component .browser)
99
- X3DBrowserContext .addContext (component .browser);
98
+ if (component .context)
99
+ X3DBrowserContext .addContext (component .context);
100
100
 
101
101
  if (component .name)
102
102
  {
@@ -62,7 +62,7 @@ function ($)
62
62
  {
63
63
  $(function ()
64
64
  {
65
- const elements = $("X3DCanvas");
65
+ const elements = $("x3d-canvas, X3DCanvas");
66
66
 
67
67
  this .show (elements, error);
68
68
 
@@ -83,10 +83,16 @@ function ($)
83
83
  if (consoleElement .length)
84
84
  consoleElement .append (document .createTextNode (error));
85
85
 
86
- elements .addClass ("x_ite-browser-fallback");
86
+ // X3DCanvas
87
87
  elements .children (".x_ite-private-browser") .hide ();
88
- elements .children (":not(.x_ite-private-browser)") .addClass ("x_ite-fallback");
89
88
  elements .children (":not(.x_ite-private-browser)") .show ();
89
+
90
+ // x3d-canvas
91
+ elements .each (function (i, e)
92
+ {
93
+ if (e .shadowRoot)
94
+ e .shadowRoot .appendChild (document .createElement ("slot"));
95
+ });
90
96
  },
91
97
  };
92
98
 
@@ -80,6 +80,10 @@ function (Color3,
80
80
  SFColor .prototype = Object .assign (Object .create (X3DField .prototype),
81
81
  {
82
82
  constructor: SFColor,
83
+ [Symbol .iterator]: function* ()
84
+ {
85
+ yield* this .getValue ();
86
+ },
83
87
  copy: function ()
84
88
  {
85
89
  return new SFColor (this .getValue () .copy ());
@@ -80,6 +80,10 @@ function (X3DField,
80
80
  SFColorRGBA .prototype = Object .assign (Object .create (X3DField .prototype),
81
81
  {
82
82
  constructor: SFColorRGBA,
83
+ [Symbol .iterator]: function* ()
84
+ {
85
+ yield* this .getValue ();
86
+ },
83
87
  copy: function ()
84
88
  {
85
89
  return new SFColorRGBA (this .getValue () .copy ());
@@ -195,19 +195,10 @@ function (X3DField,
195
195
  },
196
196
  toStream: function (stream)
197
197
  {
198
- const
199
- array = this .array,
200
- int = new SFInt32 ();
201
-
202
198
  stream .string += this .width + " " + this .height + " " + this .comp;
203
199
 
204
- for (let i = 0, length = this .width * this .height; i < length; ++ i)
205
- {
206
- stream .string += " 0x";
207
-
208
- int .set (array [i]);
209
- int .toXMLStream (stream);
210
- }
200
+ for (const value of this .array)
201
+ stream .string += " 0x" + value .toString (16);
211
202
  },
212
203
  toVRMLStream: function (stream)
213
204
  {
@@ -58,6 +58,10 @@ function (X3DField)
58
58
  {
59
59
  return Object .assign (Object .create (X3DField .prototype),
60
60
  {
61
+ [Symbol .iterator]: function* ()
62
+ {
63
+ yield* this .getValue ();
64
+ },
61
65
  copy: function ()
62
66
  {
63
67
  return new (this .constructor) (this .getValue () .copy ());
@@ -90,6 +90,10 @@ function (SFVec3,
90
90
  SFRotation .prototype = Object .assign (Object .create (X3DField .prototype),
91
91
  {
92
92
  constructor: SFRotation,
93
+ [Symbol .iterator]: function* ()
94
+ {
95
+ yield* this .getValue ();
96
+ },
93
97
  copy: function ()
94
98
  {
95
99
  return new SFRotation (this .getValue () .copy ());
@@ -82,6 +82,10 @@ function (X3DField,
82
82
  SFString .prototype = Object .assign (Object .create (X3DField .prototype),
83
83
  {
84
84
  constructor: SFString,
85
+ [Symbol .iterator]: function* ()
86
+ {
87
+ yield* this .getValue ();
88
+ },
85
89
  copy: function ()
86
90
  {
87
91
  return new SFString (this .getValue ());
@@ -60,6 +60,10 @@ function (X3DField,
60
60
  {
61
61
  return Object .assign (Object .create (X3DField .prototype),
62
62
  {
63
+ [Symbol .iterator]: function* ()
64
+ {
65
+ yield* this .getValue ();
66
+ },
63
67
  copy: function ()
64
68
  {
65
69
  return new (this .constructor) (this .getValue () .copy ());
@@ -76,6 +80,10 @@ function (X3DField,
76
80
  {
77
81
  this .getValue () .assign (value);
78
82
  },
83
+ abs: function ()
84
+ {
85
+ return new (this .constructor) (Type .abs (this .getValue ()));
86
+ },
79
87
  add: function (vector)
80
88
  {
81
89
  return new (this .constructor) (Type .add (this .getValue (), vector .getValue ()));
@@ -96,14 +104,26 @@ function (X3DField,
96
104
  {
97
105
  return this .getValue () .dot (vector .getValue ());
98
106
  },
107
+ inverse: function ()
108
+ {
109
+ return new (this .constructor) (Type .inverse (this .getValue ()));
110
+ },
99
111
  length: function ()
100
112
  {
101
- return this .getValue () .abs ();
113
+ return this .getValue () .magnitude ();
102
114
  },
103
115
  lerp: function (destination, t)
104
116
  {
105
117
  return new (this .constructor) (Type .lerp (this .getValue (), destination, t));
106
118
  },
119
+ max: function (vector)
120
+ {
121
+ return new (this .constructor) (Type .max (this .getValue (), vector .getValue ()));
122
+ },
123
+ min: function (vector)
124
+ {
125
+ return new (this .constructor) (Type .min (this .getValue (), vector .getValue ()));
126
+ },
107
127
  multiply: function (value)
108
128
  {
109
129
  return new (this .constructor) (Type .multiply (this .getValue (), value));
@@ -114,7 +134,7 @@ function (X3DField,
114
134
  },
115
135
  negate: function ()
116
136
  {
117
- return new (this .constructor) (Type .negate (this .getValue () .copy ()));
137
+ return new (this .constructor) (Type .negate (this .getValue ()));
118
138
  },
119
139
  normalize: function (vector)
120
140
  {
@@ -863,7 +863,7 @@ function ($,
863
863
  return;
864
864
  }
865
865
 
866
- //console .error (error);
866
+ console .error (error);
867
867
 
868
868
  console .error ("XML Parser Error: " + error .message);
869
869
  }
@@ -67,14 +67,14 @@ function (ViewVolume,
67
67
  this .height = height;
68
68
  this .array = new Uint8Array (width * height * 4);
69
69
 
70
- // The frame buffer.
70
+ // Create frame buffer.
71
71
 
72
72
  this .lastBuffer = gl .getParameter (gl .FRAMEBUFFER_BINDING);
73
73
  this .buffer = gl .createFramebuffer ();
74
74
 
75
75
  gl .bindFramebuffer (gl .FRAMEBUFFER, this .buffer);
76
76
 
77
- // The depth texture
77
+ // Create color texture.
78
78
 
79
79
  this .colorTexture = gl .createTexture ();
80
80
 
@@ -87,9 +87,9 @@ function (ViewVolume,
87
87
 
88
88
  gl .framebufferTexture2D (gl .FRAMEBUFFER, gl .COLOR_ATTACHMENT0, gl .TEXTURE_2D, this .colorTexture, 0);
89
89
 
90
- // The depth buffer
90
+ // Create depth buffer.
91
91
 
92
- if (gl .getVersion () >= 2 || browser .getExtension ("WEBGL_depth_texture"))
92
+ if (gl .getVersion () >= 2 || gl .getExtension ("WEBGL_depth_texture"))
93
93
  {
94
94
  this .depthTexture = gl .createTexture ();
95
95
 
@@ -103,7 +103,7 @@ function (ViewVolume,
103
103
  const internalFormat = gl .getVersion () >= 2 ? gl .DEPTH_COMPONENT24 : gl .DEPTH_COMPONENT;
104
104
 
105
105
  gl .texImage2D (gl .TEXTURE_2D, 0, internalFormat, width, height, 0, gl .DEPTH_COMPONENT, gl .UNSIGNED_INT, null);
106
- gl.framebufferTexture2D (gl .FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, this .depthTexture, 0);
106
+ gl .framebufferTexture2D (gl .FRAMEBUFFER, gl .DEPTH_ATTACHMENT, gl .TEXTURE_2D, this .depthTexture, 0);
107
107
  }
108
108
  else
109
109
  {
@@ -114,10 +114,11 @@ function (ViewVolume,
114
114
  gl .framebufferRenderbuffer (gl .FRAMEBUFFER, gl .DEPTH_ATTACHMENT, gl .RENDERBUFFER, this .depthBuffer);
115
115
  }
116
116
 
117
- // Always check that our framebuffer is ok
117
+ // Always check that our framebuffer is ok.
118
118
 
119
119
  const complete = gl .checkFramebufferStatus (gl .FRAMEBUFFER) === gl .FRAMEBUFFER_COMPLETE;
120
120
 
121
+ gl .bindTexture (gl .TEXTURE_2D, null);
121
122
  gl .bindFramebuffer (gl .FRAMEBUFFER, this .lastBuffer);
122
123
 
123
124
  if (complete)
@@ -165,46 +166,39 @@ function (ViewVolume,
165
166
 
166
167
  return function (projectionMatrix, viewport)
167
168
  {
168
- try
169
- {
170
- const
171
- gl = this .browser .getContext (),
172
- array = this .array,
173
- width = this .width,
174
- height = this .height;
169
+ const
170
+ gl = this .browser .getContext (),
171
+ array = this .array,
172
+ width = this .width,
173
+ height = this .height;
175
174
 
176
- let
177
- winx = 0,
178
- winy = 0,
179
- winz = Number .POSITIVE_INFINITY;
175
+ let
176
+ winx = 0,
177
+ winy = 0,
178
+ winz = Number .POSITIVE_INFINITY;
180
179
 
181
- invProjectionMatrix .assign (projectionMatrix) .inverse ();
180
+ invProjectionMatrix .assign (projectionMatrix) .inverse ();
182
181
 
183
- gl .readPixels (0, 0, width, height, gl .RGBA, gl .UNSIGNED_BYTE, array);
182
+ gl .readPixels (0, 0, width, height, gl .RGBA, gl .UNSIGNED_BYTE, array);
184
183
 
185
- for (let wy = 0, i = 0; wy < height; ++ wy)
184
+ for (let wy = 0, i = 0; wy < height; ++ wy)
185
+ {
186
+ for (let wx = 0; wx < width; ++ wx, i += 4)
186
187
  {
187
- for (let wx = 0; wx < width; ++ wx, i += 4)
188
+ const wz = array [i] / 255 + array [i + 1] / (255 * 255) + array [i + 2] / (255 * 255 * 255) + array [i + 3] / (255 * 255 * 255 * 255);
189
+
190
+ if (wz < winz)
188
191
  {
189
- const wz = array [i] / 255 + array [i + 1] / (255 * 255) + array [i + 2] / (255 * 255 * 255) + array [i + 3] / (255 * 255 * 255 * 255);
190
-
191
- if (wz < winz)
192
- {
193
- winx = wx;
194
- winy = wy;
195
- winz = wz;
196
- }
192
+ winx = wx;
193
+ winy = wy;
194
+ winz = wz;
197
195
  }
198
196
  }
197
+ }
199
198
 
200
- ViewVolume .unProjectPointMatrix (winx, winy, winz, invProjectionMatrix, viewport, point);
199
+ ViewVolume .unProjectPointMatrix (winx, winy, winz, invProjectionMatrix, viewport, point);
201
200
 
202
- return point .z;
203
- }
204
- catch (error)
205
- {
206
- return 0;
207
- }
201
+ return point .z;
208
202
  };
209
203
  })(),
210
204
  bind: function ()
@@ -218,8 +212,21 @@ function (ViewVolume,
218
212
  unbind: function ()
219
213
  {
220
214
  const gl = this .browser .getContext ();
215
+
221
216
  gl .bindFramebuffer (gl .FRAMEBUFFER, this .lastBuffer);
222
217
  },
218
+ delete: function ()
219
+ {
220
+ const gl = this .browser .getContext ();
221
+
222
+ gl .deleteFramebuffer (this .buffer);
223
+ gl .deleteTexture (this .colorTexture);
224
+
225
+ if (gl .getVersion () >= 2 || gl .getExtension ("WEBGL_depth_texture"))
226
+ gl .deleteTexture (this .depthTexture);
227
+ else
228
+ gl .deleteRenderbuffer (this .depthBuffer);
229
+ },
223
230
  };
224
231
 
225
232
  for (const key of Reflect .ownKeys (TextureBuffer .prototype))