x_ite 5.0.2 → 6.0.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 (340) hide show
  1. package/.vscode/settings.json +12 -5
  2. package/.vscode/tasks.json +21 -0
  3. package/Makefile +10 -15
  4. package/README.md +6 -11
  5. package/build/bin/dist.pl +0 -6
  6. package/build/bin/version.pl +1 -4
  7. package/dist/assets/components/annotation.js +2 -2
  8. package/dist/assets/components/annotation.min.js +1 -1
  9. package/dist/assets/components/cad-geometry.js +2 -2
  10. package/dist/assets/components/cad-geometry.min.js +1 -1
  11. package/dist/assets/components/cube-map-texturing.js +6 -19
  12. package/dist/assets/components/cube-map-texturing.min.js +1 -1
  13. package/dist/assets/components/dis.js +2 -2
  14. package/dist/assets/components/dis.min.js +1 -1
  15. package/dist/assets/components/event-utilities.js +3 -3
  16. package/dist/assets/components/event-utilities.min.js +1 -1
  17. package/dist/assets/components/geometry2d.js +4 -4
  18. package/dist/assets/components/geometry2d.min.js +1 -1
  19. package/dist/assets/components/geospatial.js +32 -1685
  20. package/dist/assets/components/geospatial.min.js +1 -1
  21. package/dist/assets/components/h-anim.js +70 -77
  22. package/dist/assets/components/h-anim.min.js +1 -1
  23. package/dist/assets/components/key-device-sensor.js +3 -3
  24. package/dist/assets/components/key-device-sensor.min.js +1 -1
  25. package/dist/assets/components/layout.js +38 -52
  26. package/dist/assets/components/layout.min.js +1 -1
  27. package/dist/assets/components/nurbs.js +277 -194
  28. package/dist/assets/components/nurbs.min.js +1 -1
  29. package/dist/assets/components/particle-systems.js +1918 -1658
  30. package/dist/assets/components/particle-systems.min.js +1 -1
  31. package/dist/assets/components/picking.js +33 -41
  32. package/dist/assets/components/picking.min.js +1 -1
  33. package/dist/assets/components/projective-texture-mapping.js +72 -86
  34. package/dist/assets/components/projective-texture-mapping.min.js +1 -1
  35. package/dist/assets/components/rigid-body-physics.js +36 -57
  36. package/dist/assets/components/rigid-body-physics.min.js +1 -1
  37. package/dist/assets/components/scripting.js +2 -2
  38. package/dist/assets/components/scripting.min.js +1 -1
  39. package/dist/assets/components/texturing-3d.js +26 -75
  40. package/dist/assets/components/texturing-3d.min.js +3 -3
  41. package/dist/assets/components/volume-rendering.js +10 -10
  42. package/dist/assets/components/volume-rendering.min.js +1 -1
  43. package/dist/assets/components/x_ite.js +2 -2
  44. package/dist/assets/components/x_ite.min.js +1 -1
  45. package/dist/assets/linetype/1.png +0 -0
  46. package/dist/assets/linetype/10.png +0 -0
  47. package/dist/assets/linetype/11.png +0 -0
  48. package/dist/assets/linetype/12.png +0 -0
  49. package/dist/assets/linetype/13.png +0 -0
  50. package/dist/assets/linetype/14.png +0 -0
  51. package/dist/assets/linetype/15.png +0 -0
  52. package/dist/assets/linetype/16.png +0 -0
  53. package/dist/assets/linetype/2.png +0 -0
  54. package/dist/assets/linetype/3.png +0 -0
  55. package/dist/assets/linetype/4.png +0 -0
  56. package/dist/assets/linetype/5.png +0 -0
  57. package/dist/assets/linetype/6.png +0 -0
  58. package/dist/assets/linetype/7.png +0 -0
  59. package/dist/assets/linetype/8.png +0 -0
  60. package/dist/assets/linetype/9.png +0 -0
  61. package/dist/assets/shaders/webgl1/Line.fs +0 -21
  62. package/dist/assets/shaders/webgl1/Line.vs +0 -10
  63. package/dist/assets/shaders/webgl1/PBR.vs +1 -1
  64. package/dist/assets/shaders/webgl2/Depth.vs +29 -1
  65. package/dist/assets/shaders/webgl2/Gouraud.vs +31 -3
  66. package/dist/assets/shaders/webgl2/Line.fs +24 -12
  67. package/dist/assets/shaders/webgl2/Line.vs +36 -11
  68. package/dist/assets/shaders/webgl2/LineTransform.fs +4 -0
  69. package/dist/assets/shaders/webgl2/LineTransform.vs +57 -0
  70. package/dist/assets/shaders/webgl2/PBR.vs +35 -7
  71. package/dist/assets/shaders/webgl2/Phong.vs +31 -3
  72. package/dist/assets/shaders/webgl2/Point.vs +29 -1
  73. package/dist/assets/shaders/webgl2/Unlit.vs +31 -3
  74. package/dist/example.html +6 -6
  75. package/dist/x_ite.css +180 -208
  76. package/dist/x_ite.js +16477 -16629
  77. package/dist/x_ite.min.js +17 -17
  78. package/dist/x_ite.zip +0 -0
  79. package/docs/404.md +6 -0
  80. package/docs/Accessing-the-External-Browser.md +20 -14
  81. package/docs/Browser-Support.md +6 -0
  82. package/docs/Custom-Shaders.md +17 -24
  83. package/docs/Features.md +7 -1
  84. package/docs/Gemfile +44 -0
  85. package/docs/Gemfile.lock +122 -0
  86. package/docs/Glossary.md +6 -0
  87. package/docs/How-To-Configure-Your-Web-Server.md +6 -0
  88. package/docs/Supported-Nodes.md +9 -1
  89. package/docs/What's-New.md +31 -0
  90. package/docs/XHTML-DOM-Integration.md +6 -0
  91. package/docs/_config.yml +1 -1
  92. package/docs/assets/css/main.scss +26 -0
  93. package/docs/index.md +38 -46
  94. package/docs/reference/Browser-Services.md +9 -3
  95. package/docs/reference/Constants-Services.md +6 -0
  96. package/docs/reference/ECMAScript-Object-and-Function-Definitions.md +6 -0
  97. package/docs/reference/Field-Services-and-Objects.md +6 -0
  98. package/docs/reference/Prototype-Services.md +6 -0
  99. package/docs/reference/Route-Services.md +6 -0
  100. package/docs/reference/Scene-Services.md +8 -2
  101. package/docs/reference/Script-Node-Authoring-Interface.md +7 -1
  102. package/docs/tutorials/Adding-backgrounds.md +6 -0
  103. package/docs/tutorials/Adding-fog.md +6 -0
  104. package/docs/tutorials/Adding-sound.md +6 -0
  105. package/docs/tutorials/Animating-transforms.md +6 -0
  106. package/docs/tutorials/Basic-Nodes.md +6 -0
  107. package/docs/tutorials/Building-a-X3D-world.md +6 -0
  108. package/docs/tutorials/Building-elevation-grids.md +6 -0
  109. package/docs/tutorials/Building-extruded-shapes.md +6 -0
  110. package/docs/tutorials/Building-primitive-shapes.md +6 -0
  111. package/docs/tutorials/Building-shapes-out-of-points,-lines,-and-faces.md +6 -0
  112. package/docs/tutorials/Controlling-appearance-with-materials.md +6 -0
  113. package/docs/tutorials/Controlling-color-on-coordinate-based-geometry.md +6 -0
  114. package/docs/tutorials/Controlling-detail.md +6 -0
  115. package/docs/tutorials/Controlling-how-textures-are-mapped.md +6 -0
  116. package/docs/tutorials/Controlling-navigation.md +6 -0
  117. package/docs/tutorials/Controlling-shading-on-coordinate-based-geometry.md +6 -0
  118. package/docs/tutorials/Controlling-the-viewpoint.md +6 -0
  119. package/docs/tutorials/Creating-new-node-types.md +6 -0
  120. package/docs/tutorials/Grouping-nodes.md +6 -0
  121. package/docs/tutorials/Hello,-World!.md +6 -0
  122. package/docs/tutorials/Improving-Performance.md +6 -0
  123. package/docs/tutorials/Increasing-Rendering-Speed.md +6 -0
  124. package/docs/tutorials/Introducing-X3D.md +6 -0
  125. package/docs/tutorials/Introducing-animation.md +6 -0
  126. package/docs/tutorials/Introducing-script-use.md +6 -0
  127. package/docs/tutorials/Lighting-your-world.md +6 -0
  128. package/docs/tutorials/Mapping-textures.md +6 -0
  129. package/docs/tutorials/Naming-nodes.md +6 -0
  130. package/docs/tutorials/Providing-information-about-your-world.md +6 -0
  131. package/docs/tutorials/Sensing-the-viewer.md +6 -0
  132. package/docs/tutorials/Sensing-viewer-actions.md +6 -0
  133. package/docs/tutorials/Transforming-Shapes.md +6 -0
  134. package/docs/tutorials/Writing-program-scripts-with-ECMAScript.md +6 -0
  135. package/docs/tutorials/index.md +6 -0
  136. package/package.json +6 -7
  137. package/src/assets/components/geometry2d.js +1 -1
  138. package/src/assets/components/key-device-sensor.js +1 -1
  139. package/src/assets/components/layout.js +1 -1
  140. package/src/assets/components/particle-systems.js +1 -1
  141. package/src/assets/components/volume-rendering.js +1 -1
  142. package/src/assets/linetype/1.png +0 -0
  143. package/src/assets/linetype/10.png +0 -0
  144. package/src/assets/linetype/11.png +0 -0
  145. package/src/assets/linetype/12.png +0 -0
  146. package/src/assets/linetype/13.png +0 -0
  147. package/src/assets/linetype/14.png +0 -0
  148. package/src/assets/linetype/15.png +0 -0
  149. package/src/assets/linetype/16.png +0 -0
  150. package/src/assets/linetype/2.png +0 -0
  151. package/src/assets/linetype/3.png +0 -0
  152. package/src/assets/linetype/4.png +0 -0
  153. package/src/assets/linetype/5.png +0 -0
  154. package/src/assets/linetype/6.png +0 -0
  155. package/src/assets/linetype/7.png +0 -0
  156. package/src/assets/linetype/8.png +0 -0
  157. package/src/assets/linetype/9.png +0 -0
  158. package/src/assets/shaders/Types.glsl +1 -9
  159. package/src/assets/shaders/webgl1/Line.fs +3 -28
  160. package/src/assets/shaders/webgl1/Line.vs +5 -19
  161. package/src/assets/shaders/webgl1/PBR.vs +1 -1
  162. package/src/assets/shaders/webgl1/Point.vs +2 -3
  163. package/src/assets/shaders/webgl2/Depth.vs +4 -1
  164. package/src/assets/shaders/webgl2/Gouraud.vs +5 -3
  165. package/src/assets/shaders/webgl2/Line.fs +11 -17
  166. package/src/assets/shaders/webgl2/Line.vs +16 -20
  167. package/src/assets/shaders/webgl2/LineTransform.fs +6 -0
  168. package/src/assets/shaders/webgl2/LineTransform.vs +77 -0
  169. package/src/assets/shaders/webgl2/PBR.vs +10 -7
  170. package/src/assets/shaders/webgl2/Phong.vs +6 -3
  171. package/src/assets/shaders/webgl2/Point.vs +6 -6
  172. package/src/assets/shaders/webgl2/Unlit.vs +6 -3
  173. package/src/assets/shaders/webgl2/include/Line2.glsl +20 -0
  174. package/src/assets/shaders/webgl2/include/Particle.glsl +36 -0
  175. package/src/example.html +6 -6
  176. package/src/standard/Math/Algorithm.js +12 -28
  177. package/src/standard/Math/Geometry/Plane3.js +0 -2
  178. package/src/standard/Math/Geometry/ViewVolume.js +88 -83
  179. package/src/standard/Math/Numbers/Color3.js +6 -0
  180. package/src/standard/Math/Numbers/Color4.js +7 -0
  181. package/src/standard/Math/Numbers/Complex.js +5 -0
  182. package/src/standard/Math/Numbers/Matrix2.js +20 -2
  183. package/src/standard/Math/Numbers/Matrix3.js +129 -110
  184. package/src/standard/Math/Numbers/Matrix4.js +138 -119
  185. package/src/standard/Math/Numbers/Quaternion.js +7 -0
  186. package/src/standard/Math/Numbers/Rotation4.js +7 -0
  187. package/src/standard/Math/Numbers/Vector2.js +8 -5
  188. package/src/standard/Math/Numbers/Vector3.js +16 -10
  189. package/src/standard/Math/Numbers/Vector4.js +12 -7
  190. package/src/standard/Math/Utility/BVH.js +45 -17
  191. package/src/tests.js +6 -1
  192. package/src/x_ite/Base/X3DBaseNode.js +22 -11
  193. package/src/x_ite/Base/X3DField.js +1 -1
  194. package/src/x_ite/Browser/Core/BrowserOptions.js +2 -2
  195. package/src/x_ite/Browser/Core/BrowserTimings.js +4 -2
  196. package/src/x_ite/Browser/Core/Context.js +185 -0
  197. package/src/x_ite/Browser/Core/ContextMenu.js +299 -193
  198. package/src/x_ite/Browser/Core/Notification.js +1 -0
  199. package/src/x_ite/Browser/Core/X3DCoreContext.js +35 -146
  200. package/src/x_ite/Browser/Layout/ScreenText.js +11 -4
  201. package/src/x_ite/Browser/Layout/X3DLayoutContext.js +4 -15
  202. package/src/x_ite/Browser/Navigation/ExamineViewer.js +12 -19
  203. package/src/x_ite/Browser/Navigation/LookAtViewer.js +0 -3
  204. package/src/x_ite/Browser/Navigation/PlaneViewer.js +0 -3
  205. package/src/x_ite/Browser/Navigation/X3DFlyViewer.js +14 -7
  206. package/src/x_ite/Browser/Navigation/X3DViewer.js +12 -20
  207. package/src/x_ite/Browser/Networking/X3DNetworkingContext.js +11 -7
  208. package/src/x_ite/Browser/ParticleSystems/BVH.glsl +183 -0
  209. package/src/x_ite/Browser/ParticleSystems/Box3.glsl +47 -0
  210. package/src/x_ite/Browser/ParticleSystems/GeometryTypes.js +66 -0
  211. package/src/x_ite/Browser/ParticleSystems/Line3.glsl +55 -0
  212. package/src/x_ite/Browser/ParticleSystems/Plane3.glsl +160 -0
  213. package/src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js +27 -3
  214. package/src/x_ite/Browser/PointingDeviceSensor/X3DPointingDeviceSensorContext.js +37 -37
  215. package/src/x_ite/Browser/Rendering/X3DRenderingContext.js +19 -13
  216. package/src/x_ite/Browser/Shaders/Shader.js +33 -12
  217. package/src/x_ite/Browser/Shaders/ShaderSource.js +6 -0
  218. package/src/x_ite/Browser/Shaders/ShaderTest.js +16 -10
  219. package/src/x_ite/Browser/Shape/X3DShapeContext.js +50 -9
  220. package/src/x_ite/Browser/Text/X3DTextContext.js +4 -13
  221. package/src/x_ite/Browser/Texturing/X3DTexturingContext.js +23 -33
  222. package/src/x_ite/Browser/Texturing3D/DICOMParser.js +2 -2
  223. package/src/x_ite/Browser/Time/X3DTimeContext.js +3 -1
  224. package/src/x_ite/Browser/VERSION.js +1 -1
  225. package/src/x_ite/Browser/X3DBrowser.js +7 -6
  226. package/src/x_ite/Browser/X3DBrowserContext.js +35 -10
  227. package/src/x_ite/Components/Core/X3DNode.js +4 -0
  228. package/src/x_ite/Components/Core/X3DPrototypeInstance.js +0 -2
  229. package/src/x_ite/Components/CubeMapTexturing/ComposedCubeMapTexture.js +3 -4
  230. package/src/x_ite/Components/CubeMapTexturing/GeneratedCubeMapTexture.js +1 -12
  231. package/src/x_ite/Components/CubeMapTexturing/ImageCubeMapTexture.js +0 -1
  232. package/src/x_ite/Components/EnvironmentalEffects/TextureBackground.js +1 -1
  233. package/src/x_ite/Components/EnvironmentalEffects/X3DBackgroundNode.js +76 -77
  234. package/src/x_ite/Components/EnvironmentalEffects/X3DFogObject.js +2 -9
  235. package/src/x_ite/Components/EnvironmentalSensor/ProximitySensor.js +51 -65
  236. package/src/x_ite/Components/EventUtilities/X3DSequencerNode.js +1 -1
  237. package/src/x_ite/Components/Followers/X3DChaserNode.js +18 -32
  238. package/src/x_ite/Components/Followers/X3DDamperNode.js +1 -6
  239. package/src/x_ite/Components/Geometry2D/TriangleSet2D.js +1 -1
  240. package/src/x_ite/Components/Geometry3D/ElevationGrid.js +12 -4
  241. package/src/x_ite/Components/Geometry3D/IndexedFaceSet.js +4 -4
  242. package/src/x_ite/Components/Geospatial/GeoCoordinate.js +10 -27
  243. package/src/x_ite/Components/Geospatial/GeoPositionInterpolator.js +5 -10
  244. package/src/x_ite/Components/Geospatial/GeoTouchSensor.js +9 -16
  245. package/src/x_ite/Components/Geospatial/GeoTransform.js +6 -18
  246. package/src/x_ite/Components/Geospatial/X3DGeospatialObject.js +20 -27
  247. package/src/x_ite/Components/Grouping/X3DGroupingNode.js +8 -8
  248. package/src/x_ite/Components/Grouping/X3DTransformNode.js +0 -4
  249. package/src/x_ite/Components/HAnim/HAnimHumanoid.js +68 -75
  250. package/src/x_ite/Components/Interpolation/OrientationInterpolator.js +4 -11
  251. package/src/x_ite/Components/Interpolation/X3DInterpolatorNode.js +1 -1
  252. package/src/x_ite/Components/Layout/LayoutGroup.js +4 -9
  253. package/src/x_ite/Components/Layout/ScreenFontStyle.js +1 -1
  254. package/src/x_ite/Components/Layout/ScreenGroup.js +18 -23
  255. package/src/x_ite/Components/Lighting/DirectionalLight.js +28 -36
  256. package/src/x_ite/Components/Lighting/PointLight.js +32 -47
  257. package/src/x_ite/Components/Lighting/SpotLight.js +33 -48
  258. package/src/x_ite/Components/Navigation/Billboard.js +49 -56
  259. package/src/x_ite/Components/Navigation/LOD.js +1 -1
  260. package/src/x_ite/Components/Navigation/X3DViewpointNode.js +82 -111
  261. package/src/x_ite/Components/Networking/Anchor.js +10 -4
  262. package/src/x_ite/Components/ParticleSystems/BoundedPhysicsModel.js +6 -6
  263. package/src/x_ite/Components/ParticleSystems/ConeEmitter.js +44 -36
  264. package/src/x_ite/Components/ParticleSystems/ExplosionEmitter.js +26 -17
  265. package/src/x_ite/Components/ParticleSystems/ForcePhysicsModel.js +20 -7
  266. package/src/x_ite/Components/ParticleSystems/ParticleSystem.js +461 -876
  267. package/src/x_ite/Components/ParticleSystems/PointEmitter.js +39 -35
  268. package/src/x_ite/Components/ParticleSystems/PolylineEmitter.js +112 -128
  269. package/src/x_ite/Components/ParticleSystems/SurfaceEmitter.js +105 -112
  270. package/src/x_ite/Components/ParticleSystems/VolumeEmitter.js +138 -176
  271. package/src/x_ite/Components/ParticleSystems/WindPhysicsModel.js +16 -11
  272. package/src/x_ite/Components/ParticleSystems/X3DParticleEmitterNode.js +807 -217
  273. package/src/x_ite/Components/Picking/LinePickSensor.js +31 -39
  274. package/src/x_ite/Components/PointingDeviceSensor/CylinderSensor.js +90 -107
  275. package/src/x_ite/Components/PointingDeviceSensor/PlaneSensor.js +48 -55
  276. package/src/x_ite/Components/PointingDeviceSensor/SphereSensor.js +53 -70
  277. package/src/x_ite/Components/PointingDeviceSensor/TouchSensor.js +8 -15
  278. package/src/x_ite/Components/ProjectiveTextureMapping/TextureProjectorParallel.js +43 -50
  279. package/src/x_ite/Components/ProjectiveTextureMapping/TextureProjectorPerspective.js +32 -39
  280. package/src/x_ite/Components/Rendering/ClipPlane.js +3 -11
  281. package/src/x_ite/Components/Rendering/Color.js +12 -37
  282. package/src/x_ite/Components/Rendering/ColorRGBA.js +13 -38
  283. package/src/x_ite/Components/Rendering/IndexedLineSet.js +12 -4
  284. package/src/x_ite/Components/Rendering/LineSet.js +21 -13
  285. package/src/x_ite/Components/Rendering/PointSet.js +21 -13
  286. package/src/x_ite/Components/Rendering/X3DColorNode.js +13 -0
  287. package/src/x_ite/Components/Rendering/X3DComposedGeometryNode.js +13 -5
  288. package/src/x_ite/Components/Rendering/X3DGeometryNode.js +248 -325
  289. package/src/x_ite/Components/Rendering/X3DLineGeometryNode.js +305 -134
  290. package/src/x_ite/Components/Rendering/X3DPointGeometryNode.js +99 -122
  291. package/src/x_ite/Components/RigidBodyPhysics/DoubleAxisHingeJoint.js +24 -38
  292. package/src/x_ite/Components/RigidBodyPhysics/SingleAxisHingeJoint.js +10 -17
  293. package/src/x_ite/Components/Shaders/ComposedShader.js +35 -75
  294. package/src/x_ite/Components/Shaders/FloatVertexAttribute.js +5 -15
  295. package/src/x_ite/Components/Shaders/Matrix3VertexAttribute.js +7 -24
  296. package/src/x_ite/Components/Shaders/Matrix4VertexAttribute.js +7 -24
  297. package/src/x_ite/Components/Shaders/ShaderPart.js +1 -10
  298. package/src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js +219 -209
  299. package/src/x_ite/Components/Shaders/X3DShaderNode.js +1 -1
  300. package/src/x_ite/Components/Shaders/X3DVertexAttributeNode.js +23 -1
  301. package/src/x_ite/Components/Shape/Appearance.js +12 -0
  302. package/src/x_ite/Components/Shape/FillProperties.js +12 -1
  303. package/src/x_ite/Components/Shape/LineProperties.js +33 -1
  304. package/src/x_ite/Components/Shape/PointProperties.js +23 -1
  305. package/src/x_ite/Components/Shape/Shape.js +27 -34
  306. package/src/x_ite/Components/Sound/Sound.js +30 -40
  307. package/src/x_ite/Components/Text/Text.js +6 -20
  308. package/src/x_ite/Components/Texturing/TextureCoordinate.js +5 -26
  309. package/src/x_ite/Components/Texturing/TextureProperties.js +4 -4
  310. package/src/x_ite/Components/Texturing/X3DSingleTextureCoordinateNode.js +21 -0
  311. package/src/x_ite/Components/Texturing/X3DSingleTextureNode.js +5 -4
  312. package/src/x_ite/Components/Texturing/X3DTexture2DNode.js +24 -33
  313. package/src/x_ite/Components/Texturing3D/TextureCoordinate3D.js +5 -26
  314. package/src/x_ite/Components/Texturing3D/TextureCoordinate4D.js +5 -26
  315. package/src/x_ite/Components/Texturing3D/X3DTexture3DNode.js +12 -19
  316. package/src/x_ite/Components/VolumeRendering/X3DVolumeDataNode.js +7 -7
  317. package/src/x_ite/Components.js +2 -2
  318. package/src/x_ite/Fallback.js +9 -3
  319. package/src/x_ite/Fields/SFColor.js +4 -0
  320. package/src/x_ite/Fields/SFColorRGBA.js +4 -0
  321. package/src/x_ite/Fields/SFMatrixPrototypeTemplate.js +4 -0
  322. package/src/x_ite/Fields/SFRotation.js +4 -0
  323. package/src/x_ite/Fields/SFString.js +4 -0
  324. package/src/x_ite/Fields/SFVecPrototypeTemplate.js +4 -0
  325. package/src/x_ite/Parser/XMLParser.js +1 -1
  326. package/src/x_ite/Rendering/TextureBuffer.js +43 -36
  327. package/src/x_ite/Rendering/VertexArray.js +101 -0
  328. package/src/x_ite/Rendering/X3DRenderObject.js +123 -144
  329. package/src/x_ite/X3D.js +32 -26
  330. package/src/x_ite.config.js +0 -5
  331. package/src/x_ite.css +200 -162
  332. package/src/x_ite.html +26 -10
  333. package/src/x_ite.js +42 -0
  334. package/x_ite.min.html +26 -10
  335. package/dist/assets/hatching/0.png +0 -0
  336. package/dist/assets/linetype/0.png +0 -0
  337. package/src/assets/hatching/0.png +0 -0
  338. package/src/assets/linetype/0.png +0 -0
  339. package/src/spinner.css +0 -67
  340. package/src/x_ite/Browser/Shape/LineStipples.xcf +0 -0
@@ -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
  {
@@ -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 normal = normalize (projected1 .xy - projected0 .xy);
32
+ vec2 offset = vec2 (-normal .y, normal .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
+ }
@@ -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;
@@ -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;
@@ -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.2/dist/x_ite.css"/>
6
- <script type="text/javascript" src="https://create3000.github.io/code/x_ite/5.0.2/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.0.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>