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
@@ -24,7 +24,7 @@ main ()
24
24
  {
25
25
  vec4 position = x3d_ModelViewMatrix * x3d_Vertex;
26
26
  vertex = position .xyz;
27
- normal = normalize (x3d_NormalMatrix * x3d_Normal);
27
+ normal = x3d_NormalMatrix * x3d_Normal;
28
28
  texCoord0 = x3d_TexCoord0;
29
29
  texCoord1 = x3d_TexCoord1;
30
30
  color = x3d_Color;
@@ -965,7 +965,7 @@ float lightAngle = max (dot (N, L), 0.0);
965
965
  vec3 diffuseTerm = diffuseColor * lightAngle;
966
966
  float specularFactor = shininessFactor > 0.0 ? pow (max (dot (N, H), 0.0), shininessFactor) : 1.0;
967
967
  vec3 specularTerm = specularColor * specularFactor;
968
- float attenuationFactor = di ? 1.0 : 1.0 / max (c [0] + c [1] * dL + c [2] * (dL * dL), 1.0);
968
+ float attenuationFactor = di ? 1.0 : 1.0 / max (dot (c, vec3 (1.0, dL, dL * dL)), 1.0);
969
969
  float spotFactor = light .type == x3d_SpotLight ? getSpotFactor (light .cutOffAngle, light .beamWidth, L, d) : 1.0;
970
970
  float attenuationSpotFactor = attenuationFactor * spotFactor;
971
971
  vec3 ambientTerm = light .ambientIntensity * ambientColor;
@@ -31,7 +31,7 @@ float pointSizeMaxValue = x3d_PointProperties .pointSizeMaxValue;
31
31
  vec3 pointSizeAttenuation = x3d_PointProperties .pointSizeAttenuation;
32
32
  float dL = length (vertex);
33
33
  pointSize = x3d_PointProperties .pointSizeScaleFactor;
34
- pointSize *= 1.0 / (pointSizeAttenuation [0] + pointSizeAttenuation [1] * dL + pointSizeAttenuation [2] * (dL * dL));
34
+ pointSize /= dot (pointSizeAttenuation, vec3 (1.0, dL, dL * dL));
35
35
  pointSize = clamp (pointSize, pointSizeMinValue, pointSizeMaxValue);
36
36
  gl_PointSize = pointSize > 1.0 && x3d_NumTextures == 0 ? pointSize + 1.0 : pointSize;
37
37
  float alpha = 1.0 - x3d_Material .transparency;
@@ -1,14 +1,42 @@
1
1
  #version 300 es
2
2
  precision highp float;
3
3
  precision highp int;
4
+ precision highp sampler2D;
4
5
  uniform mat4 x3d_ProjectionMatrix;
5
6
  uniform mat4 x3d_ModelViewMatrix;
6
7
  in vec4 x3d_Vertex;
7
8
  out vec3 vertex;
9
+ in vec4 x3d_Particle;
10
+ in mat4 x3d_ParticleMatrix;
11
+ uniform sampler2D x3d_TexCoordRamp;
12
+ vec4
13
+ texelFetch (const in sampler2D sampler, const in int index, const in int lod)
14
+ {
15
+ int x = textureSize (sampler, lod) .x;
16
+ ivec2 p = ivec2 (index % x, index / x);
17
+ vec4 t = texelFetch (sampler, p, lod);
18
+ return t;
19
+ }
20
+ vec4
21
+ getVertex (const in vec4 vertex)
22
+ {
23
+ if (x3d_Particle [0] == 0.0)
24
+ return vertex;
25
+ return x3d_ParticleMatrix * vertex;
26
+ }
27
+ vec4
28
+ getTexCoord (const in vec4 texCoord)
29
+ {
30
+ int index0 = int (x3d_Particle [3]);
31
+ if (x3d_Particle [0] == 0.0 || index0 == -1)
32
+ return texCoord;
33
+ const int map [6] = int [6] (0, 1, 2, 0, 2, 3);
34
+ return texelFetch (x3d_TexCoordRamp, index0 + map [gl_VertexID % 6], 0);
35
+ }
8
36
  void
9
37
  main ()
10
38
  {
11
- vec4 position = x3d_ModelViewMatrix * x3d_Vertex;
39
+ vec4 position = x3d_ModelViewMatrix * getVertex (x3d_Vertex);
12
40
  vertex = position .xyz;
13
41
  gl_Position = x3d_ProjectionMatrix * position;
14
42
  }
@@ -1,6 +1,7 @@
1
1
  #version 300 es
2
2
  precision highp float;
3
3
  precision highp int;
4
+ precision highp sampler2D;
4
5
  uniform mat3 x3d_NormalMatrix;
5
6
  uniform mat4 x3d_ProjectionMatrix;
6
7
  uniform mat4 x3d_ModelViewMatrix;
@@ -34,6 +35,33 @@ out vec4 texCoord1;
34
35
  #ifdef X3D_LOGARITHMIC_DEPTH_BUFFER
35
36
  out float depth;
36
37
  #endif
38
+ in vec4 x3d_Particle;
39
+ in mat4 x3d_ParticleMatrix;
40
+ uniform sampler2D x3d_TexCoordRamp;
41
+ vec4
42
+ texelFetch (const in sampler2D sampler, const in int index, const in int lod)
43
+ {
44
+ int x = textureSize (sampler, lod) .x;
45
+ ivec2 p = ivec2 (index % x, index / x);
46
+ vec4 t = texelFetch (sampler, p, lod);
47
+ return t;
48
+ }
49
+ vec4
50
+ getVertex (const in vec4 vertex)
51
+ {
52
+ if (x3d_Particle [0] == 0.0)
53
+ return vertex;
54
+ return x3d_ParticleMatrix * vertex;
55
+ }
56
+ vec4
57
+ getTexCoord (const in vec4 texCoord)
58
+ {
59
+ int index0 = int (x3d_Particle [3]);
60
+ if (x3d_Particle [0] == 0.0 || index0 == -1)
61
+ return texCoord;
62
+ const int map [6] = int [6] (0, 1, 2, 0, 2, 3);
63
+ return texelFetch (x3d_TexCoordRamp, index0 + map [gl_VertexID % 6], 0);
64
+ }
37
65
  float
38
66
  getSpotFactor (const in float cutOffAngle, const in float beamWidth, const in vec3 L, const in vec3 d)
39
67
  {
@@ -72,7 +100,7 @@ float lightAngle = max (dot (N, L), 0.0);
72
100
  vec3 diffuseTerm = diffuseColor * lightAngle;
73
101
  float specularFactor = material .shininess > 0.0 ? pow (max (dot (N, H), 0.0), material .shininess * 128.0) : 1.0;
74
102
  vec3 specularTerm = material .specularColor * specularFactor;
75
- float attenuationFactor = di ? 1.0 : 1.0 / max (c [0] + c [1] * dL + c [2] * (dL * dL), 1.0);
103
+ float attenuationFactor = di ? 1.0 : 1.0 / max (dot (c, vec3 (1.0, dL, dL * dL)), 1.0);
76
104
  float spotFactor = light .type == x3d_SpotLight ? getSpotFactor (light .cutOffAngle, light .beamWidth, L, d) : 1.0;
77
105
  float attenuationSpotFactor = attenuationFactor * spotFactor;
78
106
  vec3 ambientTerm = light .ambientIntensity * ambientColor;
@@ -86,17 +114,17 @@ return vec4 (clamp (finalColor, 0.0, 1.0), alpha);
86
114
  void
87
115
  main ()
88
116
  {
89
- vec4 position = x3d_ModelViewMatrix * x3d_Vertex;
117
+ vec4 position = x3d_ModelViewMatrix * getVertex (x3d_Vertex);
90
118
  fogDepth = x3d_FogDepth;
91
119
  vertex = position .xyz;
92
120
  normal = normalize (x3d_NormalMatrix * x3d_Normal);
93
121
  localNormal = x3d_Normal;
94
122
  localVertex = x3d_Vertex .xyz;
95
123
  #if x3d_MaxTextures > 0
96
- texCoord0 = x3d_TexCoord0;
124
+ texCoord0 = getTexCoord (x3d_TexCoord0);
97
125
  #endif
98
126
  #if x3d_MaxTextures > 1
99
- texCoord1 = x3d_TexCoord1;
127
+ texCoord1 = getTexCoord (x3d_TexCoord1);
100
128
  #endif
101
129
  gl_Position = x3d_ProjectionMatrix * position;
102
130
  #ifdef X3D_LOGARITHMIC_DEPTH_BUFFER
@@ -4,13 +4,12 @@ precision highp int;
4
4
  uniform float x3d_AlphaCutoff;
5
5
  uniform x3d_LinePropertiesParameters x3d_LineProperties;
6
6
  uniform ivec4 x3d_Viewport;
7
+ flat in float lengthSoFar;
8
+ flat in vec2 startPoint;
9
+ in vec2 midPoint;
7
10
  in float fogDepth;
8
11
  in vec4 color;
9
12
  in vec3 vertex;
10
- #ifdef X_ITE
11
- in vec3 startPosition;
12
- in vec3 vertexPosition;
13
- #endif
14
13
  #ifdef X3D_LOGARITHMIC_DEPTH_BUFFER
15
14
  uniform float x3d_LogarithmicFarFactor1_2;
16
15
  in float depth;
@@ -64,27 +63,40 @@ if (dot (vertex, x3d_ClipPlane [i] .xyz) - x3d_ClipPlane [i] .w < 0.0)
64
63
  discard;
65
64
  }
66
65
  }
67
- #ifdef X_ITE
66
+ struct Line2
67
+ {
68
+ vec2 point;
69
+ vec2 direction;
70
+ };
71
+ Line2
72
+ line2 (const in vec2 point1, const in vec2 point2)
73
+ {
74
+ return Line2 (point1, normalize (point2 - point1));
75
+ }
76
+ vec2
77
+ closest_point (const in Line2 line, const in vec2 point)
78
+ {
79
+ vec2 r = point - line .point;
80
+ float d = dot (r, line .direction);
81
+ return line .direction * d + line .point;
82
+ }
68
83
  void
69
84
  stipple ()
70
85
  {
71
86
  if (x3d_LineProperties .applied)
72
87
  {
73
- vec2 direction = (vertexPosition .xy - startPosition .xy) * vec2 (x3d_Viewport .zw) * 0.5;
74
- float distance = length (direction) / 16.0;
75
- float color = texture (x3d_LineProperties .linetype, vec2 (distance, distance)) .a;
76
- if (color == 0.0)
88
+ vec2 point = closest_point (line2 (startPoint, midPoint), gl_FragCoord .xy);
89
+ float s = (lengthSoFar + length (point - startPoint)) * x3d_LineProperties .lineStippleScale;
90
+ float alpha = texture (x3d_LineProperties .linetype, vec2 (s, 0.5)) .a;
91
+ if (alpha != 1.0)
77
92
  discard;
78
93
  }
79
94
  }
80
- #endif
81
95
  void
82
96
  main ()
83
97
  {
84
98
  clip ();
85
- #ifdef X_ITE
86
99
  stipple ();
87
- #endif
88
100
  vec4 finalColor = vec4 (0.0);
89
101
  finalColor .rgb = getFogColor (color .rgb);
90
102
  finalColor .a = color .a;
@@ -1,36 +1,61 @@
1
1
  #version 300 es
2
2
  precision highp float;
3
3
  precision highp int;
4
+ precision highp sampler2D;
4
5
  uniform bool x3d_ColorMaterial;
5
6
  uniform x3d_UnlitMaterialParameters x3d_Material;
6
7
  uniform mat4 x3d_ProjectionMatrix;
7
8
  uniform mat4 x3d_ModelViewMatrix;
8
9
  in float x3d_FogDepth;
10
+ in vec4 x3d_TexCoord0;
9
11
  in vec4 x3d_Color;
10
12
  in vec4 x3d_Vertex;
13
+ flat out float lengthSoFar;
14
+ flat out vec2 startPoint;
15
+ out vec2 midPoint;
11
16
  out float fogDepth;
12
17
  out vec4 color;
13
18
  out vec3 vertex;
14
- #ifdef X_ITE
15
- in vec4 x3d_TexCoord0;
16
- out vec3 startPosition;
17
- out vec3 vertexPosition;
18
- #endif
19
19
  #ifdef X3D_LOGARITHMIC_DEPTH_BUFFER
20
20
  out float depth;
21
21
  #endif
22
+ in vec4 x3d_Particle;
23
+ in mat4 x3d_ParticleMatrix;
24
+ uniform sampler2D x3d_TexCoordRamp;
25
+ vec4
26
+ texelFetch (const in sampler2D sampler, const in int index, const in int lod)
27
+ {
28
+ int x = textureSize (sampler, lod) .x;
29
+ ivec2 p = ivec2 (index % x, index / x);
30
+ vec4 t = texelFetch (sampler, p, lod);
31
+ return t;
32
+ }
33
+ vec4
34
+ getVertex (const in vec4 vertex)
35
+ {
36
+ if (x3d_Particle [0] == 0.0)
37
+ return vertex;
38
+ return x3d_ParticleMatrix * vertex;
39
+ }
40
+ vec4
41
+ getTexCoord (const in vec4 texCoord)
42
+ {
43
+ int index0 = int (x3d_Particle [3]);
44
+ if (x3d_Particle [0] == 0.0 || index0 == -1)
45
+ return texCoord;
46
+ const int map [6] = int [6] (0, 1, 2, 0, 2, 3);
47
+ return texelFetch (x3d_TexCoordRamp, index0 + map [gl_VertexID % 6], 0);
48
+ }
22
49
  void
23
50
  main ()
24
51
  {
25
- vec4 position = x3d_ModelViewMatrix * x3d_Vertex;
52
+ vec4 position = x3d_ModelViewMatrix * getVertex (x3d_Vertex);
53
+ lengthSoFar = x3d_TexCoord0 .z;
54
+ startPoint = x3d_TexCoord0 .xy;
55
+ midPoint = x3d_TexCoord0 .xy;
26
56
  fogDepth = x3d_FogDepth;
27
57
  vertex = position .xyz;
28
58
  gl_Position = x3d_ProjectionMatrix * position;
29
- #ifdef X_ITE
30
- vec4 start = x3d_ProjectionMatrix * x3d_ModelViewMatrix * x3d_TexCoord0;
31
- startPosition = start .xyz / start .w;
32
- vertexPosition = gl_Position .xyz / gl_Position .w;
33
- #endif
34
59
  #ifdef X3D_LOGARITHMIC_DEPTH_BUFFER
35
60
  depth = 1.0 + gl_Position .w;
36
61
  #endif
@@ -0,0 +1,4 @@
1
+ #version 300 es
2
+ precision highp float;
3
+ void
4
+ main () { }
@@ -0,0 +1,57 @@
1
+ #version 300 es
2
+ precision highp float;
3
+ uniform vec4 viewport;
4
+ uniform mat4 modelViewProjectionMatrix;
5
+ uniform mat4 invModelViewProjectionMatrix;
6
+ uniform float scale;
7
+ in float x3d_FogDepth0; in vec4 x3d_Color0; in vec4 x3d_TexCoord0; in vec4 x3d_Vertex0;
8
+ in float x3d_FogDepth1; in vec4 x3d_Color1; in vec4 x3d_TexCoord1; in vec4 x3d_Vertex1;
9
+ out float fogDepth0; out vec4 color0; out vec4 texCoord0; out vec4 vertex0;
10
+ out float fogDepth1; out vec4 color1; out vec4 texCoord1; out vec4 vertex1;
11
+ out float fogDepth2; out vec4 color2; out vec4 texCoord2; out vec4 vertex2;
12
+ vec3
13
+ projectPoint (const in vec4 point, const in mat4 modelViewProjectionMatrix, const in vec4 viewport)
14
+ {
15
+ vec4 vin = modelViewProjectionMatrix * point;
16
+ vin .xyz = vin .xyz / (2.0 * vin .w) + 0.5;
17
+ return vec3 (vin .xy * viewport .zw + viewport .xy, vin .z);
18
+ }
19
+ vec4
20
+ unProjectPoint (const in vec3 win, const in mat4 invModelViewProjection, const in vec4 viewport)
21
+ {
22
+ vec4 vin = vec4 ((win .xy - viewport .xy) / viewport .zw * 2.0 - 1.0, 2.0 * win .z - 1.0, 1.0);
23
+ vin = invModelViewProjection * vin;
24
+ return vec4 (vin .xyz / vin .w, 1.0);
25
+ }
26
+ void
27
+ main ()
28
+ {
29
+ vec3 projected0 = projectPoint (x3d_Vertex0, modelViewProjectionMatrix, viewport);
30
+ vec3 projected1 = projectPoint (x3d_Vertex1, modelViewProjectionMatrix, viewport);
31
+ vec2 direction = normalize (projected1 .xy - projected0 .xy);
32
+ vec2 offset = vec2 (-direction .y, direction .x) * scale;
33
+ if (gl_InstanceID == 0)
34
+ {
35
+ vec2 pq0 = projected0 .xy + offset;
36
+ vec2 pq1 = projected0 .xy - offset;
37
+ vec2 pq2 = projected1 .xy - offset;
38
+ vec4 p0 = unProjectPoint (vec3 (pq0 .xy, projected0 .z), invModelViewProjectionMatrix, viewport);
39
+ vec4 p1 = unProjectPoint (vec3 (pq1 .xy, projected0 .z), invModelViewProjectionMatrix, viewport);
40
+ vec4 p2 = unProjectPoint (vec3 (pq2 .xy, projected1 .z), invModelViewProjectionMatrix, viewport);
41
+ fogDepth0 = x3d_FogDepth0; color0 = x3d_Color0; texCoord0 = x3d_TexCoord0; vertex0 = p0;
42
+ fogDepth1 = x3d_FogDepth0; color1 = x3d_Color0; texCoord1 = x3d_TexCoord0; vertex1 = p1;
43
+ fogDepth2 = x3d_FogDepth1; color2 = x3d_Color1; texCoord2 = x3d_TexCoord1; vertex2 = p2;
44
+ }
45
+ else
46
+ {
47
+ vec2 pq0 = projected0 .xy + offset;
48
+ vec2 pq2 = projected1 .xy - offset;
49
+ vec2 pq3 = projected1 .xy + offset;
50
+ vec4 p0 = unProjectPoint (vec3 (pq0 .xy, projected0 .z), invModelViewProjectionMatrix, viewport);
51
+ vec4 p2 = unProjectPoint (vec3 (pq2 .xy, projected1 .z), invModelViewProjectionMatrix, viewport);
52
+ vec4 p3 = unProjectPoint (vec3 (pq3 .xy, projected1 .z), invModelViewProjectionMatrix, viewport);
53
+ fogDepth0 = x3d_FogDepth0; color0 = x3d_Color0; texCoord0 = x3d_TexCoord0; vertex0 = p0;
54
+ fogDepth1 = x3d_FogDepth1; color1 = x3d_Color1; texCoord1 = x3d_TexCoord1; vertex1 = p2;
55
+ fogDepth2 = x3d_FogDepth1; color2 = x3d_Color1; texCoord2 = x3d_TexCoord1; vertex2 = p3;
56
+ }
57
+ }
@@ -886,7 +886,7 @@ specularColor
886
886
  vec3 F = specularReflection (pbrInputs);
887
887
  float G = geometricOcclusion (pbrInputs);
888
888
  float D = microfacetDistribution (pbrInputs);
889
- float attenuationFactor = di ? 1.0 : 1.0 / max (c [0] + c [1] * dL + c [2] * (dL * dL), 1.0);
889
+ float attenuationFactor = di ? 1.0 : 1.0 / max (dot (c, vec3 (1.0, dL, dL * dL)), 1.0);
890
890
  float spotFactor = light .type == x3d_SpotLight ? getSpotFactor (light .cutOffAngle, light .beamWidth, L, d) : 1.0;
891
891
  float attenuationSpotFactor = attenuationFactor * spotFactor;
892
892
  vec3 diffuseContrib = (1.0 - F) * diffuse (pbrInputs);
@@ -1,14 +1,15 @@
1
1
  #version 300 es
2
2
  precision highp float;
3
3
  precision highp int;
4
+ precision highp sampler2D;
4
5
  uniform mat4 x3d_ProjectionMatrix;
5
6
  uniform mat4 x3d_ModelViewMatrix;
6
7
  uniform mat3 x3d_NormalMatrix;
7
- in vec4 x3d_Vertex;
8
- in vec3 x3d_Normal;
8
+ in vec4 x3d_Color;
9
9
  in vec4 x3d_TexCoord0;
10
10
  in vec4 x3d_TexCoord1;
11
- in vec4 x3d_Color;
11
+ in vec3 x3d_Normal;
12
+ in vec4 x3d_Vertex;
12
13
  out vec3 vertex;
13
14
  out vec3 normal;
14
15
  out vec4 texCoord0;
@@ -19,14 +20,41 @@ out vec3 localVertex;
19
20
  #ifdef X3D_LOGARITHMIC_DEPTH_BUFFER
20
21
  out float depth;
21
22
  #endif
23
+ in vec4 x3d_Particle;
24
+ in mat4 x3d_ParticleMatrix;
25
+ uniform sampler2D x3d_TexCoordRamp;
26
+ vec4
27
+ texelFetch (const in sampler2D sampler, const in int index, const in int lod)
28
+ {
29
+ int x = textureSize (sampler, lod) .x;
30
+ ivec2 p = ivec2 (index % x, index / x);
31
+ vec4 t = texelFetch (sampler, p, lod);
32
+ return t;
33
+ }
34
+ vec4
35
+ getVertex (const in vec4 vertex)
36
+ {
37
+ if (x3d_Particle [0] == 0.0)
38
+ return vertex;
39
+ return x3d_ParticleMatrix * vertex;
40
+ }
41
+ vec4
42
+ getTexCoord (const in vec4 texCoord)
43
+ {
44
+ int index0 = int (x3d_Particle [3]);
45
+ if (x3d_Particle [0] == 0.0 || index0 == -1)
46
+ return texCoord;
47
+ const int map [6] = int [6] (0, 1, 2, 0, 2, 3);
48
+ return texelFetch (x3d_TexCoordRamp, index0 + map [gl_VertexID % 6], 0);
49
+ }
22
50
  void
23
51
  main ()
24
52
  {
25
- vec4 position = x3d_ModelViewMatrix * x3d_Vertex;
53
+ vec4 position = x3d_ModelViewMatrix * getVertex (x3d_Vertex);
26
54
  vertex = position .xyz;
27
- normal = normalize (x3d_NormalMatrix * x3d_Normal);
28
- texCoord0 = x3d_TexCoord0;
29
- texCoord1 = x3d_TexCoord1;
55
+ normal = x3d_NormalMatrix * x3d_Normal;
56
+ texCoord0 = getTexCoord (x3d_TexCoord0);
57
+ texCoord1 = getTexCoord (x3d_TexCoord1);
30
58
  color = x3d_Color;
31
59
  localNormal = x3d_Normal;
32
60
  localVertex = x3d_Vertex .xyz;
@@ -1130,7 +1130,7 @@ float lightAngle = max (dot (N, L), 0.0);
1130
1130
  vec3 diffuseTerm = diffuseColor * lightAngle;
1131
1131
  float specularFactor = shininessFactor > 0.0 ? pow (max (dot (N, H), 0.0), shininessFactor) : 1.0;
1132
1132
  vec3 specularTerm = specularColor * specularFactor;
1133
- float attenuationFactor = di ? 1.0 : 1.0 / max (c [0] + c [1] * dL + c [2] * (dL * dL), 1.0);
1133
+ float attenuationFactor = di ? 1.0 : 1.0 / max (dot (c, vec3 (1.0, dL, dL * dL)), 1.0);
1134
1134
  float spotFactor = light .type == x3d_SpotLight ? getSpotFactor (light .cutOffAngle, light .beamWidth, L, d) : 1.0;
1135
1135
  float attenuationSpotFactor = attenuationFactor * spotFactor;
1136
1136
  vec3 ambientTerm = light .ambientIntensity * ambientColor;
@@ -1,6 +1,7 @@
1
1
  #version 300 es
2
2
  precision highp float;
3
3
  precision highp int;
4
+ precision highp sampler2D;
4
5
  uniform mat3 x3d_NormalMatrix;
5
6
  uniform mat4 x3d_ProjectionMatrix;
6
7
  uniform mat4 x3d_ModelViewMatrix;
@@ -29,10 +30,37 @@ out vec4 texCoord1;
29
30
  #ifdef X3D_LOGARITHMIC_DEPTH_BUFFER
30
31
  out float depth;
31
32
  #endif
33
+ in vec4 x3d_Particle;
34
+ in mat4 x3d_ParticleMatrix;
35
+ uniform sampler2D x3d_TexCoordRamp;
36
+ vec4
37
+ texelFetch (const in sampler2D sampler, const in int index, const in int lod)
38
+ {
39
+ int x = textureSize (sampler, lod) .x;
40
+ ivec2 p = ivec2 (index % x, index / x);
41
+ vec4 t = texelFetch (sampler, p, lod);
42
+ return t;
43
+ }
44
+ vec4
45
+ getVertex (const in vec4 vertex)
46
+ {
47
+ if (x3d_Particle [0] == 0.0)
48
+ return vertex;
49
+ return x3d_ParticleMatrix * vertex;
50
+ }
51
+ vec4
52
+ getTexCoord (const in vec4 texCoord)
53
+ {
54
+ int index0 = int (x3d_Particle [3]);
55
+ if (x3d_Particle [0] == 0.0 || index0 == -1)
56
+ return texCoord;
57
+ const int map [6] = int [6] (0, 1, 2, 0, 2, 3);
58
+ return texelFetch (x3d_TexCoordRamp, index0 + map [gl_VertexID % 6], 0);
59
+ }
32
60
  void
33
61
  main ()
34
62
  {
35
- vec4 position = x3d_ModelViewMatrix * x3d_Vertex;
63
+ vec4 position = x3d_ModelViewMatrix * getVertex (x3d_Vertex);
36
64
  fogDepth = x3d_FogDepth;
37
65
  color = x3d_Color;
38
66
  normal = x3d_NormalMatrix * x3d_Normal;
@@ -40,10 +68,10 @@ vertex = position .xyz;
40
68
  localNormal = x3d_Normal;
41
69
  localVertex = x3d_Vertex .xyz;
42
70
  #if x3d_MaxTextures > 0
43
- texCoord0 = x3d_TexCoord0;
71
+ texCoord0 = getTexCoord (x3d_TexCoord0);
44
72
  #endif
45
73
  #if x3d_MaxTextures > 1
46
- texCoord1 = x3d_TexCoord1;
74
+ texCoord1 = getTexCoord (x3d_TexCoord1);
47
75
  #endif
48
76
  gl_Position = x3d_ProjectionMatrix * position;
49
77
  #ifdef X3D_LOGARITHMIC_DEPTH_BUFFER
@@ -1,6 +1,7 @@
1
1
  #version 300 es
2
2
  precision highp float;
3
3
  precision highp int;
4
+ precision highp sampler2D;
4
5
  uniform x3d_PointPropertiesParameters x3d_PointProperties;
5
6
  uniform bool x3d_ColorMaterial;
6
7
  uniform x3d_UnlitMaterialParameters x3d_Material;
@@ -17,10 +18,37 @@ out vec3 vertex;
17
18
  #ifdef X3D_LOGARITHMIC_DEPTH_BUFFER
18
19
  out float depth;
19
20
  #endif
21
+ in vec4 x3d_Particle;
22
+ in mat4 x3d_ParticleMatrix;
23
+ uniform sampler2D x3d_TexCoordRamp;
24
+ vec4
25
+ texelFetch (const in sampler2D sampler, const in int index, const in int lod)
26
+ {
27
+ int x = textureSize (sampler, lod) .x;
28
+ ivec2 p = ivec2 (index % x, index / x);
29
+ vec4 t = texelFetch (sampler, p, lod);
30
+ return t;
31
+ }
32
+ vec4
33
+ getVertex (const in vec4 vertex)
34
+ {
35
+ if (x3d_Particle [0] == 0.0)
36
+ return vertex;
37
+ return x3d_ParticleMatrix * vertex;
38
+ }
39
+ vec4
40
+ getTexCoord (const in vec4 texCoord)
41
+ {
42
+ int index0 = int (x3d_Particle [3]);
43
+ if (x3d_Particle [0] == 0.0 || index0 == -1)
44
+ return texCoord;
45
+ const int map [6] = int [6] (0, 1, 2, 0, 2, 3);
46
+ return texelFetch (x3d_TexCoordRamp, index0 + map [gl_VertexID % 6], 0);
47
+ }
20
48
  void
21
49
  main ()
22
50
  {
23
- vec4 position = x3d_ModelViewMatrix * x3d_Vertex;
51
+ vec4 position = x3d_ModelViewMatrix * getVertex (x3d_Vertex);
24
52
  fogDepth = x3d_FogDepth;
25
53
  vertex = position .xyz;
26
54
  gl_Position = x3d_ProjectionMatrix * position;
@@ -32,7 +60,7 @@ float pointSizeMaxValue = x3d_PointProperties .pointSizeMaxValue;
32
60
  vec3 pointSizeAttenuation = x3d_PointProperties .pointSizeAttenuation;
33
61
  float dL = length (vertex);
34
62
  pointSize = x3d_PointProperties .pointSizeScaleFactor;
35
- pointSize *= 1.0 / (pointSizeAttenuation [0] + pointSizeAttenuation [1] * dL + pointSizeAttenuation [2] * (dL * dL));
63
+ pointSize /= dot (pointSizeAttenuation, vec3 (1.0, dL, dL * dL));
36
64
  pointSize = clamp (pointSize, pointSizeMinValue, pointSizeMaxValue);
37
65
  gl_PointSize = pointSize > 1.0 && x3d_NumTextures == 0 ? pointSize + 1.0 : pointSize;
38
66
  float alpha = 1.0 - x3d_Material .transparency;
@@ -1,6 +1,7 @@
1
1
  #version 300 es
2
2
  precision highp float;
3
3
  precision highp int;
4
+ precision highp sampler2D;
4
5
  uniform mat3 x3d_NormalMatrix;
5
6
  uniform mat4 x3d_ProjectionMatrix;
6
7
  uniform mat4 x3d_ModelViewMatrix;
@@ -29,10 +30,37 @@ out vec4 texCoord1;
29
30
  #ifdef X3D_LOGARITHMIC_DEPTH_BUFFER
30
31
  out float depth;
31
32
  #endif
33
+ in vec4 x3d_Particle;
34
+ in mat4 x3d_ParticleMatrix;
35
+ uniform sampler2D x3d_TexCoordRamp;
36
+ vec4
37
+ texelFetch (const in sampler2D sampler, const in int index, const in int lod)
38
+ {
39
+ int x = textureSize (sampler, lod) .x;
40
+ ivec2 p = ivec2 (index % x, index / x);
41
+ vec4 t = texelFetch (sampler, p, lod);
42
+ return t;
43
+ }
44
+ vec4
45
+ getVertex (const in vec4 vertex)
46
+ {
47
+ if (x3d_Particle [0] == 0.0)
48
+ return vertex;
49
+ return x3d_ParticleMatrix * vertex;
50
+ }
51
+ vec4
52
+ getTexCoord (const in vec4 texCoord)
53
+ {
54
+ int index0 = int (x3d_Particle [3]);
55
+ if (x3d_Particle [0] == 0.0 || index0 == -1)
56
+ return texCoord;
57
+ const int map [6] = int [6] (0, 1, 2, 0, 2, 3);
58
+ return texelFetch (x3d_TexCoordRamp, index0 + map [gl_VertexID % 6], 0);
59
+ }
32
60
  void
33
61
  main ()
34
62
  {
35
- vec4 position = x3d_ModelViewMatrix * x3d_Vertex;
63
+ vec4 position = x3d_ModelViewMatrix * getVertex (x3d_Vertex);
36
64
  fogDepth = x3d_FogDepth;
37
65
  color = x3d_Color;
38
66
  normal = x3d_NormalMatrix * x3d_Normal;
@@ -40,10 +68,10 @@ vertex = position .xyz;
40
68
  localNormal = x3d_Normal;
41
69
  localVertex = x3d_Vertex .xyz;
42
70
  #if x3d_MaxTextures > 0
43
- texCoord0 = x3d_TexCoord0;
71
+ texCoord0 = getTexCoord (x3d_TexCoord0);
44
72
  #endif
45
73
  #if x3d_MaxTextures > 1
46
- texCoord1 = x3d_TexCoord1;
74
+ texCoord1 = getTexCoord (x3d_TexCoord1);
47
75
  #endif
48
76
  gl_Position = x3d_ProjectionMatrix * position;
49
77
  #ifdef X3D_LOGARITHMIC_DEPTH_BUFFER
package/dist/example.html CHANGED
@@ -2,19 +2,19 @@
2
2
  <html>
3
3
  <head>
4
4
  <meta charset="utf-8"/>
5
- <link rel="stylesheet" type="text/css" href="https://create3000.github.io/code/x_ite/5.0.3/dist/x_ite.css"/>
6
- <script type="text/javascript" src="https://create3000.github.io/code/x_ite/5.0.3/dist/x_ite.min.js"></script>
5
+ <script type="text/javascript" src="x_ite.min.js"></script>
6
+ <!-- <script type="text/javascript" src="https://create3000.github.io/code/x_ite/6.1.0/dist/x_ite.min.js"></script> -->
7
7
  <style>
8
- X3DCanvas {
8
+ x3d-canvas {
9
9
  width: 1000px;
10
10
  height: 563px;
11
11
  }
12
12
  </style>
13
13
  </head>
14
14
  <body>
15
- <X3DCanvas src="https://cdn.rawgit.com/create3000/Library/main/Examples/X_ITE/info.x3d">
15
+ <x3d-canvas src="https://create3000.github.io/media/x_ite/info/info.x3d">
16
16
  <p>Your browser may not support all features required by X_ITE!</p>
17
- </X3DCanvas>
18
- <p>If the page is not running <a href="https://github.com/create3000/x_ite/wiki#using-firefox-chrome-and-opera-with-local-files">consider setup a localhost server</a>.</p>
17
+ </x3d-canvas>
18
+ <p>If local files are not loaded <a href="https://create3000.github.io/x_ite/#using-firefox-chrome-and-opera-with-local-files">consider setup a localhost server</a>.</p>
19
19
  </body>
20
20
  </html>