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
@@ -2,8 +2,8 @@
2
2
  precision highp float;
3
3
  precision highp int;
4
4
 
5
- uniform bool x3d_ColorMaterial; // true if a X3DColorNode is attached, otherwise false
6
5
  uniform x3d_UnlitMaterialParameters x3d_Material;
6
+ uniform bool x3d_ColorMaterial; // true if a X3DColorNode is attached, otherwise false
7
7
 
8
8
  uniform mat4 x3d_ProjectionMatrix;
9
9
  uniform mat4 x3d_ModelViewMatrix;
@@ -12,15 +12,9 @@ attribute float x3d_FogDepth;
12
12
  attribute vec4 x3d_Color;
13
13
  attribute vec4 x3d_Vertex;
14
14
 
15
- varying float fogDepth; // fog depth
16
- varying vec4 color; // color
17
- varying vec3 vertex; // point on geometry
18
-
19
- #ifdef X_ITE
20
- attribute vec4 x3d_TexCoord0;
21
- varying vec3 startPosition; // line stipple start
22
- varying vec3 vertexPosition; // current line stipple position
23
- #endif
15
+ varying float fogDepth; // fog depth
16
+ varying vec4 color; // color
17
+ varying vec3 vertex; // point on geometry
24
18
 
25
19
  #ifdef X3D_LOGARITHMIC_DEPTH_BUFFER
26
20
  varying float depth;
@@ -31,19 +25,11 @@ main ()
31
25
  {
32
26
  vec4 position = x3d_ModelViewMatrix * x3d_Vertex;
33
27
 
34
- fogDepth = x3d_FogDepth;
35
- vertex = position .xyz;
28
+ fogDepth = x3d_FogDepth;
29
+ vertex = position .xyz;
36
30
 
37
31
  gl_Position = x3d_ProjectionMatrix * position;
38
32
 
39
- #ifdef X_ITE
40
- // Line Stipple
41
- vec4 start = x3d_ProjectionMatrix * x3d_ModelViewMatrix * x3d_TexCoord0;
42
-
43
- startPosition = start .xyz / start .w;
44
- vertexPosition = gl_Position .xyz / gl_Position .w;
45
- #endif
46
-
47
33
  #ifdef X3D_LOGARITHMIC_DEPTH_BUFFER
48
34
  depth = 1.0 + gl_Position .w;
49
35
  #endif
@@ -10,8 +10,8 @@ precision highp float;
10
10
  precision highp int;
11
11
 
12
12
  uniform int x3d_GeometryType;
13
- uniform bool x3d_ColorMaterial; // true if a X3DColorNode is attached, otherwise false
14
13
  uniform float x3d_AlphaCutoff;
14
+ uniform bool x3d_ColorMaterial; // true if a X3DColorNode is attached, otherwise false
15
15
 
16
16
  uniform int x3d_NumLights;
17
17
  uniform x3d_LightSourceParameters x3d_LightSource [x3d_MaxLights];
@@ -59,7 +59,7 @@ getBaseColor ()
59
59
  // Get texture color.
60
60
 
61
61
  #if defined(X3D_BASE_TEXTURE) && !defined(X3D_BASE_TEXTURE_3D)
62
- vec4 texCoord = getTexCoord (x3d_BaseTexture .textureTransformMapping, x3d_BaseTexture .textureCoordinateMapping);
62
+ vec3 texCoord = getTexCoord (x3d_BaseTexture .textureTransformMapping, x3d_BaseTexture .textureCoordinateMapping);
63
63
  #if defined(X3D_BASE_TEXTURE_2D)
64
64
  return baseParameter * SRGBtoLINEAR (texture2D (x3d_BaseTexture .texture2D, texCoord .st));
65
65
  #elif defined(X3D_BASE_TEXTURE_CUBE)
@@ -80,7 +80,7 @@ getEmissiveColor ()
80
80
  // Get texture color.
81
81
 
82
82
  #if defined(X3D_EMISSIVE_TEXTURE) && !defined(X3D_EMISSIVE_TEXTURE_3D)
83
- vec4 texCoord = getTexCoord (x3d_EmissiveTexture .textureTransformMapping, x3d_EmissiveTexture .textureCoordinateMapping);
83
+ vec3 texCoord = getTexCoord (x3d_EmissiveTexture .textureTransformMapping, x3d_EmissiveTexture .textureCoordinateMapping);
84
84
 
85
85
  #if defined(X3D_EMISSIVE_TEXTURE_2D)
86
86
  return emissiveParameter * SRGBtoLINEAR (texture2D (x3d_EmissiveTexture .texture2D, texCoord .st)) .rgb;
@@ -104,7 +104,7 @@ getMetallicRoughness ()
104
104
  // Get texture color.
105
105
 
106
106
  #if defined(X3D_METALLIC_ROUGHNESS_TEXTURE) && !defined(X3D_METALLIC_ROUGHNESS_TEXTURE_3D)
107
- vec4 texCoord = getTexCoord (x3d_MetallicRoughnessTexture .textureTransformMapping, x3d_MetallicRoughnessTexture .textureCoordinateMapping);
107
+ vec3 texCoord = getTexCoord (x3d_MetallicRoughnessTexture .textureTransformMapping, x3d_MetallicRoughnessTexture .textureCoordinateMapping);
108
108
  // Roughness is stored in the 'g' channel, metallic is stored in the 'b' channel.
109
109
  // This layout intentionally reserves the 'r' channel for (optional) occlusion map data
110
110
  #if defined(X3D_METALLIC_ROUGHNESS_TEXTURE_2D)
@@ -127,7 +127,7 @@ getOcclusionFactor ()
127
127
  // Get texture color.
128
128
 
129
129
  #if defined(X3D_OCCLUSION_TEXTURE) && !defined(X3D_OCCLUSION_TEXTURE_3D)
130
- vec4 texCoord = getTexCoord (x3d_OcclusionTexture .textureTransformMapping, x3d_OcclusionTexture .textureCoordinateMapping);
130
+ vec3 texCoord = getTexCoord (x3d_OcclusionTexture .textureTransformMapping, x3d_OcclusionTexture .textureCoordinateMapping);
131
131
 
132
132
  #if defined(X3D_OCCLUSION_TEXTURE_2D)
133
133
  return texture2D (x3d_OcclusionTexture .texture2D, texCoord .st) .r;
@@ -325,7 +325,7 @@ main ()
325
325
  float G = geometricOcclusion (pbrInputs);
326
326
  float D = microfacetDistribution (pbrInputs);
327
327
 
328
- float attenuationFactor = di ? 1.0 : 1.0 / max (c [0] + c [1] * dL + c [2] * (dL * dL), 1.0);
328
+ float attenuationFactor = di ? 1.0 : 1.0 / max (dot (c, vec3 (1.0, dL, dL * dL)), 1.0);
329
329
  float spotFactor = light .type == x3d_SpotLight ? getSpotFactor (light .cutOffAngle, light .beamWidth, L, d) : 1.0;
330
330
  float attenuationSpotFactor = attenuationFactor * spotFactor;
331
331
 
@@ -31,7 +31,7 @@ main ()
31
31
  vec4 position = x3d_ModelViewMatrix * x3d_Vertex;
32
32
 
33
33
  vertex = position .xyz;
34
- normal = normalize (x3d_NormalMatrix * x3d_Normal);
34
+ normal = x3d_NormalMatrix * x3d_Normal;
35
35
  texCoord0 = x3d_TexCoord0;
36
36
  texCoord1 = x3d_TexCoord1;
37
37
  color = x3d_Color;
@@ -8,8 +8,8 @@ precision highp float;
8
8
  precision highp int;
9
9
 
10
10
  uniform int x3d_GeometryType;
11
- uniform bool x3d_ColorMaterial; // true if a X3DColorNode is attached, otherwise false
12
11
  uniform float x3d_AlphaCutoff;
12
+ uniform bool x3d_ColorMaterial; // true if a X3DColorNode is attached, otherwise false
13
13
 
14
14
  uniform int x3d_NumLights;
15
15
  uniform x3d_LightSourceParameters x3d_LightSource [x3d_MaxLights];
@@ -62,7 +62,7 @@ getAmbientColor (in vec3 diffuseColor)
62
62
  // Get texture color.
63
63
 
64
64
  #if defined(X3D_AMBIENT_TEXTURE) && !defined(X3D_AMBIENT_TEXTURE_3D)
65
- vec4 texCoord = getTexCoord (x3d_AmbientTexture .textureTransformMapping, x3d_AmbientTexture .textureCoordinateMapping);
65
+ vec3 texCoord = getTexCoord (x3d_AmbientTexture .textureTransformMapping, x3d_AmbientTexture .textureCoordinateMapping);
66
66
 
67
67
  #if defined(X3D_AMBIENT_TEXTURE_2D)
68
68
  return ambientParameter * texture2D (x3d_AmbientTexture .texture2D, texCoord .st) .rgb;
@@ -85,12 +85,12 @@ getDiffuseColor ()
85
85
  // Get texture color.
86
86
 
87
87
  #if defined(X3D_DIFFUSE_TEXTURE) && !defined(X3D_DIFFUSE_TEXTURE_3D)
88
- vec4 texCoord = getTexCoord (x3d_DiffuseTexture .textureTransformMapping, x3d_DiffuseTexture .textureCoordinateMapping);
88
+ vec3 texCoord = getTexCoord (x3d_DiffuseTexture .textureTransformMapping, x3d_DiffuseTexture .textureCoordinateMapping);
89
89
 
90
90
  #if defined(X3D_DIFFUSE_TEXTURE_2D)
91
- return diffuseParameter * texture2D (x3d_DiffuseTexture .texture2D, texCoord .st) .rgba;
91
+ return diffuseParameter * texture2D (x3d_DiffuseTexture .texture2D, texCoord .st);
92
92
  #elif defined(X3D_DIFFUSE_TEXTURE_CUBE)
93
- return diffuseParameter * textureCube (x3d_DiffuseTexture .textureCube, texCoord .stp) .rgba;
93
+ return diffuseParameter * textureCube (x3d_DiffuseTexture .textureCube, texCoord .stp);
94
94
  #endif
95
95
  #else
96
96
  return getTextureColor (diffuseParameter, vec4 (x3d_Material .specularColor, alpha));
@@ -107,7 +107,7 @@ getSpecularColor ()
107
107
  // Get texture color.
108
108
 
109
109
  #if defined(X3D_SPECULAR_TEXTURE) && !defined(X3D_SPECULAR_TEXTURE_3D)
110
- vec4 texCoord = getTexCoord (x3d_SpecularTexture .textureTransformMapping, x3d_SpecularTexture .textureCoordinateMapping);
110
+ vec3 texCoord = getTexCoord (x3d_SpecularTexture .textureTransformMapping, x3d_SpecularTexture .textureCoordinateMapping);
111
111
 
112
112
  #if defined(X3D_SPECULAR_TEXTURE_2D)
113
113
  return specularParameter * texture2D (x3d_SpecularTexture .texture2D, texCoord .st) .rgb;
@@ -129,7 +129,7 @@ getEmissiveColor ()
129
129
  // Get texture color.
130
130
 
131
131
  #if defined(X3D_EMISSIVE_TEXTURE) && !defined(X3D_EMISSIVE_TEXTURE_3D)
132
- vec4 texCoord = getTexCoord (x3d_EmissiveTexture .textureTransformMapping, x3d_EmissiveTexture .textureCoordinateMapping);
132
+ vec3 texCoord = getTexCoord (x3d_EmissiveTexture .textureTransformMapping, x3d_EmissiveTexture .textureCoordinateMapping);
133
133
 
134
134
  #if defined(X3D_EMISSIVE_TEXTURE_2D)
135
135
  return emissiveParameter * texture2D (x3d_EmissiveTexture .texture2D, texCoord .st) .rgb;
@@ -151,7 +151,7 @@ getShininessFactor ()
151
151
  // Get texture color.
152
152
 
153
153
  #if defined(X3D_SHININESS_TEXTURE) && !defined(X3D_SHININESS_TEXTURE_3D)
154
- vec4 texCoord = getTexCoord (x3d_ShininessTexture .textureTransformMapping, x3d_ShininessTexture .textureCoordinateMapping);
154
+ vec3 texCoord = getTexCoord (x3d_ShininessTexture .textureTransformMapping, x3d_ShininessTexture .textureCoordinateMapping);
155
155
 
156
156
  #if defined(X3D_SHININESS_TEXTURE_2D)
157
157
  return shininess * texture2D (x3d_ShininessTexture .texture2D, texCoord .st) .a * 128.0;
@@ -169,7 +169,7 @@ getOcclusionFactor ()
169
169
  // Get texture color.
170
170
 
171
171
  #if defined(X3D_OCCLUSION_TEXTURE) && !defined(X3D_OCCLUSION_TEXTURE_3D)
172
- vec4 texCoord = getTexCoord (x3d_OcclusionTexture .textureTransformMapping, x3d_OcclusionTexture .textureCoordinateMapping);
172
+ vec3 texCoord = getTexCoord (x3d_OcclusionTexture .textureTransformMapping, x3d_OcclusionTexture .textureCoordinateMapping);
173
173
 
174
174
  #if defined(X3D_OCCLUSION_TEXTURE_2D)
175
175
  return texture2D (x3d_OcclusionTexture .texture2D, texCoord .st) .r;
@@ -230,7 +230,7 @@ getMaterialColor ()
230
230
  float specularFactor = shininessFactor > 0.0 ? pow (max (dot (N, H), 0.0), shininessFactor) : 1.0;
231
231
  vec3 specularTerm = specularColor * specularFactor;
232
232
 
233
- float attenuationFactor = di ? 1.0 : 1.0 / max (c [0] + c [1] * dL + c [2] * (dL * dL), 1.0);
233
+ float attenuationFactor = di ? 1.0 : 1.0 / max (dot (c, vec3 (1.0, dL, dL * dL)), 1.0);
234
234
  float spotFactor = light .type == x3d_SpotLight ? getSpotFactor (light .cutOffAngle, light .beamWidth, L, d) : 1.0;
235
235
  float attenuationSpotFactor = attenuationFactor * spotFactor;
236
236
  vec3 ambientTerm = light .ambientIntensity * ambientColor;
@@ -4,9 +4,9 @@ precision highp int;
4
4
 
5
5
  uniform x3d_PointPropertiesParameters x3d_PointProperties;
6
6
 
7
- uniform bool x3d_ColorMaterial; // true if a X3DColorNode is attached, otherwise false
8
7
  uniform x3d_UnlitMaterialParameters x3d_Material;
9
8
  uniform int x3d_NumTextures;
9
+ uniform bool x3d_ColorMaterial; // true if a X3DColorNode is attached, otherwise false
10
10
 
11
11
  uniform mat4 x3d_ProjectionMatrix;
12
12
  uniform mat4 x3d_ModelViewMatrix;
@@ -48,7 +48,7 @@ main ()
48
48
  float dL = length (vertex);
49
49
 
50
50
  pointSize = x3d_PointProperties .pointSizeScaleFactor;
51
- pointSize *= 1.0 / (pointSizeAttenuation [0] + pointSizeAttenuation [1] * dL + pointSizeAttenuation [2] * (dL * dL));
51
+ pointSize /= dot (pointSizeAttenuation, vec3 (1.0, dL, dL * dL));
52
52
  pointSize = clamp (pointSize, pointSizeMinValue, pointSizeMaxValue);
53
53
 
54
54
  gl_PointSize = pointSize > 1.0 && x3d_NumTextures == 0 ? pointSize + 1.0 : pointSize;
@@ -7,8 +7,8 @@ precision highp float;
7
7
  precision highp int;
8
8
 
9
9
  uniform int x3d_GeometryType;
10
- uniform bool x3d_ColorMaterial; // true if a X3DColorNode is attached, otherwise false
11
10
  uniform float x3d_AlphaCutoff;
11
+ uniform bool x3d_ColorMaterial; // true if a X3DColorNode is attached, otherwise false
12
12
 
13
13
  uniform x3d_UnlitMaterialParameters x3d_Material;
14
14
 
@@ -52,12 +52,12 @@ getEmissiveColor ()
52
52
  // Get texture color.
53
53
 
54
54
  #if defined(X3D_EMISSIVE_TEXTURE) && !defined(X3D_EMISSIVE_TEXTURE_3D)
55
- vec4 texCoord = getTexCoord (x3d_EmissiveTexture .textureTransformMapping, x3d_EmissiveTexture .textureCoordinateMapping);
55
+ vec3 texCoord = getTexCoord (x3d_EmissiveTexture .textureTransformMapping, x3d_EmissiveTexture .textureCoordinateMapping);
56
56
 
57
57
  #if defined(X3D_EMISSIVE_TEXTURE_2D)
58
- return emissiveParameter * texture2D (x3d_EmissiveTexture .texture2D, texCoord .st) .rgba;
58
+ return emissiveParameter * texture2D (x3d_EmissiveTexture .texture2D, texCoord .st);
59
59
  #elif defined(X3D_EMISSIVE_TEXTURE_CUBE)
60
- return emissiveParameter * textureCube (x3d_EmissiveTexture .textureCube, texCoord .stp) .rgba;
60
+ return emissiveParameter * textureCube (x3d_EmissiveTexture .textureCube, texCoord .stp);
61
61
  #endif
62
62
  #else
63
63
  return getTextureColor (emissiveParameter, vec4 (vec3 (1.0), alpha));
@@ -27,7 +27,7 @@ getNormalVector ()
27
27
  // Get normal vector.
28
28
 
29
29
  #if defined(X3D_NORMAL_TEXTURE) && !defined(X3D_NORMAL_TEXTURE_3D)
30
- vec4 texCoord = getTexCoord (x3d_NormalTexture .textureTransformMapping, x3d_NormalTexture .textureCoordinateMapping);
30
+ vec3 texCoord = getTexCoord (x3d_NormalTexture .textureTransformMapping, x3d_NormalTexture .textureCoordinateMapping);
31
31
  vec3 normalScale = vec3 (vec2 (x3d_Material .normalScale), 1.0);
32
32
  mat3 tbn = getTBNMatrix (texCoord .st);
33
33
 
@@ -134,7 +134,7 @@ getTexCoord (const in x3d_TextureCoordinateGeneratorParameters textureCoordinate
134
134
  return getTextureMatrix (textureTransformMapping) * getTexCoord (textureCoordinateMapping);
135
135
  }
136
136
 
137
- vec4
137
+ vec3
138
138
  getTexCoord (const in int textureTransformMapping, const in int textureCoordinateMapping)
139
139
  {
140
140
  vec4 texCoord;
@@ -154,7 +154,7 @@ getTexCoord (const in int textureTransformMapping, const in int textureCoordinat
154
154
  if ((x3d_GeometryType == x3d_Geometry2D) && (gl_FrontFacing == false))
155
155
  texCoord .s = 1.0 - texCoord .s;
156
156
 
157
- return texCoord;
157
+ return texCoord .stp;
158
158
  }
159
159
 
160
160
  vec4
@@ -205,14 +205,9 @@ getTextureColor (const in vec4 diffuseColor, const in vec4 specularColor)
205
205
 
206
206
  // Get texture color.
207
207
 
208
- vec4 texCoord = getTexCoord (x3d_TextureCoordinateGenerator [i], i, i);
208
+ vec3 texCoord = getTexCoord (i, i);
209
209
  vec4 textureColor = vec4 (1.0);
210
210
 
211
- texCoord .stp /= texCoord .q;
212
-
213
- if ((x3d_GeometryType == x3d_Geometry2D) && (gl_FrontFacing == false))
214
- texCoord .s = 1.0 - texCoord .s;
215
-
216
211
  if (x3d_TextureType [i] == x3d_TextureType2D)
217
212
  {
218
213
  textureColor = getTexture2D (i, texCoord .st);
@@ -2,6 +2,7 @@
2
2
 
3
3
  precision highp float;
4
4
  precision highp int;
5
+ precision highp sampler2D;
5
6
 
6
7
  uniform mat4 x3d_ProjectionMatrix;
7
8
  uniform mat4 x3d_ModelViewMatrix;
@@ -10,10 +11,12 @@ in vec4 x3d_Vertex;
10
11
 
11
12
  out vec3 vertex; // point on geometry
12
13
 
14
+ #pragma X3D include "include/Particle.glsl"
15
+
13
16
  void
14
17
  main ()
15
18
  {
16
- vec4 position = x3d_ModelViewMatrix * x3d_Vertex;
19
+ vec4 position = x3d_ModelViewMatrix * getVertex (x3d_Vertex);
17
20
 
18
21
  vertex = position .xyz;
19
22
 
@@ -4,8 +4,8 @@ precision highp float;
4
4
  precision highp int;
5
5
 
6
6
  uniform int x3d_GeometryType; // true if a X3DMaterialNode is attached, otherwise false
7
- uniform bool x3d_ColorMaterial; // true if a X3DColorNode is attached, otherwise false
8
7
  uniform float x3d_AlphaCutoff;
8
+ uniform bool x3d_ColorMaterial; // true if a X3DColorNode is attached, otherwise false
9
9
 
10
10
  in float fogDepth; // fog depth
11
11
  in vec4 frontColor; // color
@@ -2,17 +2,18 @@
2
2
 
3
3
  precision highp float;
4
4
  precision highp int;
5
+ precision highp sampler2D;
5
6
 
6
7
  uniform mat3 x3d_NormalMatrix;
7
8
  uniform mat4 x3d_ProjectionMatrix;
8
9
  uniform mat4 x3d_ModelViewMatrix;
9
10
 
10
- uniform bool x3d_ColorMaterial; // true if a X3DColorNode is attached, otherwise false
11
-
12
11
  uniform int x3d_NumLights;
13
12
  uniform x3d_LightSourceParameters x3d_LightSource [x3d_MaxLights];
14
13
  uniform x3d_MaterialParameters x3d_Material;
15
14
 
15
+ uniform bool x3d_ColorMaterial; // true if a X3DColorNode is attached, otherwise false
16
+
16
17
  in float x3d_FogDepth;
17
18
  in vec4 x3d_Color;
18
19
  in vec3 x3d_Normal;
@@ -46,6 +47,7 @@ out vec4 texCoord1; // texCoord1
46
47
  out float depth;
47
48
  #endif
48
49
 
50
+ #pragma X3D include "include/Particle.glsl"
49
51
  #pragma X3D include "include/SpotFactor.glsl"
50
52
 
51
53
  vec4
@@ -88,7 +90,7 @@ getMaterialColor (const in vec3 N,
88
90
  float specularFactor = material .shininess > 0.0 ? pow (max (dot (N, H), 0.0), material .shininess * 128.0) : 1.0;
89
91
  vec3 specularTerm = material .specularColor * specularFactor;
90
92
 
91
- float attenuationFactor = di ? 1.0 : 1.0 / max (c [0] + c [1] * dL + c [2] * (dL * dL), 1.0);
93
+ float attenuationFactor = di ? 1.0 : 1.0 / max (dot (c, vec3 (1.0, dL, dL * dL)), 1.0);
92
94
  float spotFactor = light .type == x3d_SpotLight ? getSpotFactor (light .cutOffAngle, light .beamWidth, L, d) : 1.0;
93
95
  float attenuationSpotFactor = attenuationFactor * spotFactor;
94
96
  vec3 ambientTerm = light .ambientIntensity * ambientColor;
@@ -106,7 +108,7 @@ getMaterialColor (const in vec3 N,
106
108
  void
107
109
  main ()
108
110
  {
109
- vec4 position = x3d_ModelViewMatrix * x3d_Vertex;
111
+ vec4 position = x3d_ModelViewMatrix * getVertex (x3d_Vertex);
110
112
 
111
113
  fogDepth = x3d_FogDepth;
112
114
  vertex = position .xyz;
@@ -115,11 +117,11 @@ main ()
115
117
  localVertex = x3d_Vertex .xyz;
116
118
 
117
119
  #if x3d_MaxTextures > 0
118
- texCoord0 = x3d_TexCoord0;
120
+ texCoord0 = getTexCoord (x3d_TexCoord0);
119
121
  #endif
120
122
 
121
123
  #if x3d_MaxTextures > 1
122
- texCoord1 = x3d_TexCoord1;
124
+ texCoord1 = getTexCoord (x3d_TexCoord1);
123
125
  #endif
124
126
 
125
127
  gl_Position = x3d_ProjectionMatrix * position;
@@ -7,14 +7,12 @@ uniform float x3d_AlphaCutoff;
7
7
  uniform x3d_LinePropertiesParameters x3d_LineProperties;
8
8
  uniform ivec4 x3d_Viewport;
9
9
 
10
- in float fogDepth; // fog depth
11
- in vec4 color; // color
12
- in vec3 vertex; // point on geometry
13
-
14
- #ifdef X_ITE
15
- in vec3 startPosition; // line stipple start
16
- in vec3 vertexPosition; // current line stipple position
17
- #endif
10
+ flat in float lengthSoFar; // in px, stipple support
11
+ flat in vec2 startPoint; // in px, stipple support
12
+ in vec2 midPoint; // in px, stipple support
13
+ in float fogDepth; // fog depth
14
+ in vec4 color; // color
15
+ in vec3 vertex; // point on geometry
18
16
 
19
17
  #ifdef X3D_LOGARITHMIC_DEPTH_BUFFER
20
18
  uniform float x3d_LogarithmicFarFactor1_2;
@@ -25,31 +23,27 @@ out vec4 x3d_FragColor;
25
23
 
26
24
  #pragma X3D include "include/Fog.glsl"
27
25
  #pragma X3D include "include/ClipPlanes.glsl"
26
+ #pragma X3D include "include/Line2.glsl"
28
27
 
29
- #ifdef X_ITE
30
28
  void
31
29
  stipple ()
32
30
  {
33
31
  if (x3d_LineProperties .applied)
34
32
  {
35
- vec2 direction = (vertexPosition .xy - startPosition .xy) * vec2 (x3d_Viewport .zw) * 0.5;
36
- float distance = length (direction) / 16.0;
37
- float color = texture (x3d_LineProperties .linetype, vec2 (distance, distance)) .a;
33
+ vec2 point = closest_point (line2 (startPoint, midPoint), gl_FragCoord .xy);
34
+ float s = (lengthSoFar + length (point - startPoint)) * x3d_LineProperties .lineStippleScale;
35
+ float alpha = texture (x3d_LineProperties .linetype, vec2 (s, 0.5)) .a;
38
36
 
39
- if (color == 0.0)
37
+ if (alpha != 1.0)
40
38
  discard;
41
39
  }
42
40
  }
43
- #endif
44
41
 
45
42
  void
46
43
  main ()
47
44
  {
48
45
  clip ();
49
-
50
- #ifdef X_ITE
51
46
  stipple ();
52
- #endif
53
47
 
54
48
  vec4 finalColor = vec4 (0.0);
55
49
 
@@ -2,49 +2,45 @@
2
2
 
3
3
  precision highp float;
4
4
  precision highp int;
5
+ precision highp sampler2D;
5
6
 
6
- uniform bool x3d_ColorMaterial; // true if a X3DColorNode is attached, otherwise false
7
7
  uniform x3d_UnlitMaterialParameters x3d_Material;
8
+ uniform bool x3d_ColorMaterial; // true if a X3DColorNode is attached, otherwise false
8
9
 
9
10
  uniform mat4 x3d_ProjectionMatrix;
10
11
  uniform mat4 x3d_ModelViewMatrix;
11
12
 
12
13
  in float x3d_FogDepth;
14
+ in vec4 x3d_TexCoord0;
13
15
  in vec4 x3d_Color;
14
16
  in vec4 x3d_Vertex;
15
17
 
16
- out float fogDepth; // fog depth
17
- out vec4 color; // color
18
- out vec3 vertex; // point on geometry
19
-
20
- #ifdef X_ITE
21
- in vec4 x3d_TexCoord0;
22
- out vec3 startPosition; // line stipple start
23
- out vec3 vertexPosition; // current line stipple position
24
- #endif
18
+ flat out float lengthSoFar; // in px, stipple support
19
+ flat out vec2 startPoint; // in px, stipple support
20
+ out vec2 midPoint; // in px, stipple support
21
+ out float fogDepth; // fog depth
22
+ out vec4 color; // color
23
+ out vec3 vertex; // point on geometry
25
24
 
26
25
  #ifdef X3D_LOGARITHMIC_DEPTH_BUFFER
27
26
  out float depth;
28
27
  #endif
29
28
 
29
+ #pragma X3D include "include/Particle.glsl"
30
+
30
31
  void
31
32
  main ()
32
33
  {
33
- vec4 position = x3d_ModelViewMatrix * x3d_Vertex;
34
+ vec4 position = x3d_ModelViewMatrix * getVertex (x3d_Vertex);
34
35
 
35
- fogDepth = x3d_FogDepth;
36
- vertex = position .xyz;
36
+ lengthSoFar = x3d_TexCoord0 .z;
37
+ startPoint = x3d_TexCoord0 .xy;
38
+ midPoint = x3d_TexCoord0 .xy;
39
+ fogDepth = x3d_FogDepth;
40
+ vertex = position .xyz;
37
41
 
38
42
  gl_Position = x3d_ProjectionMatrix * position;
39
43
 
40
- #ifdef X_ITE
41
- // Line Stipple
42
- vec4 start = x3d_ProjectionMatrix * x3d_ModelViewMatrix * x3d_TexCoord0;
43
-
44
- startPosition = start .xyz / start .w;
45
- vertexPosition = gl_Position .xyz / gl_Position .w;
46
- #endif
47
-
48
44
  #ifdef X3D_LOGARITHMIC_DEPTH_BUFFER
49
45
  depth = 1.0 + gl_Position .w;
50
46
  #endif
@@ -0,0 +1,6 @@
1
+ #version 300 es
2
+
3
+ precision highp float;
4
+
5
+ void
6
+ main () { }
@@ -0,0 +1,77 @@
1
+ #version 300 es
2
+
3
+ precision highp float;
4
+
5
+ uniform vec4 viewport;
6
+ uniform mat4 modelViewProjectionMatrix;
7
+ uniform mat4 invModelViewProjectionMatrix;
8
+ uniform float scale;
9
+
10
+ in float x3d_FogDepth0; in vec4 x3d_Color0; in vec4 x3d_TexCoord0; in vec4 x3d_Vertex0;
11
+ in float x3d_FogDepth1; in vec4 x3d_Color1; in vec4 x3d_TexCoord1; in vec4 x3d_Vertex1;
12
+
13
+ out float fogDepth0; out vec4 color0; out vec4 texCoord0; out vec4 vertex0;
14
+ out float fogDepth1; out vec4 color1; out vec4 texCoord1; out vec4 vertex1;
15
+ out float fogDepth2; out vec4 color2; out vec4 texCoord2; out vec4 vertex2;
16
+
17
+ vec3
18
+ projectPoint (const in vec4 point, const in mat4 modelViewProjectionMatrix, const in vec4 viewport)
19
+ {
20
+ vec4 vin = modelViewProjectionMatrix * point;
21
+
22
+ vin .xyz = vin .xyz / (2.0 * vin .w) + 0.5;
23
+
24
+ return vec3 (vin .xy * viewport .zw + viewport .xy, vin .z);
25
+ }
26
+
27
+ vec4
28
+ unProjectPoint (const in vec3 win, const in mat4 invModelViewProjection, const in vec4 viewport)
29
+ {
30
+ vec4 vin = vec4 ((win .xy - viewport .xy) / viewport .zw * 2.0 - 1.0, 2.0 * win .z - 1.0, 1.0);
31
+
32
+ vin = invModelViewProjection * vin;
33
+
34
+ return vec4 (vin .xyz / vin .w, 1.0);
35
+ }
36
+
37
+ void
38
+ main ()
39
+ {
40
+ vec3 projected0 = projectPoint (x3d_Vertex0, modelViewProjectionMatrix, viewport);
41
+ vec3 projected1 = projectPoint (x3d_Vertex1, modelViewProjectionMatrix, viewport);
42
+ vec2 direction = normalize (projected1 .xy - projected0 .xy);
43
+ vec2 offset = vec2 (-direction .y, direction .x) * scale;
44
+
45
+ // 0 - 3
46
+ // | \ |
47
+ // 1 - 2
48
+
49
+ if (gl_InstanceID == 0)
50
+ {
51
+ vec2 pq0 = projected0 .xy + offset;
52
+ vec2 pq1 = projected0 .xy - offset;
53
+ vec2 pq2 = projected1 .xy - offset;
54
+
55
+ vec4 p0 = unProjectPoint (vec3 (pq0 .xy, projected0 .z), invModelViewProjectionMatrix, viewport);
56
+ vec4 p1 = unProjectPoint (vec3 (pq1 .xy, projected0 .z), invModelViewProjectionMatrix, viewport);
57
+ vec4 p2 = unProjectPoint (vec3 (pq2 .xy, projected1 .z), invModelViewProjectionMatrix, viewport);
58
+
59
+ fogDepth0 = x3d_FogDepth0; color0 = x3d_Color0; texCoord0 = x3d_TexCoord0; vertex0 = p0;
60
+ fogDepth1 = x3d_FogDepth0; color1 = x3d_Color0; texCoord1 = x3d_TexCoord0; vertex1 = p1;
61
+ fogDepth2 = x3d_FogDepth1; color2 = x3d_Color1; texCoord2 = x3d_TexCoord1; vertex2 = p2;
62
+ }
63
+ else
64
+ {
65
+ vec2 pq0 = projected0 .xy + offset;
66
+ vec2 pq2 = projected1 .xy - offset;
67
+ vec2 pq3 = projected1 .xy + offset;
68
+
69
+ vec4 p0 = unProjectPoint (vec3 (pq0 .xy, projected0 .z), invModelViewProjectionMatrix, viewport);
70
+ vec4 p2 = unProjectPoint (vec3 (pq2 .xy, projected1 .z), invModelViewProjectionMatrix, viewport);
71
+ vec4 p3 = unProjectPoint (vec3 (pq3 .xy, projected1 .z), invModelViewProjectionMatrix, viewport);
72
+
73
+ fogDepth0 = x3d_FogDepth0; color0 = x3d_Color0; texCoord0 = x3d_TexCoord0; vertex0 = p0;
74
+ fogDepth1 = x3d_FogDepth1; color1 = x3d_Color1; texCoord1 = x3d_TexCoord1; vertex1 = p2;
75
+ fogDepth2 = x3d_FogDepth1; color2 = x3d_Color1; texCoord2 = x3d_TexCoord1; vertex2 = p3;
76
+ }
77
+ }
@@ -8,8 +8,8 @@ precision highp int;
8
8
  out vec4 x3d_FragColor;
9
9
 
10
10
  uniform int x3d_GeometryType;
11
- uniform bool x3d_ColorMaterial; // true if a X3DColorNode is attached, otherwise false
12
11
  uniform float x3d_AlphaCutoff;
12
+ uniform bool x3d_ColorMaterial; // true if a X3DColorNode is attached, otherwise false
13
13
 
14
14
  uniform int x3d_NumLights;
15
15
  uniform x3d_LightSourceParameters x3d_LightSource [x3d_MaxLights];
@@ -57,7 +57,7 @@ getBaseColor ()
57
57
  // Get texture color.
58
58
 
59
59
  #if defined(X3D_BASE_TEXTURE)
60
- vec4 texCoord = getTexCoord (x3d_BaseTexture .textureTransformMapping, x3d_BaseTexture .textureCoordinateMapping);
60
+ vec3 texCoord = getTexCoord (x3d_BaseTexture .textureTransformMapping, x3d_BaseTexture .textureCoordinateMapping);
61
61
  #if defined(X3D_BASE_TEXTURE_2D)
62
62
  return baseParameter * SRGBtoLINEAR (texture (x3d_BaseTexture .texture2D, texCoord .st));
63
63
  #elif defined(X3D_BASE_TEXTURE_3D)
@@ -80,7 +80,7 @@ getEmissiveColor ()
80
80
  // Get texture color.
81
81
 
82
82
  #if defined(X3D_EMISSIVE_TEXTURE)
83
- vec4 texCoord = getTexCoord (x3d_EmissiveTexture .textureTransformMapping, x3d_EmissiveTexture .textureCoordinateMapping);
83
+ vec3 texCoord = getTexCoord (x3d_EmissiveTexture .textureTransformMapping, x3d_EmissiveTexture .textureCoordinateMapping);
84
84
 
85
85
  #if defined(X3D_EMISSIVE_TEXTURE_2D)
86
86
  return emissiveParameter * SRGBtoLINEAR (texture (x3d_EmissiveTexture .texture2D, texCoord .st)) .rgb;
@@ -106,7 +106,7 @@ getMetallicRoughness ()
106
106
  // Get texture color.
107
107
 
108
108
  #if defined(X3D_METALLIC_ROUGHNESS_TEXTURE)
109
- vec4 texCoord = getTexCoord (x3d_MetallicRoughnessTexture .textureTransformMapping, x3d_MetallicRoughnessTexture .textureCoordinateMapping);
109
+ vec3 texCoord = getTexCoord (x3d_MetallicRoughnessTexture .textureTransformMapping, x3d_MetallicRoughnessTexture .textureCoordinateMapping);
110
110
  // Roughness is stored in the 'g' channel, metallic is stored in the 'b' channel.
111
111
  // This layout intentionally reserves the 'r' channel for (optional) occlusion map data
112
112
  #if defined(X3D_METALLIC_ROUGHNESS_TEXTURE_2D)
@@ -131,7 +131,7 @@ getOcclusionFactor ()
131
131
  // Get texture color.
132
132
 
133
133
  #if defined(X3D_OCCLUSION_TEXTURE)
134
- vec4 texCoord = getTexCoord (x3d_OcclusionTexture .textureTransformMapping, x3d_OcclusionTexture .textureCoordinateMapping);
134
+ vec3 texCoord = getTexCoord (x3d_OcclusionTexture .textureTransformMapping, x3d_OcclusionTexture .textureCoordinateMapping);
135
135
 
136
136
  #if defined(X3D_OCCLUSION_TEXTURE_2D)
137
137
  return texture (x3d_OcclusionTexture .texture2D, texCoord .st) .r;
@@ -331,7 +331,7 @@ main ()
331
331
  float G = geometricOcclusion (pbrInputs);
332
332
  float D = microfacetDistribution (pbrInputs);
333
333
 
334
- float attenuationFactor = di ? 1.0 : 1.0 / max (c [0] + c [1] * dL + c [2] * (dL * dL), 1.0);
334
+ float attenuationFactor = di ? 1.0 : 1.0 / max (dot (c, vec3 (1.0, dL, dL * dL)), 1.0);
335
335
  float spotFactor = light .type == x3d_SpotLight ? getSpotFactor (light .cutOffAngle, light .beamWidth, L, d) : 1.0;
336
336
  float attenuationSpotFactor = attenuationFactor * spotFactor;
337
337