x_ite 4.7.12 → 5.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 (759) hide show
  1. package/.vscode/settings.json +9 -2
  2. package/Makefile +27 -24
  3. package/build/bin/version-number.pl +1 -1
  4. package/build/bin/version.pl +3 -3
  5. package/build/parts/default.start.frag.js +2 -2
  6. package/build/parts/x_ite.end.frag.js +1 -2
  7. package/build/parts/x_ite.start.frag.js +4 -7
  8. package/dist/assets/components/annotation.js +312 -312
  9. package/dist/assets/components/annotation.min.js +1 -1
  10. package/dist/assets/components/cad-geometry.js +536 -538
  11. package/dist/assets/components/cad-geometry.min.js +1 -1
  12. package/dist/assets/components/cube-map-texturing.js +797 -796
  13. package/dist/assets/components/cube-map-texturing.min.js +1 -1
  14. package/dist/assets/components/dis.js +487 -472
  15. package/dist/assets/components/dis.min.js +1 -1
  16. package/dist/assets/components/event-utilities.js +486 -505
  17. package/dist/assets/components/event-utilities.min.js +1 -1
  18. package/dist/assets/components/geometry2d.js +1221 -1271
  19. package/dist/assets/components/geometry2d.min.js +1 -1
  20. package/dist/assets/components/geospatial.js +2657 -2653
  21. package/dist/assets/components/geospatial.min.js +1 -2
  22. package/dist/assets/components/h-anim.js +640 -640
  23. package/dist/assets/components/h-anim.min.js +1 -1
  24. package/dist/assets/components/key-device-sensor.js +547 -549
  25. package/dist/assets/components/key-device-sensor.min.js +1 -1
  26. package/dist/assets/components/layout.js +1435 -1433
  27. package/dist/assets/components/layout.min.js +1 -1
  28. package/dist/assets/components/nurbs.js +3942 -3964
  29. package/dist/assets/components/nurbs.min.js +1 -2
  30. package/dist/assets/components/particle-systems.js +3227 -3238
  31. package/dist/assets/components/particle-systems.min.js +1 -2
  32. package/dist/assets/components/picking.js +1704 -1712
  33. package/dist/assets/components/picking.min.js +1 -1
  34. package/dist/assets/components/projective-texture-mapping.js +553 -553
  35. package/dist/assets/components/projective-texture-mapping.min.js +1 -1
  36. package/dist/assets/components/rigid-body-physics.js +3255 -3265
  37. package/dist/assets/components/rigid-body-physics.min.js +1 -59
  38. package/dist/assets/components/scripting.js +544 -549
  39. package/dist/assets/components/scripting.min.js +1 -1
  40. package/dist/assets/components/texturing-3d.js +2716 -2651
  41. package/dist/assets/components/texturing-3d.min.js +131 -48
  42. package/dist/assets/components/volume-rendering.js +2815 -2804
  43. package/dist/assets/components/volume-rendering.min.js +1 -3
  44. package/dist/assets/components/x_ite.js +142 -144
  45. package/dist/assets/components/x_ite.min.js +1 -1
  46. package/dist/assets/shaders/webgl1/Gouraud.fs +52 -15
  47. package/dist/assets/shaders/webgl1/Gouraud.vs +8 -9
  48. package/dist/assets/shaders/webgl1/{Wireframe.fs → Line.fs} +0 -0
  49. package/dist/assets/shaders/webgl1/{Wireframe.vs → Line.vs} +1 -1
  50. package/dist/assets/shaders/webgl1/PBR.fs +785 -0
  51. package/dist/assets/shaders/webgl1/PBR.vs +37 -0
  52. package/dist/assets/shaders/webgl1/Phong.fs +204 -32
  53. package/dist/assets/shaders/webgl1/Phong.vs +2 -3
  54. package/dist/assets/shaders/webgl1/{PointSet.fs → Point.fs} +59 -33
  55. package/dist/assets/shaders/webgl1/{PointSet.vs → Point.vs} +2 -2
  56. package/dist/assets/shaders/webgl1/Unlit.fs +73 -18
  57. package/dist/assets/shaders/webgl1/Unlit.vs +2 -3
  58. package/dist/assets/shaders/webgl2/Gouraud.fs +31 -19
  59. package/dist/assets/shaders/webgl2/Gouraud.vs +8 -9
  60. package/dist/assets/shaders/webgl2/{Wireframe.fs → Line.fs} +0 -0
  61. package/dist/assets/shaders/webgl2/{Wireframe.vs → Line.vs} +1 -1
  62. package/dist/assets/shaders/webgl2/PBR.fs +913 -0
  63. package/dist/assets/shaders/webgl2/PBR.vs +37 -0
  64. package/dist/assets/shaders/webgl2/Phong.fs +196 -35
  65. package/dist/assets/shaders/webgl2/Phong.vs +2 -3
  66. package/dist/assets/shaders/webgl2/{PointSet.fs → Point.fs} +87 -86
  67. package/dist/assets/shaders/webgl2/{PointSet.vs → Point.vs} +2 -2
  68. package/dist/assets/shaders/webgl2/Unlit.fs +55 -22
  69. package/dist/assets/shaders/webgl2/Unlit.vs +2 -3
  70. package/dist/example.html +2 -2
  71. package/dist/x_ite.css +316 -328
  72. package/dist/x_ite.js +55663 -52034
  73. package/dist/x_ite.min.js +79 -41
  74. package/dist/x_ite.zip +0 -0
  75. package/docs/Custom-Shaders.md +4 -3
  76. package/docs/_config.yml +1 -1
  77. package/docs/index.md +60 -7
  78. package/package.json +20 -20
  79. package/src/assets/components/annotation.js +24 -24
  80. package/src/assets/components/cad-geometry.js +24 -25
  81. package/src/assets/components/cube-map-texturing.js +18 -19
  82. package/src/assets/components/dis.js +22 -23
  83. package/src/assets/components/event-utilities.js +28 -29
  84. package/src/assets/components/geometry2d.js +28 -29
  85. package/src/assets/components/geospatial.js +34 -35
  86. package/src/assets/components/h-anim.js +22 -22
  87. package/src/assets/components/key-device-sensor.js +18 -19
  88. package/src/assets/components/layout.js +24 -25
  89. package/src/assets/components/nurbs.js +44 -45
  90. package/src/assets/components/particle-systems.js +36 -37
  91. package/src/assets/components/picking.js +25 -25
  92. package/src/assets/components/projective-texture-mapping.js +16 -16
  93. package/src/assets/components/rigid-body-physics.js +48 -48
  94. package/src/assets/components/scripting.js +14 -15
  95. package/src/assets/components/texturing-3d.js +26 -27
  96. package/src/assets/components/volume-rendering.js +46 -46
  97. package/src/assets/components/x_ite.js +12 -12
  98. package/src/assets/shaders/Types.glsl +230 -51
  99. package/src/assets/shaders/webgl1/Background.fs +2 -2
  100. package/src/assets/shaders/webgl1/Background.vs +4 -4
  101. package/src/assets/shaders/webgl1/Depth.fs +2 -2
  102. package/src/assets/shaders/webgl1/Depth.vs +3 -3
  103. package/src/assets/shaders/webgl1/Fallback.fs +15 -15
  104. package/src/assets/shaders/webgl1/Fallback.vs +5 -5
  105. package/src/assets/shaders/webgl1/FallbackUnlit.fs +4 -4
  106. package/src/assets/shaders/webgl1/FallbackUnlit.vs +3 -3
  107. package/src/assets/shaders/webgl1/Gouraud.fs +14 -14
  108. package/src/assets/shaders/webgl1/Gouraud.vs +54 -69
  109. package/src/assets/shaders/webgl1/Line.fs +74 -0
  110. package/src/assets/shaders/webgl1/Line.vs +63 -0
  111. package/src/assets/shaders/webgl1/PBR.fs +364 -0
  112. package/src/assets/shaders/webgl1/PBR.vs +46 -0
  113. package/src/assets/shaders/webgl1/Phong.fs +207 -84
  114. package/src/assets/shaders/webgl1/Phong.vs +17 -18
  115. package/src/assets/shaders/webgl1/Point.fs +88 -0
  116. package/src/assets/shaders/webgl1/Point.vs +70 -0
  117. package/src/assets/shaders/webgl1/Unlit.fs +53 -28
  118. package/src/assets/shaders/webgl1/Unlit.vs +17 -18
  119. package/src/assets/shaders/webgl1/include/ClipPlanes.glsl +7 -7
  120. package/src/assets/shaders/webgl1/include/Colors.glsl +27 -0
  121. package/src/assets/shaders/webgl1/include/Fog.glsl +17 -17
  122. package/src/assets/shaders/webgl1/include/Hatch.glsl +8 -8
  123. package/src/assets/shaders/webgl1/include/Normal.glsl +44 -0
  124. package/src/assets/shaders/webgl1/include/Pack.glsl +11 -11
  125. package/src/assets/shaders/webgl1/include/Perlin.glsl +19 -19
  126. package/src/assets/shaders/webgl1/include/Shadow.glsl +212 -212
  127. package/src/assets/shaders/webgl1/include/SpotFactor.glsl +12 -0
  128. package/src/assets/shaders/webgl1/include/Texture.glsl +444 -393
  129. package/src/assets/shaders/webgl2/Background.fs +2 -2
  130. package/src/assets/shaders/webgl2/Background.vs +4 -4
  131. package/src/assets/shaders/webgl2/Depth.fs +2 -2
  132. package/src/assets/shaders/webgl2/Depth.vs +3 -3
  133. package/src/assets/shaders/webgl2/Gouraud.fs +14 -14
  134. package/src/assets/shaders/webgl2/Gouraud.vs +54 -69
  135. package/src/assets/shaders/webgl2/Line.fs +73 -0
  136. package/src/assets/shaders/webgl2/Line.vs +64 -0
  137. package/src/assets/shaders/webgl2/PBR.fs +370 -0
  138. package/src/assets/shaders/webgl2/PBR.vs +48 -0
  139. package/src/assets/shaders/webgl2/Phong.fs +219 -84
  140. package/src/assets/shaders/webgl2/Phong.vs +17 -18
  141. package/src/assets/shaders/webgl2/Point.fs +87 -0
  142. package/src/assets/shaders/webgl2/Point.vs +71 -0
  143. package/src/assets/shaders/webgl2/Unlit.fs +56 -28
  144. package/src/assets/shaders/webgl2/Unlit.vs +17 -18
  145. package/src/assets/shaders/webgl2/include/ClipPlanes.glsl +7 -7
  146. package/src/assets/shaders/webgl2/include/Colors.glsl +27 -0
  147. package/src/assets/shaders/webgl2/include/Fog.glsl +34 -34
  148. package/src/assets/shaders/webgl2/include/Hatch.glsl +8 -8
  149. package/src/assets/shaders/webgl2/include/Normal.glsl +46 -0
  150. package/src/assets/shaders/webgl2/include/Pack.glsl +11 -11
  151. package/src/assets/shaders/webgl2/include/Perlin.glsl +19 -20
  152. package/src/assets/shaders/webgl2/include/Shadow.glsl +226 -226
  153. package/src/assets/shaders/webgl2/include/SpotFactor.glsl +12 -0
  154. package/src/assets/shaders/webgl2/include/Texture.glsl +557 -537
  155. package/src/bookmarks.js +92 -92
  156. package/src/examples.js +147 -147
  157. package/src/lib/ammojs/AmmoJS.js +2 -2
  158. package/src/lib/ammojs/Makefile +14 -15
  159. package/src/lib/jquery.fullscreen-min.js +2 -2
  160. package/src/lib/nurbs/extras/sample.js +215 -215
  161. package/src/lib/nurbs/nurbs.js +326 -326
  162. package/src/lib/nurbs/src/evaluate.js +405 -405
  163. package/src/lib/nurbs/src/numerical-derivative.js +48 -48
  164. package/src/lib/nurbs/src/support.js +143 -143
  165. package/src/lib/nurbs/src/transform.js +70 -70
  166. package/src/lib/nurbs/src/utils/accessor-preamble.js +23 -23
  167. package/src/lib/nurbs/src/utils/bisection-search.js +18 -18
  168. package/src/lib/nurbs/src/utils/cache-key.js +49 -50
  169. package/src/lib/nurbs/src/utils/create-accessors.js +101 -101
  170. package/src/lib/nurbs/src/utils/infer-type.js +43 -43
  171. package/src/lib/nurbs/src/utils/is-array-like.js +5 -5
  172. package/src/lib/nurbs/src/utils/is-ndarray-like.js +11 -11
  173. package/src/lib/nurbs/src/utils/is-ndarray.js +13 -13
  174. package/src/lib/nurbs/src/utils/ndloop.js +18 -18
  175. package/src/lib/nurbs/src/utils/size-getter.js +15 -15
  176. package/src/lib/nurbs/src/utils/variable.js +25 -25
  177. package/src/lib/opentype.js/bin/ot +27 -27
  178. package/src/lib/opentype.js/dist/opentype.js +5 -5
  179. package/src/lib/opentype.js/font-inspector.html +1 -1
  180. package/src/lib/opentype.js/site.css +1 -3
  181. package/src/locale/gettext.js +73 -73
  182. package/src/spinner.css +40 -43
  183. package/src/standard/Geospatial/Geodetic.js +195 -195
  184. package/src/standard/Geospatial/ReferenceEllipsoids.js +43 -43
  185. package/src/standard/Geospatial/UniversalTransverseMercator.js +159 -159
  186. package/src/standard/Math/Algorithm.js +199 -187
  187. package/src/standard/Math/Algorithms/Bezier.js +80 -80
  188. package/src/standard/Math/Algorithms/MergeSort.js +49 -49
  189. package/src/standard/Math/Algorithms/PartialSort.js +36 -36
  190. package/src/standard/Math/Algorithms/QuickSort.js +51 -51
  191. package/src/standard/Math/Algorithms/SAT.js +62 -62
  192. package/src/standard/Math/Algorithms/eigendecomposition.js +141 -141
  193. package/src/standard/Math/Geometry/Box2.js +205 -205
  194. package/src/standard/Math/Geometry/Box3.js +624 -624
  195. package/src/standard/Math/Geometry/Camera.js +68 -68
  196. package/src/standard/Math/Geometry/Cylinder3.js +112 -112
  197. package/src/standard/Math/Geometry/Line3.js +188 -153
  198. package/src/standard/Math/Geometry/Plane3.js +120 -120
  199. package/src/standard/Math/Geometry/Sphere3.js +148 -148
  200. package/src/standard/Math/Geometry/Spheroid3.js +38 -38
  201. package/src/standard/Math/Geometry/Triangle2.js +19 -19
  202. package/src/standard/Math/Geometry/Triangle3.js +148 -148
  203. package/src/standard/Math/Geometry/ViewVolume.js +359 -359
  204. package/src/standard/Math/Numbers/Color3.js +219 -214
  205. package/src/standard/Math/Numbers/Color4.js +148 -142
  206. package/src/standard/Math/Numbers/Complex.js +139 -139
  207. package/src/standard/Math/Numbers/Matrix2.js +193 -193
  208. package/src/standard/Math/Numbers/Matrix3.js +679 -679
  209. package/src/standard/Math/Numbers/Matrix4.js +883 -883
  210. package/src/standard/Math/Numbers/Quaternion.js +496 -496
  211. package/src/standard/Math/Numbers/Rotation4.js +421 -415
  212. package/src/standard/Math/Numbers/Vector2.js +220 -220
  213. package/src/standard/Math/Numbers/Vector3.js +280 -280
  214. package/src/standard/Math/Numbers/Vector4.js +296 -296
  215. package/src/standard/Math/Utility/BVH.js +303 -303
  216. package/src/standard/Math/Utility/MatrixStack.js +64 -64
  217. package/src/standard/Networking/BinaryTransport.js +67 -67
  218. package/src/standard/Time/MicroTime.js +22 -22
  219. package/src/standard/Utility/DataStorage.js +85 -81
  220. package/src/standard/Utility/MapUtilities.js +14 -1
  221. package/src/standard/Utility/ObjectCache.js +24 -24
  222. package/src/standard/Utility/Shuffle.js +13 -13
  223. package/src/tests.js +355 -384
  224. package/src/x_ite/Base/Events.js +64 -55
  225. package/src/x_ite/{Basic/X3DArrayField.js → Base/FieldArray.js} +19 -12
  226. package/src/x_ite/Base/FieldDefinitionArray.js +75 -0
  227. package/src/x_ite/{Basic/FieldDefinitionArray.js → Base/X3DArrayField.js} +35 -59
  228. package/src/x_ite/Base/X3DBaseNode.js +588 -0
  229. package/src/x_ite/{Bits → Base}/X3DCast.js +23 -22
  230. package/src/x_ite/Base/X3DChildObject.js +68 -62
  231. package/src/x_ite/{Bits → Base}/X3DConstants.js +85 -85
  232. package/src/x_ite/Base/X3DEventObject.js +73 -68
  233. package/src/x_ite/Base/X3DField.js +450 -0
  234. package/src/x_ite/Base/X3DFieldDefinition.js +78 -0
  235. package/src/x_ite/Base/X3DInfoArray.js +291 -0
  236. package/src/x_ite/Base/X3DObject.js +152 -109
  237. package/src/x_ite/Base/X3DObjectArrayField.js +573 -0
  238. package/src/x_ite/Base/X3DTypedArrayField.js +866 -0
  239. package/src/x_ite/Browser/Core/BrowserOptions.js +376 -394
  240. package/src/x_ite/Browser/Core/BrowserProperties.js +38 -38
  241. package/src/x_ite/Browser/Core/BrowserTimings.js +173 -172
  242. package/src/x_ite/Browser/Core/ContextMenu.js +547 -551
  243. package/src/x_ite/Browser/Core/Notification.js +57 -56
  244. package/src/x_ite/Browser/Core/PrimitiveQuality.js +8 -8
  245. package/src/x_ite/Browser/Core/RenderingProperties.js +55 -55
  246. package/src/x_ite/Browser/Core/Shading.js +10 -10
  247. package/src/x_ite/Browser/Core/TextureQuality.js +8 -8
  248. package/src/x_ite/Browser/Core/X3DCoreContext.js +746 -724
  249. package/src/x_ite/Browser/EnvironmentalEffects/X3DEnvironmentalEffectsContext.js +33 -25
  250. package/src/x_ite/Browser/Followers/X3DArrayChaserTemplate.js +23 -23
  251. package/src/x_ite/Browser/Followers/X3DArrayFollowerTemplate.js +127 -127
  252. package/src/x_ite/Browser/Geometry2D/Arc2DOptions.js +25 -25
  253. package/src/x_ite/Browser/Geometry2D/ArcClose2DOptions.js +25 -25
  254. package/src/x_ite/Browser/Geometry2D/Circle2DOptions.js +56 -55
  255. package/src/x_ite/Browser/Geometry2D/Disk2DOptions.js +116 -116
  256. package/src/x_ite/Browser/Geometry2D/Rectangle2DOptions.js +59 -59
  257. package/src/x_ite/Browser/Geometry2D/X3DGeometry2DContext.js +80 -77
  258. package/src/x_ite/Browser/Geometry3D/BoxOptions.js +70 -70
  259. package/src/x_ite/Browser/Geometry3D/ConeOptions.js +26 -26
  260. package/src/x_ite/Browser/Geometry3D/CylinderOptions.js +27 -27
  261. package/src/x_ite/Browser/Geometry3D/IcoSphere.js +357 -357
  262. package/src/x_ite/Browser/Geometry3D/IcoSphereOptions.js +61 -61
  263. package/src/x_ite/Browser/Geometry3D/QuadSphereOptions.js +243 -241
  264. package/src/x_ite/Browser/Geometry3D/X3DGeometry3DContext.js +37 -34
  265. package/src/x_ite/Browser/Geospatial/Geocentric.js +27 -27
  266. package/src/x_ite/Browser/Geospatial/Geospatial.js +157 -156
  267. package/src/x_ite/Browser/Grouping/X3DGroupingContext.js +38 -33
  268. package/src/x_ite/Browser/Interpolation/CatmullRomSplineInterpolator.js +128 -130
  269. package/src/x_ite/Browser/Interpolation/CatmullRomSplineInterpolator1.js +39 -41
  270. package/src/x_ite/Browser/Interpolation/CatmullRomSplineInterpolator2.js +3 -3
  271. package/src/x_ite/Browser/Interpolation/CatmullRomSplineInterpolator3.js +3 -3
  272. package/src/x_ite/Browser/Interpolation/CatmullRomSplineInterpolatorTemplate.js +54 -56
  273. package/src/x_ite/Browser/Interpolation/SquatInterpolator.js +54 -56
  274. package/src/x_ite/Browser/KeyDeviceSensor/X3DKeyDeviceSensorContext.js +44 -41
  275. package/src/x_ite/Browser/Layering/X3DLayeringContext.js +20 -18
  276. package/src/x_ite/Browser/Layout/ScreenText.js +406 -405
  277. package/src/x_ite/Browser/Layout/X3DLayoutContext.js +36 -30
  278. package/src/x_ite/Browser/Lighting/X3DLightingContext.js +54 -50
  279. package/src/x_ite/Browser/NURBS/NURBS.js +417 -417
  280. package/src/x_ite/Browser/Navigation/ExamineViewer.js +753 -753
  281. package/src/x_ite/Browser/Navigation/FlyViewer.js +39 -39
  282. package/src/x_ite/Browser/Navigation/LookAtViewer.js +461 -461
  283. package/src/x_ite/Browser/Navigation/NoneViewer.js +18 -18
  284. package/src/x_ite/Browser/Navigation/PlaneViewer.js +193 -193
  285. package/src/x_ite/Browser/Navigation/WalkViewer.js +61 -61
  286. package/src/x_ite/Browser/Navigation/X3DFlyViewer.js +709 -710
  287. package/src/x_ite/Browser/Navigation/X3DNavigationContext.js +188 -182
  288. package/src/x_ite/Browser/Navigation/X3DViewer.js +160 -160
  289. package/src/x_ite/Browser/Networking/X3DNetworkingContext.js +152 -143
  290. package/src/x_ite/Browser/Networking/urls.js +31 -31
  291. package/src/x_ite/Browser/ParticleSystems/X3DParticleSystemsContext.js +17 -13
  292. package/src/x_ite/Browser/Picking/IntersectionType.js +7 -7
  293. package/src/x_ite/Browser/Picking/MatchCriterion.js +8 -8
  294. package/src/x_ite/Browser/Picking/SortOrder.js +9 -9
  295. package/src/x_ite/Browser/Picking/VolumePicker.js +138 -138
  296. package/src/x_ite/Browser/Picking/X3DPickingContext.js +80 -69
  297. package/src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js +208 -209
  298. package/src/x_ite/Browser/PointingDeviceSensor/PointingDeviceSensorContainer.js +34 -34
  299. package/src/x_ite/Browser/PointingDeviceSensor/X3DPointingDeviceSensorContext.js +269 -263
  300. package/src/x_ite/Browser/Rendering/X3DRenderingContext.js +132 -119
  301. package/src/x_ite/Browser/RigidBodyPhysics/AppliedParametersType.js +14 -14
  302. package/src/x_ite/Browser/Scripting/X3DScriptingContext.js +20 -19
  303. package/src/x_ite/Browser/Scripting/evaluate.js +7 -7
  304. package/src/x_ite/Browser/Shaders/Shader.js +152 -159
  305. package/src/x_ite/Browser/Shaders/ShaderSource.js +81 -63
  306. package/src/x_ite/Browser/Shaders/ShaderTest.js +97 -98
  307. package/src/x_ite/Browser/Shaders/X3DShadersContext.js +256 -249
  308. package/src/x_ite/Browser/Shape/AlphaMode.js +9 -9
  309. package/src/x_ite/Browser/Shape/X3DShapeContext.js +111 -89
  310. package/src/x_ite/Browser/Sound/X3DSoundContext.js +11 -11
  311. package/src/x_ite/Browser/Text/PolygonText.js +319 -319
  312. package/src/x_ite/Browser/Text/TextAlignment.js +9 -9
  313. package/src/x_ite/Browser/Text/X3DTextContext.js +72 -65
  314. package/src/x_ite/Browser/Text/X3DTextGeometry.js +506 -506
  315. package/src/x_ite/Browser/Texturing/MultiTextureFunctionType.js +8 -8
  316. package/src/x_ite/Browser/Texturing/MultiTextureModeType.js +25 -25
  317. package/src/x_ite/Browser/Texturing/MultiTextureSourceType.js +9 -9
  318. package/src/x_ite/Browser/Texturing/TextureCoordinateGeneratorModeType.js +17 -17
  319. package/src/x_ite/Browser/Texturing/X3DTexturingContext.js +259 -224
  320. package/src/x_ite/Browser/Texturing3D/DICOMParser.js +1066 -1066
  321. package/src/x_ite/Browser/Texturing3D/NRRDParser.js +641 -630
  322. package/src/x_ite/Browser/Time/X3DTimeContext.js +54 -37
  323. package/src/x_ite/Browser/VERSION.js +1 -1
  324. package/src/x_ite/Browser/VolumeRendering/VolumeStyle.fs +55 -55
  325. package/src/x_ite/Browser/VolumeRendering/VolumeStyle.vs +5 -5
  326. package/src/x_ite/Browser/VolumeRendering/X3DVolumeRenderingContext.js +52 -41
  327. package/src/x_ite/Browser/X3DBrowser.js +819 -755
  328. package/src/x_ite/Browser/X3DBrowserContext.js +253 -220
  329. package/src/x_ite/Components/Annotation/AnnotationLayer.js +43 -43
  330. package/src/x_ite/Components/Annotation/AnnotationTarget.js +38 -38
  331. package/src/x_ite/Components/Annotation/GroupAnnotation.js +48 -48
  332. package/src/x_ite/Components/Annotation/IconAnnotation.js +46 -46
  333. package/src/x_ite/Components/Annotation/TextAnnotation.js +39 -39
  334. package/src/x_ite/Components/Annotation/URLAnnotation.js +38 -38
  335. package/src/x_ite/Components/Annotation/X3DAnnotationNode.js +16 -16
  336. package/src/x_ite/Components/CADGeometry/CADAssembly.js +41 -41
  337. package/src/x_ite/Components/CADGeometry/CADFace.js +189 -189
  338. package/src/x_ite/Components/CADGeometry/CADLayer.js +38 -38
  339. package/src/x_ite/Components/CADGeometry/CADPart.js +46 -46
  340. package/src/x_ite/Components/CADGeometry/IndexedQuadSet.js +67 -67
  341. package/src/x_ite/Components/CADGeometry/QuadSet.js +64 -63
  342. package/src/x_ite/Components/CADGeometry/X3DProductStructureChildNode.js +13 -15
  343. package/src/x_ite/Components/Core/MetadataBoolean.js +38 -40
  344. package/src/x_ite/Components/Core/MetadataDouble.js +38 -40
  345. package/src/x_ite/Components/Core/MetadataFloat.js +38 -40
  346. package/src/x_ite/Components/Core/MetadataInteger.js +38 -40
  347. package/src/x_ite/Components/Core/MetadataSet.js +38 -40
  348. package/src/x_ite/Components/Core/MetadataString.js +38 -40
  349. package/src/x_ite/Components/Core/WorldInfo.js +42 -42
  350. package/src/x_ite/Components/Core/X3DBindableNode.js +20 -20
  351. package/src/x_ite/Components/Core/X3DChildNode.js +38 -40
  352. package/src/x_ite/Components/Core/X3DInfoNode.js +13 -15
  353. package/src/x_ite/Components/Core/X3DMetadataObject.js +11 -13
  354. package/src/x_ite/Components/Core/X3DNode.js +795 -14
  355. package/src/x_ite/Components/Core/X3DPrototypeInstance.js +585 -479
  356. package/src/x_ite/Components/Core/X3DSensorNode.js +13 -15
  357. package/src/x_ite/Components/Core.js +39 -39
  358. package/src/x_ite/Components/CubeMapTexturing/ComposedCubeMapTexture.js +193 -200
  359. package/src/x_ite/Components/CubeMapTexturing/GeneratedCubeMapTexture.js +209 -206
  360. package/src/x_ite/Components/CubeMapTexturing/ImageCubeMapTexture.js +213 -219
  361. package/src/x_ite/Components/CubeMapTexturing/X3DEnvironmentTextureNode.js +69 -60
  362. package/src/x_ite/Components/DIS/DISEntityManager.js +38 -40
  363. package/src/x_ite/Components/DIS/DISEntityTypeMapping.js +59 -41
  364. package/src/x_ite/Components/DIS/EspduTransform.js +128 -128
  365. package/src/x_ite/Components/DIS/ReceiverPdu.js +68 -68
  366. package/src/x_ite/Components/DIS/SignalPdu.js +68 -68
  367. package/src/x_ite/Components/DIS/TransmitterPdu.js +84 -84
  368. package/src/x_ite/Components/EnvironmentalEffects/Background.js +87 -89
  369. package/src/x_ite/Components/EnvironmentalEffects/Fog.js +59 -59
  370. package/src/x_ite/Components/EnvironmentalEffects/FogCoordinate.js +78 -78
  371. package/src/x_ite/Components/EnvironmentalEffects/LocalFog.js +56 -56
  372. package/src/x_ite/Components/EnvironmentalEffects/TextureBackground.js +86 -88
  373. package/src/x_ite/Components/EnvironmentalEffects/X3DBackgroundNode.js +582 -589
  374. package/src/x_ite/Components/EnvironmentalEffects/X3DFogObject.js +105 -105
  375. package/src/x_ite/Components/EnvironmentalEffects.js +25 -25
  376. package/src/x_ite/Components/EnvironmentalSensor/ProximitySensor.js +229 -229
  377. package/src/x_ite/Components/EnvironmentalSensor/TransformSensor.js +256 -256
  378. package/src/x_ite/Components/EnvironmentalSensor/VisibilitySensor.js +114 -114
  379. package/src/x_ite/Components/EnvironmentalSensor/X3DEnvironmentalSensorNode.js +71 -71
  380. package/src/x_ite/Components/EnvironmentalSensor.js +19 -19
  381. package/src/x_ite/Components/EventUtilities/BooleanFilter.js +50 -52
  382. package/src/x_ite/Components/EventUtilities/BooleanSequencer.js +50 -52
  383. package/src/x_ite/Components/EventUtilities/BooleanToggle.js +43 -45
  384. package/src/x_ite/Components/EventUtilities/BooleanTrigger.js +42 -44
  385. package/src/x_ite/Components/EventUtilities/IntegerSequencer.js +50 -52
  386. package/src/x_ite/Components/EventUtilities/IntegerTrigger.js +43 -45
  387. package/src/x_ite/Components/EventUtilities/TimeTrigger.js +43 -45
  388. package/src/x_ite/Components/EventUtilities/X3DSequencerNode.js +92 -94
  389. package/src/x_ite/Components/EventUtilities/X3DTriggerNode.js +13 -15
  390. package/src/x_ite/Components/Followers/ColorChaser.js +78 -78
  391. package/src/x_ite/Components/Followers/ColorDamper.js +78 -78
  392. package/src/x_ite/Components/Followers/CoordinateChaser.js +46 -46
  393. package/src/x_ite/Components/Followers/CoordinateDamper.js +48 -48
  394. package/src/x_ite/Components/Followers/OrientationChaser.js +64 -64
  395. package/src/x_ite/Components/Followers/OrientationDamper.js +61 -61
  396. package/src/x_ite/Components/Followers/PositionChaser.js +42 -42
  397. package/src/x_ite/Components/Followers/PositionChaser2D.js +42 -42
  398. package/src/x_ite/Components/Followers/PositionDamper.js +44 -44
  399. package/src/x_ite/Components/Followers/PositionDamper2D.js +44 -44
  400. package/src/x_ite/Components/Followers/ScalarChaser.js +70 -70
  401. package/src/x_ite/Components/Followers/ScalarDamper.js +60 -60
  402. package/src/x_ite/Components/Followers/TexCoordChaser2D.js +46 -46
  403. package/src/x_ite/Components/Followers/TexCoordDamper2D.js +48 -48
  404. package/src/x_ite/Components/Followers/X3DChaserNode.js +194 -194
  405. package/src/x_ite/Components/Followers/X3DDamperNode.js +120 -120
  406. package/src/x_ite/Components/Followers/X3DFollowerNode.js +83 -83
  407. package/src/x_ite/Components/Followers.js +45 -45
  408. package/src/x_ite/Components/Geometry2D/Arc2D.js +99 -113
  409. package/src/x_ite/Components/Geometry2D/ArcClose2D.js +164 -166
  410. package/src/x_ite/Components/Geometry2D/Circle2D.js +59 -67
  411. package/src/x_ite/Components/Geometry2D/Disk2D.js +207 -211
  412. package/src/x_ite/Components/Geometry2D/Polyline2D.js +43 -52
  413. package/src/x_ite/Components/Geometry2D/Polypoint2D.js +43 -60
  414. package/src/x_ite/Components/Geometry2D/Rectangle2D.js +76 -73
  415. package/src/x_ite/Components/Geometry2D/TriangleSet2D.js +69 -71
  416. package/src/x_ite/Components/Geometry3D/Box.js +90 -86
  417. package/src/x_ite/Components/Geometry3D/Cone.js +185 -187
  418. package/src/x_ite/Components/Geometry3D/Cylinder.js +246 -246
  419. package/src/x_ite/Components/Geometry3D/ElevationGrid.js +383 -384
  420. package/src/x_ite/Components/Geometry3D/Extrusion.js +653 -647
  421. package/src/x_ite/Components/Geometry3D/IndexedFaceSet.js +437 -445
  422. package/src/x_ite/Components/Geometry3D/Sphere.js +72 -74
  423. package/src/x_ite/Components/Geometry3D.js +25 -25
  424. package/src/x_ite/Components/Geospatial/GeoCoordinate.js +189 -191
  425. package/src/x_ite/Components/Geospatial/GeoElevationGrid.js +381 -383
  426. package/src/x_ite/Components/Geospatial/GeoLOD.js +397 -397
  427. package/src/x_ite/Components/Geospatial/GeoLocation.js +56 -56
  428. package/src/x_ite/Components/Geospatial/GeoMetadata.js +54 -36
  429. package/src/x_ite/Components/Geospatial/GeoOrigin.js +50 -52
  430. package/src/x_ite/Components/Geospatial/GeoPositionInterpolator.js +81 -83
  431. package/src/x_ite/Components/Geospatial/GeoProximitySensor.js +95 -97
  432. package/src/x_ite/Components/Geospatial/GeoTouchSensor.js +77 -79
  433. package/src/x_ite/Components/Geospatial/GeoTransform.js +79 -79
  434. package/src/x_ite/Components/Geospatial/GeoViewpoint.js +278 -278
  435. package/src/x_ite/Components/Geospatial/X3DGeospatialObject.js +216 -218
  436. package/src/x_ite/Components/Grouping/Group.js +37 -37
  437. package/src/x_ite/Components/Grouping/StaticGroup.js +245 -245
  438. package/src/x_ite/Components/Grouping/Switch.js +234 -234
  439. package/src/x_ite/Components/Grouping/Transform.js +42 -42
  440. package/src/x_ite/Components/Grouping/X3DBoundedObject.js +93 -93
  441. package/src/x_ite/Components/Grouping/X3DGroupingNode.js +654 -649
  442. package/src/x_ite/Components/Grouping/X3DTransformMatrix3DNode.js +99 -99
  443. package/src/x_ite/Components/Grouping/X3DTransformNode.js +31 -31
  444. package/src/x_ite/Components/Grouping.js +27 -27
  445. package/src/x_ite/Components/HAnim/HAnimDisplacer.js +35 -35
  446. package/src/x_ite/Components/HAnim/HAnimHumanoid.js +293 -293
  447. package/src/x_ite/Components/HAnim/HAnimJoint.js +137 -137
  448. package/src/x_ite/Components/HAnim/HAnimMotion.js +50 -50
  449. package/src/x_ite/Components/HAnim/HAnimSegment.js +44 -44
  450. package/src/x_ite/Components/HAnim/HAnimSite.js +43 -43
  451. package/src/x_ite/Components/Interpolation/ColorInterpolator.js +61 -63
  452. package/src/x_ite/Components/Interpolation/CoordinateInterpolator.js +60 -62
  453. package/src/x_ite/Components/Interpolation/CoordinateInterpolator2D.js +57 -59
  454. package/src/x_ite/Components/Interpolation/EaseInEaseOut.js +79 -80
  455. package/src/x_ite/Components/Interpolation/NormalInterpolator.js +96 -93
  456. package/src/x_ite/Components/Interpolation/OrientationInterpolator.js +70 -70
  457. package/src/x_ite/Components/Interpolation/PositionInterpolator.js +57 -59
  458. package/src/x_ite/Components/Interpolation/PositionInterpolator2D.js +57 -59
  459. package/src/x_ite/Components/Interpolation/ScalarInterpolator.js +53 -55
  460. package/src/x_ite/Components/Interpolation/SplinePositionInterpolator.js +78 -80
  461. package/src/x_ite/Components/Interpolation/SplinePositionInterpolator2D.js +77 -79
  462. package/src/x_ite/Components/Interpolation/SplineScalarInterpolator.js +78 -80
  463. package/src/x_ite/Components/Interpolation/SquadOrientationInterpolator.js +66 -66
  464. package/src/x_ite/Components/Interpolation/X3DInterpolatorNode.js +67 -69
  465. package/src/x_ite/Components/Interpolation.js +39 -39
  466. package/src/x_ite/Components/KeyDeviceSensor/KeySensor.js +304 -306
  467. package/src/x_ite/Components/KeyDeviceSensor/StringSensor.js +102 -104
  468. package/src/x_ite/Components/KeyDeviceSensor/X3DKeyDeviceSensorNode.js +51 -51
  469. package/src/x_ite/Components/Layering/Layer.js +50 -50
  470. package/src/x_ite/Components/Layering/LayerSet.js +160 -161
  471. package/src/x_ite/Components/Layering/Viewport.js +118 -118
  472. package/src/x_ite/Components/Layering/X3DLayerNode.js +322 -322
  473. package/src/x_ite/Components/Layering/X3DViewportNode.js +13 -13
  474. package/src/x_ite/Components/Layering.js +21 -21
  475. package/src/x_ite/Components/Layout/Layout.js +576 -578
  476. package/src/x_ite/Components/Layout/LayoutGroup.js +126 -126
  477. package/src/x_ite/Components/Layout/LayoutLayer.js +53 -53
  478. package/src/x_ite/Components/Layout/ScreenFontStyle.js +48 -48
  479. package/src/x_ite/Components/Layout/ScreenGroup.js +136 -136
  480. package/src/x_ite/Components/Layout/X3DLayoutNode.js +12 -14
  481. package/src/x_ite/Components/Lighting/DirectionalLight.js +239 -246
  482. package/src/x_ite/Components/Lighting/PointLight.js +296 -303
  483. package/src/x_ite/Components/Lighting/SpotLight.js +321 -316
  484. package/src/x_ite/Components/Lighting/X3DLightNode.js +153 -153
  485. package/src/x_ite/Components/Lighting.js +19 -19
  486. package/src/x_ite/Components/NURBS/Contour2D.js +81 -83
  487. package/src/x_ite/Components/NURBS/ContourPolyline2D.js +100 -102
  488. package/src/x_ite/Components/NURBS/CoordinateDouble.js +32 -34
  489. package/src/x_ite/Components/NURBS/NurbsCurve.js +167 -169
  490. package/src/x_ite/Components/NURBS/NurbsCurve2D.js +149 -149
  491. package/src/x_ite/Components/NURBS/NurbsOrientationInterpolator.js +166 -166
  492. package/src/x_ite/Components/NURBS/NurbsPatchSurface.js +45 -47
  493. package/src/x_ite/Components/NURBS/NurbsPositionInterpolator.js +154 -154
  494. package/src/x_ite/Components/NURBS/NurbsSet.js +125 -125
  495. package/src/x_ite/Components/NURBS/NurbsSurfaceInterpolator.js +128 -130
  496. package/src/x_ite/Components/NURBS/NurbsSweptSurface.js +120 -122
  497. package/src/x_ite/Components/NURBS/NurbsSwungSurface.js +120 -122
  498. package/src/x_ite/Components/NURBS/NurbsTextureCoordinate.js +93 -93
  499. package/src/x_ite/Components/NURBS/NurbsTrimmedSurface.js +88 -90
  500. package/src/x_ite/Components/NURBS/X3DNurbsControlCurveNode.js +13 -15
  501. package/src/x_ite/Components/NURBS/X3DNurbsSurfaceGeometryNode.js +339 -339
  502. package/src/x_ite/Components/NURBS/X3DParametricGeometryNode.js +18 -20
  503. package/src/x_ite/Components/Navigation/Billboard.js +132 -132
  504. package/src/x_ite/Components/Navigation/Collision.js +116 -116
  505. package/src/x_ite/Components/Navigation/LOD.js +308 -308
  506. package/src/x_ite/Components/Navigation/NavigationInfo.js +279 -285
  507. package/src/x_ite/Components/Navigation/OrthoViewpoint.js +258 -258
  508. package/src/x_ite/Components/Navigation/Viewpoint.js +137 -137
  509. package/src/x_ite/Components/Navigation/ViewpointGroup.js +169 -171
  510. package/src/x_ite/Components/Navigation/X3DViewpointNode.js +450 -453
  511. package/src/x_ite/Components/Navigation.js +27 -27
  512. package/src/x_ite/Components/Networking/Anchor.js +140 -128
  513. package/src/x_ite/Components/Networking/Inline.js +156 -197
  514. package/src/x_ite/Components/Networking/LoadSensor.js +193 -195
  515. package/src/x_ite/Components/Networking/X3DNetworkSensorNode.js +13 -15
  516. package/src/x_ite/Components/Networking/X3DUrlObject.js +170 -116
  517. package/src/x_ite/Components/Networking.js +21 -21
  518. package/src/x_ite/Components/ParticleSystems/BoundedPhysicsModel.js +62 -64
  519. package/src/x_ite/Components/ParticleSystems/ConeEmitter.js +81 -83
  520. package/src/x_ite/Components/ParticleSystems/ExplosionEmitter.js +59 -61
  521. package/src/x_ite/Components/ParticleSystems/ForcePhysicsModel.js +42 -44
  522. package/src/x_ite/Components/ParticleSystems/ParticleSystem.js +1433 -1433
  523. package/src/x_ite/Components/ParticleSystems/PointEmitter.js +77 -79
  524. package/src/x_ite/Components/ParticleSystems/PolylineEmitter.js +196 -196
  525. package/src/x_ite/Components/ParticleSystems/SurfaceEmitter.js +195 -195
  526. package/src/x_ite/Components/ParticleSystems/VolumeEmitter.js +250 -250
  527. package/src/x_ite/Components/ParticleSystems/WindPhysicsModel.js +69 -71
  528. package/src/x_ite/Components/ParticleSystems/X3DParticleEmitterNode.js +346 -346
  529. package/src/x_ite/Components/ParticleSystems/X3DParticlePhysicsModelNode.js +15 -17
  530. package/src/x_ite/Components/Picking/LinePickSensor.js +284 -286
  531. package/src/x_ite/Components/Picking/PickableGroup.js +155 -155
  532. package/src/x_ite/Components/Picking/PointPickSensor.js +272 -272
  533. package/src/x_ite/Components/Picking/PrimitivePickSensor.js +207 -209
  534. package/src/x_ite/Components/Picking/VolumePickSensor.js +182 -184
  535. package/src/x_ite/Components/Picking/X3DPickSensorNode.js +382 -382
  536. package/src/x_ite/Components/Picking/X3DPickableObject.js +28 -30
  537. package/src/x_ite/Components/PointingDeviceSensor/CylinderSensor.js +257 -259
  538. package/src/x_ite/Components/PointingDeviceSensor/PlaneSensor.js +245 -247
  539. package/src/x_ite/Components/PointingDeviceSensor/SphereSensor.js +173 -175
  540. package/src/x_ite/Components/PointingDeviceSensor/TouchSensor.js +61 -63
  541. package/src/x_ite/Components/PointingDeviceSensor/X3DDragSensorNode.js +14 -16
  542. package/src/x_ite/Components/PointingDeviceSensor/X3DPointingDeviceSensorNode.js +57 -59
  543. package/src/x_ite/Components/PointingDeviceSensor/X3DTouchSensorNode.js +19 -21
  544. package/src/x_ite/Components/PointingDeviceSensor.js +25 -25
  545. package/src/x_ite/Components/ProjectiveTextureMapping/TextureProjectorParallel.js +191 -191
  546. package/src/x_ite/Components/ProjectiveTextureMapping/TextureProjectorPerspective.js +162 -162
  547. package/src/x_ite/Components/ProjectiveTextureMapping/X3DTextureProjectorNode.js +156 -156
  548. package/src/x_ite/Components/Rendering/ClipPlane.js +120 -120
  549. package/src/x_ite/Components/Rendering/Color.js +112 -112
  550. package/src/x_ite/Components/Rendering/ColorRGBA.js +114 -114
  551. package/src/x_ite/Components/Rendering/Coordinate.js +33 -35
  552. package/src/x_ite/Components/Rendering/IndexedLineSet.js +236 -243
  553. package/src/x_ite/Components/Rendering/IndexedTriangleFanSet.js +102 -102
  554. package/src/x_ite/Components/Rendering/IndexedTriangleSet.js +55 -55
  555. package/src/x_ite/Components/Rendering/IndexedTriangleStripSet.js +110 -110
  556. package/src/x_ite/Components/Rendering/LineSet.js +172 -179
  557. package/src/x_ite/Components/Rendering/Normal.js +100 -100
  558. package/src/x_ite/Components/Rendering/PointSet.js +142 -154
  559. package/src/x_ite/Components/Rendering/TriangleFanSet.js +73 -73
  560. package/src/x_ite/Components/Rendering/TriangleSet.js +51 -53
  561. package/src/x_ite/Components/Rendering/TriangleStripSet.js +76 -76
  562. package/src/x_ite/Components/Rendering/X3DColorNode.js +25 -27
  563. package/src/x_ite/Components/Rendering/X3DComposedGeometryNode.js +318 -321
  564. package/src/x_ite/Components/Rendering/X3DCoordinateNode.js +132 -132
  565. package/src/x_ite/Components/Rendering/X3DGeometricPropertyNode.js +13 -15
  566. package/src/x_ite/Components/Rendering/X3DGeometryNode.js +1190 -1171
  567. package/src/x_ite/Components/Rendering/X3DLineGeometryNode.js +231 -189
  568. package/src/x_ite/Components/Rendering/X3DNormalNode.js +13 -15
  569. package/src/x_ite/Components/Rendering/X3DPointGeometryNode.js +267 -0
  570. package/src/x_ite/Components/Rendering.js +53 -53
  571. package/src/x_ite/Components/RigidBodyPhysics/BallJoint.js +149 -149
  572. package/src/x_ite/Components/RigidBodyPhysics/CollidableOffset.js +229 -229
  573. package/src/x_ite/Components/RigidBodyPhysics/CollidableShape.js +465 -465
  574. package/src/x_ite/Components/RigidBodyPhysics/CollisionCollection.js +152 -154
  575. package/src/x_ite/Components/RigidBodyPhysics/CollisionSensor.js +223 -223
  576. package/src/x_ite/Components/RigidBodyPhysics/CollisionSpace.js +117 -117
  577. package/src/x_ite/Components/RigidBodyPhysics/Contact.js +54 -56
  578. package/src/x_ite/Components/RigidBodyPhysics/DoubleAxisHingeJoint.js +245 -245
  579. package/src/x_ite/Components/RigidBodyPhysics/MotorJoint.js +68 -70
  580. package/src/x_ite/Components/RigidBodyPhysics/RigidBody.js +453 -453
  581. package/src/x_ite/Components/RigidBodyPhysics/RigidBodyCollection.js +326 -326
  582. package/src/x_ite/Components/RigidBodyPhysics/SingleAxisHingeJoint.js +171 -171
  583. package/src/x_ite/Components/RigidBodyPhysics/SliderJoint.js +169 -169
  584. package/src/x_ite/Components/RigidBodyPhysics/UniversalJoint.js +50 -52
  585. package/src/x_ite/Components/RigidBodyPhysics/X3DNBodyCollidableNode.js +101 -101
  586. package/src/x_ite/Components/RigidBodyPhysics/X3DNBodyCollisionSpaceNode.js +15 -15
  587. package/src/x_ite/Components/RigidBodyPhysics/X3DRigidJointNode.js +161 -163
  588. package/src/x_ite/Components/Scripting/Script.js +506 -510
  589. package/src/x_ite/Components/Scripting/X3DScriptNode.js +15 -15
  590. package/src/x_ite/Components/Shaders/ComposedShader.js +215 -178
  591. package/src/x_ite/Components/Shaders/FloatVertexAttribute.js +84 -83
  592. package/src/x_ite/Components/Shaders/Matrix3VertexAttribute.js +74 -74
  593. package/src/x_ite/Components/Shaders/Matrix4VertexAttribute.js +73 -73
  594. package/src/x_ite/Components/Shaders/PackagedShader.js +52 -49
  595. package/src/x_ite/Components/Shaders/ProgramShader.js +36 -38
  596. package/src/x_ite/Components/Shaders/ShaderPart.js +135 -147
  597. package/src/x_ite/Components/Shaders/ShaderProgram.js +49 -46
  598. package/src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js +1259 -1255
  599. package/src/x_ite/Components/Shaders/X3DShaderNode.js +83 -93
  600. package/src/x_ite/Components/Shaders/X3DVertexAttributeNode.js +13 -15
  601. package/src/x_ite/Components/Shaders.js +33 -33
  602. package/src/x_ite/{Execution/ExportedNode.js → Components/Shape/AcousticProperties.js} +41 -71
  603. package/src/x_ite/Components/Shape/Appearance.js +331 -318
  604. package/src/x_ite/Components/Shape/FillProperties.js +101 -98
  605. package/src/x_ite/Components/Shape/LineProperties.js +71 -69
  606. package/src/x_ite/Components/Shape/Material.js +344 -116
  607. package/src/x_ite/Components/Shape/PhysicalMaterial.js +310 -0
  608. package/src/x_ite/Components/Shape/PointProperties.js +79 -95
  609. package/src/x_ite/Components/Shape/Shape.js +178 -181
  610. package/src/x_ite/Components/Shape/TwoSidedMaterial.js +200 -200
  611. package/src/x_ite/Components/Shape/UnlitMaterial.js +93 -46
  612. package/src/x_ite/Components/Shape/X3DAppearanceChildNode.js +13 -15
  613. package/src/x_ite/Components/Shape/X3DAppearanceNode.js +24 -24
  614. package/src/x_ite/Components/Shape/X3DMaterialNode.js +24 -24
  615. package/src/x_ite/Components/Shape/X3DOneSidedMaterialNode.js +158 -54
  616. package/src/x_ite/Components/Shape/X3DShapeNode.js +147 -147
  617. package/src/x_ite/Components/Shape.js +43 -37
  618. package/src/x_ite/Components/Sound/AudioClip.js +135 -140
  619. package/src/x_ite/Components/Sound/Sound.js +246 -246
  620. package/src/x_ite/Components/Sound/X3DSoundNode.js +13 -15
  621. package/src/x_ite/Components/Sound/X3DSoundSourceNode.js +165 -179
  622. package/src/x_ite/Components/Sound.js +19 -19
  623. package/src/x_ite/Components/Text/FontStyle.js +49 -49
  624. package/src/x_ite/Components/Text/Text.js +135 -135
  625. package/src/x_ite/Components/Text/X3DFontStyleNode.js +207 -205
  626. package/src/x_ite/Components/Text.js +17 -17
  627. package/src/x_ite/Components/Texturing/ImageTexture.js +181 -194
  628. package/src/x_ite/Components/Texturing/MovieTexture.js +180 -190
  629. package/src/x_ite/Components/Texturing/MultiTexture.js +255 -262
  630. package/src/x_ite/Components/Texturing/MultiTextureCoordinate.js +124 -118
  631. package/src/x_ite/Components/Texturing/MultiTextureTransform.js +82 -76
  632. package/src/x_ite/Components/Texturing/PixelTexture.js +222 -221
  633. package/src/x_ite/Components/Texturing/TextureCoordinate.js +116 -116
  634. package/src/x_ite/Components/Texturing/TextureCoordinateGenerator.js +90 -90
  635. package/src/x_ite/Components/Texturing/TextureProperties.js +158 -160
  636. package/src/x_ite/Components/Texturing/TextureTransform.js +99 -99
  637. package/src/x_ite/Components/Texturing/X3DSingleTextureCoordinateNode.js +33 -28
  638. package/src/x_ite/Components/Texturing/X3DSingleTextureNode.js +54 -54
  639. package/src/x_ite/Components/Texturing/X3DSingleTextureTransformNode.js +22 -17
  640. package/src/x_ite/Components/Texturing/X3DTexture2DNode.js +135 -124
  641. package/src/x_ite/Components/Texturing/X3DTextureCoordinateNode.js +16 -16
  642. package/src/x_ite/Components/Texturing/X3DTextureNode.js +24 -24
  643. package/src/x_ite/Components/Texturing/X3DTextureTransformNode.js +22 -22
  644. package/src/x_ite/Components/Texturing.js +45 -45
  645. package/src/x_ite/Components/Texturing3D/ComposedTexture3D.js +125 -123
  646. package/src/x_ite/Components/Texturing3D/ImageTexture3D.js +115 -131
  647. package/src/x_ite/Components/Texturing3D/PixelTexture3D.js +158 -160
  648. package/src/x_ite/Components/Texturing3D/TextureCoordinate3D.js +116 -116
  649. package/src/x_ite/Components/Texturing3D/TextureCoordinate4D.js +116 -116
  650. package/src/x_ite/Components/Texturing3D/TextureTransform3D.js +88 -88
  651. package/src/x_ite/Components/Texturing3D/TextureTransformMatrix3D.js +46 -46
  652. package/src/x_ite/Components/Texturing3D/X3DTexture3DNode.js +135 -121
  653. package/src/x_ite/Components/Time/TimeSensor.js +155 -152
  654. package/src/x_ite/Components/Time/X3DTimeDependentNode.js +299 -302
  655. package/src/x_ite/Components/Time.js +15 -15
  656. package/src/x_ite/Components/VolumeRendering/BlendedVolumeStyle.js +338 -338
  657. package/src/x_ite/Components/VolumeRendering/BoundaryEnhancementVolumeStyle.js +80 -80
  658. package/src/x_ite/Components/VolumeRendering/CartoonVolumeStyle.js +228 -228
  659. package/src/x_ite/Components/VolumeRendering/ComposedVolumeStyle.js +163 -163
  660. package/src/x_ite/Components/VolumeRendering/EdgeEnhancementVolumeStyle.js +117 -117
  661. package/src/x_ite/Components/VolumeRendering/IsoSurfaceVolumeData.js +334 -334
  662. package/src/x_ite/Components/VolumeRendering/OpacityMapVolumeStyle.js +116 -116
  663. package/src/x_ite/Components/VolumeRendering/ProjectionVolumeStyle.js +167 -167
  664. package/src/x_ite/Components/VolumeRendering/SegmentedVolumeData.js +247 -247
  665. package/src/x_ite/Components/VolumeRendering/ShadedVolumeStyle.js +198 -198
  666. package/src/x_ite/Components/VolumeRendering/SilhouetteEnhancementVolumeStyle.js +116 -116
  667. package/src/x_ite/Components/VolumeRendering/ToneMappedVolumeStyle.js +126 -126
  668. package/src/x_ite/Components/VolumeRendering/VolumeData.js +173 -173
  669. package/src/x_ite/Components/VolumeRendering/X3DComposableVolumeRenderStyleNode.js +12 -12
  670. package/src/x_ite/Components/VolumeRendering/X3DVolumeDataNode.js +167 -167
  671. package/src/x_ite/Components/VolumeRendering/X3DVolumeRenderStyleNode.js +70 -70
  672. package/src/x_ite/Components/X_ITE/BlendMode.js +143 -145
  673. package/src/x_ite/Components.js +47 -47
  674. package/src/x_ite/Configuration/ComponentInfo.js +47 -42
  675. package/src/x_ite/Configuration/ComponentInfoArray.js +21 -19
  676. package/src/x_ite/Configuration/ProfileInfo.js +33 -23
  677. package/src/x_ite/Configuration/ProfileInfoArray.js +26 -16
  678. package/src/x_ite/Configuration/SupportedComponents.js +311 -311
  679. package/src/x_ite/Configuration/SupportedNodes.js +53 -38
  680. package/src/x_ite/Configuration/SupportedProfiles.js +190 -190
  681. package/src/x_ite/Configuration/UnitInfo.js +60 -51
  682. package/src/x_ite/Configuration/UnitInfoArray.js +17 -10
  683. package/src/x_ite/DEBUG.js +2 -2
  684. package/src/x_ite/Execution/BindableList.js +146 -149
  685. package/src/x_ite/Execution/BindableStack.js +130 -123
  686. package/src/x_ite/Execution/ExportedNodesArray.js +75 -0
  687. package/src/x_ite/Execution/ImportedNodesArray.js +75 -0
  688. package/src/x_ite/{Basic/X3DFieldDefinition.js → Execution/NamedNodesArray.js} +20 -10
  689. package/src/x_ite/Execution/Scene.js +93 -90
  690. package/src/x_ite/Execution/X3DExecutionContext.js +957 -781
  691. package/src/x_ite/Execution/X3DExportedNode.js +152 -0
  692. package/src/x_ite/Execution/X3DImportedNode.js +393 -0
  693. package/src/x_ite/Execution/X3DScene.js +546 -493
  694. package/src/x_ite/Execution/X3DWorld.js +171 -0
  695. package/src/x_ite/Fallback.js +31 -31
  696. package/src/x_ite/Fields/ArrayFields.js +463 -443
  697. package/src/x_ite/Fields/SFBool.js +50 -47
  698. package/src/x_ite/Fields/SFColor.js +163 -160
  699. package/src/x_ite/Fields/SFColorRGBA.js +155 -152
  700. package/src/x_ite/Fields/SFDouble.js +51 -48
  701. package/src/x_ite/Fields/SFFloat.js +51 -48
  702. package/src/x_ite/Fields/SFImage.js +216 -213
  703. package/src/x_ite/Fields/SFInt32.js +47 -44
  704. package/src/x_ite/Fields/SFMatrix3.js +74 -71
  705. package/src/x_ite/Fields/SFMatrix4.js +68 -65
  706. package/src/x_ite/Fields/SFMatrixPrototypeTemplate.js +98 -98
  707. package/src/x_ite/Fields/SFNode.js +392 -299
  708. package/src/x_ite/Fields/SFNodeCache.js +22 -33
  709. package/src/x_ite/Fields/SFRotation.js +178 -175
  710. package/src/x_ite/Fields/SFString.js +71 -68
  711. package/src/x_ite/Fields/SFTime.js +47 -44
  712. package/src/x_ite/Fields/SFVec2.js +73 -70
  713. package/src/x_ite/Fields/SFVec3.js +105 -102
  714. package/src/x_ite/Fields/SFVec4.js +118 -115
  715. package/src/x_ite/Fields/SFVecPrototypeTemplate.js +94 -94
  716. package/src/x_ite/Fields.js +44 -44
  717. package/src/x_ite/InputOutput/FileLoader.js +426 -531
  718. package/src/x_ite/InputOutput/Generator.js +379 -376
  719. package/src/x_ite/{Configuration/X3DInfoArray.js → Parser/GoldenGate.js} +54 -86
  720. package/src/x_ite/Parser/HTMLSupport.js +28 -6
  721. package/src/x_ite/Parser/JSONParser.js +414 -388
  722. package/src/x_ite/Parser/VRMLParser.js +2964 -0
  723. package/src/x_ite/Parser/X3DParser.js +128 -128
  724. package/src/x_ite/Parser/XMLParser.js +1231 -1178
  725. package/src/x_ite/Prototype/ExternProtoDeclarationArray.js +17 -27
  726. package/src/x_ite/Prototype/ProtoDeclarationArray.js +17 -27
  727. package/src/x_ite/Prototype/X3DExternProtoDeclaration.js +279 -297
  728. package/src/x_ite/Prototype/X3DProtoDeclaration.js +264 -263
  729. package/src/x_ite/Prototype/X3DProtoDeclarationNode.js +58 -35
  730. package/src/x_ite/Rendering/DependentRenderer.js +83 -80
  731. package/src/x_ite/Rendering/TextureBuffer.js +171 -168
  732. package/src/x_ite/{Bits → Rendering}/TraverseType.js +11 -11
  733. package/src/x_ite/Rendering/X3DRenderObject.js +895 -906
  734. package/src/x_ite/Routing/RouteArray.js +19 -71
  735. package/src/x_ite/Routing/X3DRoute.js +185 -179
  736. package/src/x_ite/Routing/X3DRoutingContext.js +60 -54
  737. package/src/x_ite/X3D.js +191 -175
  738. package/src/x_ite.config.js +83 -83
  739. package/src/x_ite.css +279 -288
  740. package/src/x_ite.html +226 -193
  741. package/src/x_ite.js +100 -127
  742. package/x_ite.min.html +220 -187
  743. package/src/assets/shaders/webgl1/PointSet.fs +0 -100
  744. package/src/assets/shaders/webgl1/PointSet.vs +0 -70
  745. package/src/assets/shaders/webgl1/Wireframe.fs +0 -74
  746. package/src/assets/shaders/webgl1/Wireframe.vs +0 -63
  747. package/src/assets/shaders/webgl2/PointSet.fs +0 -99
  748. package/src/assets/shaders/webgl2/PointSet.vs +0 -71
  749. package/src/assets/shaders/webgl2/Wireframe.fs +0 -73
  750. package/src/assets/shaders/webgl2/Wireframe.vs +0 -64
  751. package/src/x_ite/Basic/X3DBaseNode.js +0 -1253
  752. package/src/x_ite/Basic/X3DField.js +0 -370
  753. package/src/x_ite/Basic/X3DObjectArrayField.js +0 -545
  754. package/src/x_ite/Basic/X3DTypedArrayField.js +0 -839
  755. package/src/x_ite/Browser/Core/X3DCoreContext.js.~1~ +0 -714
  756. package/src/x_ite/Components/Texturing/X3DTexture2DNode.js.~1~ +0 -209
  757. package/src/x_ite/Execution/ImportedNode.js +0 -375
  758. package/src/x_ite/Execution/World.js +0 -162
  759. package/src/x_ite/Parser/Parser.js +0 -2944
@@ -0,0 +1,785 @@
1
+
2
+ #extension GL_OES_standard_derivatives : enable
3
+ #ifdef X3D_LOGARITHMIC_DEPTH_BUFFER
4
+ #extension GL_EXT_frag_depth : enable
5
+ #endif
6
+ precision highp float;
7
+ precision highp int;
8
+ uniform int x3d_GeometryType;
9
+ uniform bool x3d_ColorMaterial;
10
+ uniform float x3d_AlphaCutoff;
11
+ uniform int x3d_NumLights;
12
+ uniform x3d_LightSourceParameters x3d_LightSource [x3d_MaxLights];
13
+ uniform x3d_PhysicalMaterialParameters x3d_Material;
14
+ #ifdef USE_IBL
15
+ uniform samplerCube diffuseEnvironmentTexture;
16
+ uniform samplerCube specularEnvironmentTexture;
17
+ uniform sampler2D brdfLUT;
18
+ #endif
19
+ varying vec3 vertex;
20
+ varying vec4 texCoord0;
21
+ varying vec4 texCoord1;
22
+ varying vec4 color;
23
+ varying vec3 normal;
24
+ varying vec3 localNormal;
25
+ varying vec3 localVertex;
26
+ #ifdef X3D_LOGARITHMIC_DEPTH_BUFFER
27
+ uniform float x3d_LogarithmicFarFactor1_2;
28
+ in float depth;
29
+ #endif
30
+ #define MANUAL_SRGB
31
+ vec4
32
+ SRGBtoLINEAR (const in vec4 srgbIn)
33
+ {
34
+ #ifdef MANUAL_SRGB
35
+ #ifdef SRGB_FAST_APPROXIMATION
36
+ vec3 linOut = pow (srgbIn .xyz, vec3 (2.2));
37
+ #else
38
+ vec3 bLess = step (vec3 (0.04045), srgbIn .xyz);
39
+ vec3 linOut = mix (srgbIn .xyz / vec3 (12.92), pow ((srgbIn .xyz + vec3 (0.055)) / vec3 (1.055), vec3 (2.4)), bLess);
40
+ #endif
41
+ return vec4 (linOut, srgbIn .w);
42
+ #else
43
+ return srgbIn;
44
+ #endif
45
+ }
46
+ vec4
47
+ Gamma (const in vec4 color)
48
+ {
49
+ #ifdef MANUAL_SRGB
50
+ return vec4 (pow (color .rgb, vec3 (1.0 / 2.2)), color .a);
51
+ #else
52
+ return color;
53
+ #endif
54
+ }
55
+ uniform mat4 x3d_TextureMatrix [x3d_MaxTextures];
56
+ uniform int x3d_NumTextures;
57
+ uniform int x3d_TextureType [x3d_MaxTextures];
58
+ uniform sampler2D x3d_Texture2D [x3d_MaxTextures];
59
+ uniform samplerCube x3d_TextureCube [x3d_MaxTextures];
60
+ #ifdef X3D_MULTI_TEXTURING
61
+ float rand (vec2 co) { return fract (sin (dot (co.xy, vec2 (12.9898,78.233))) * 43758.5453); }
62
+ float rand (vec2 co, float l) { return rand (vec2 (rand (co), l)); }
63
+ float rand (vec2 co, float l, float t) { return rand (vec2 (rand (co, l), t)); }
64
+ float
65
+ perlin (vec2 p, float dim, float time)
66
+ {
67
+ const float M_PI = 3.14159265358979323846;
68
+ vec2 pos = floor (p * dim);
69
+ vec2 posx = pos + vec2 (1.0, 0.0);
70
+ vec2 posy = pos + vec2 (0.0, 1.0);
71
+ vec2 posxy = pos + vec2 (1.0);
72
+ float c = rand (pos, dim, time);
73
+ float cx = rand (posx, dim, time);
74
+ float cy = rand (posy, dim, time);
75
+ float cxy = rand (posxy, dim, time);
76
+ vec2 d = fract (p * dim);
77
+ d = -0.5 * cos (d * M_PI) + 0.5;
78
+ float ccx = mix (c, cx, d.x);
79
+ float cycxy = mix (cy, cxy, d.x);
80
+ float center = mix (ccx, cycxy, d.y);
81
+ return center * 2.0 - 1.0;
82
+ }
83
+ vec3
84
+ perlin (vec3 p)
85
+ {
86
+ return vec3 (perlin (p.xy, 1.0, 0.0),
87
+ perlin (p.yz, 1.0, 0.0),
88
+ perlin (p.zx, 1.0, 0.0));
89
+ }
90
+ #ifdef X3D_PROJECTIVE_TEXTURE_MAPPING
91
+ uniform int x3d_NumProjectiveTextures;
92
+ uniform sampler2D x3d_ProjectiveTexture [x3d_MaxTextures];
93
+ uniform mat4 x3d_ProjectiveTextureMatrix [x3d_MaxTextures];
94
+ uniform vec3 x3d_ProjectiveTextureLocation [x3d_MaxTextures];
95
+ #endif
96
+ uniform vec4 x3d_MultiTextureColor;
97
+ uniform x3d_MultiTextureParameters x3d_MultiTexture [x3d_MaxTextures];
98
+ uniform x3d_TextureCoordinateGeneratorParameters x3d_TextureCoordinateGenerator [x3d_MaxTextures];
99
+ mat4
100
+ getTextureMatrix (const in int i)
101
+ {
102
+ mat4 textureMatrix = mat4 (0.0);
103
+ #if x3d_MaxTextures > 0
104
+ if (i == 0)
105
+ textureMatrix = x3d_TextureMatrix [0];
106
+ #endif
107
+ #if x3d_MaxTextures > 1
108
+ else if (i == 1)
109
+ textureMatrix = x3d_TextureMatrix [1];
110
+ #endif
111
+ return textureMatrix;
112
+ }
113
+ vec4
114
+ getTexCoord (const in int i)
115
+ {
116
+ vec4 texCoord = vec4 (0.0);
117
+ #if x3d_MaxTextures > 0
118
+ if (i == 0)
119
+ texCoord = texCoord0;
120
+ #endif
121
+ #if x3d_MaxTextures > 1
122
+ else if (i == 1)
123
+ texCoord = texCoord1;
124
+ #endif
125
+ return texCoord;
126
+ }
127
+ vec4
128
+ getTexCoord (const in x3d_TextureCoordinateGeneratorParameters textureCoordinateGenerator, const in int textureTransformMapping, const in int textureCoordinateMapping)
129
+ {
130
+ int mode = textureCoordinateGenerator .mode;
131
+ if (mode == x3d_None)
132
+ {
133
+ return getTextureMatrix (textureTransformMapping) * getTexCoord (textureCoordinateMapping);
134
+ }
135
+ else if (mode == x3d_Sphere)
136
+ {
137
+ vec2 N = normalize (gl_FrontFacing ? normal : -normal) .xy;
138
+ return vec4 (N / 2.0 + 0.5, 0.0, 1.0);
139
+ }
140
+ else if (mode == x3d_CameraSpaceNormal)
141
+ {
142
+ vec3 N = normalize (gl_FrontFacing ? normal : -normal);
143
+ return vec4 (N, 1.0);
144
+ }
145
+ else if (mode == x3d_CameraSpacePosition)
146
+ {
147
+ return vec4 (vertex, 1.0);
148
+ }
149
+ else if (mode == x3d_CameraSpaceReflectionVector)
150
+ {
151
+ vec3 N = normalize (gl_FrontFacing ? normal : -normal);
152
+ return vec4 (reflect (normalize (vertex), -N), 1.0);
153
+ }
154
+ else if (mode == x3d_SphereLocal)
155
+ {
156
+ vec2 N = normalize (gl_FrontFacing ? localNormal : -localNormal) .xy;
157
+ return vec4 (N / 2.0 + 0.5, 0.0, 1.0);
158
+ }
159
+ else if (mode == x3d_Coord)
160
+ {
161
+ return vec4 (localVertex, 1.0);
162
+ }
163
+ else if (mode == x3d_CoordEye)
164
+ {
165
+ return vec4 (vertex, 1.0);
166
+ }
167
+ else if (mode == x3d_Noise)
168
+ {
169
+ vec3 scale = vec3 (textureCoordinateGenerator .parameter [0], textureCoordinateGenerator .parameter [1], textureCoordinateGenerator .parameter [2]);
170
+ vec3 translation = vec3 (textureCoordinateGenerator .parameter [3], textureCoordinateGenerator .parameter [4], textureCoordinateGenerator .parameter [5]);
171
+ return vec4 (perlin (localVertex * scale + translation), 1.0);
172
+ }
173
+ else if (mode == x3d_NoiseEye)
174
+ {
175
+ vec3 scale = vec3 (textureCoordinateGenerator .parameter [0], textureCoordinateGenerator .parameter [1], textureCoordinateGenerator .parameter [2]);
176
+ vec3 translation = vec3 (textureCoordinateGenerator .parameter [3], textureCoordinateGenerator .parameter [4], textureCoordinateGenerator .parameter [5]);
177
+ return vec4 (perlin (vertex * scale + translation), 1.0);
178
+ }
179
+ else if (mode == x3d_SphereReflect)
180
+ {
181
+ vec3 N = normalize (gl_FrontFacing ? normal : -normal);
182
+ float eta = textureCoordinateGenerator .parameter [0];
183
+ return vec4 (refract (normalize (vertex), -N, eta), 1.0);
184
+ }
185
+ else if (mode == x3d_SphereReflectLocal)
186
+ {
187
+ vec3 N = normalize (gl_FrontFacing ? localNormal : -localNormal);
188
+ float eta = textureCoordinateGenerator .parameter [0];
189
+ vec3 eye = vec3 (textureCoordinateGenerator .parameter [1], textureCoordinateGenerator .parameter [2], textureCoordinateGenerator .parameter [3]);
190
+ return vec4 (refract (normalize (localVertex - eye), -N, eta), 1.0);
191
+ }
192
+ return getTextureMatrix (textureTransformMapping) * getTexCoord (textureCoordinateMapping);
193
+ }
194
+ vec4
195
+ getTexCoord (const in int textureTransformMapping, const in int textureCoordinateMapping)
196
+ {
197
+ vec4 texCoord;
198
+ #if x3d_MaxTextures > 0
199
+ if (textureCoordinateMapping == 0)
200
+ texCoord = getTexCoord (x3d_TextureCoordinateGenerator [0], textureTransformMapping, textureCoordinateMapping);
201
+ #endif
202
+ #if x3d_MaxTextures > 1
203
+ else if (textureCoordinateMapping == 1)
204
+ texCoord = getTexCoord (x3d_TextureCoordinateGenerator [1], textureTransformMapping, textureCoordinateMapping);
205
+ #endif
206
+ texCoord .stp /= texCoord .q;
207
+ if ((x3d_GeometryType == x3d_Geometry2D) && (gl_FrontFacing == false))
208
+ texCoord .s = 1.0 - texCoord .s;
209
+ return texCoord;
210
+ }
211
+ vec4
212
+ getTexture2D (const in int i, const in vec2 texCoord)
213
+ {
214
+ vec4 color = vec4 (0.0);
215
+ #if x3d_MaxTextures > 0
216
+ if (i == 0)
217
+ color = texture2D (x3d_Texture2D [0], texCoord);
218
+ #endif
219
+ #if x3d_MaxTextures > 1
220
+ else if (i == 1)
221
+ color = texture2D (x3d_Texture2D [1], texCoord);
222
+ #endif
223
+ return color;
224
+ }
225
+ vec4
226
+ getTextureCube (const in int i, const in vec3 texCoord)
227
+ {
228
+ vec4 color = vec4 (0.0);
229
+ #if x3d_MaxTextures > 0
230
+ if (i == 0)
231
+ color = textureCube (x3d_TextureCube [0], texCoord);
232
+ #endif
233
+ #if x3d_MaxTextures > 1
234
+ else if (i == 1)
235
+ color = textureCube (x3d_TextureCube [1], texCoord);
236
+ #endif
237
+ return color;
238
+ }
239
+ vec4
240
+ getTextureColor (const in vec4 diffuseColor, const in vec4 specularColor)
241
+ {
242
+ vec4 currentColor = diffuseColor;
243
+ for (int i = 0; i < x3d_MaxTextures; ++ i)
244
+ {
245
+ if (i == x3d_NumTextures)
246
+ break;
247
+ vec4 texCoord = getTexCoord (x3d_TextureCoordinateGenerator [i], i, i);
248
+ vec4 textureColor = vec4 (1.0);
249
+ texCoord .stp /= texCoord .q;
250
+ if ((x3d_GeometryType == x3d_Geometry2D) && (gl_FrontFacing == false))
251
+ texCoord .s = 1.0 - texCoord .s;
252
+ if (x3d_TextureType [i] == x3d_TextureType2D)
253
+ {
254
+ textureColor = getTexture2D (i, texCoord .st);
255
+ }
256
+ else if (x3d_TextureType [i] == x3d_TextureTypeCube)
257
+ {
258
+ textureColor = getTextureCube (i, texCoord .stp);
259
+ }
260
+ x3d_MultiTextureParameters multiTexture = x3d_MultiTexture [i];
261
+ vec4 arg1 = textureColor;
262
+ vec4 arg2 = currentColor;
263
+ int source = multiTexture .source;
264
+ if (source == x3d_Diffuse)
265
+ {
266
+ arg1 = diffuseColor;
267
+ }
268
+ else if (source == x3d_Specular)
269
+ {
270
+ arg1 = specularColor;
271
+ }
272
+ else if (source == x3d_Factor)
273
+ {
274
+ arg1 = x3d_MultiTextureColor;
275
+ }
276
+ int function = multiTexture .function;
277
+ if (function == x3d_Complement)
278
+ {
279
+ arg1 = 1.0 - arg1;
280
+ }
281
+ else if (function == x3d_AlphaReplicate)
282
+ {
283
+ arg1 .a = arg2 .a;
284
+ }
285
+ int mode = multiTexture .mode;
286
+ int alphaMode = multiTexture .alphaMode;
287
+ if (mode == x3d_Replace)
288
+ {
289
+ currentColor .rgb = arg1 .rgb;
290
+ }
291
+ else if (mode == x3d_Modulate)
292
+ {
293
+ currentColor .rgb = arg1 .rgb * arg2 .rgb;
294
+ }
295
+ else if (mode == x3d_Modulate2X)
296
+ {
297
+ currentColor .rgb = (arg1 .rgb * arg2 .rgb) * 2.0;
298
+ }
299
+ else if (mode == x3d_Modulate4X)
300
+ {
301
+ currentColor .rgb = (arg1 .rgb * arg2 .rgb) * 4.0;
302
+ }
303
+ else if (mode == x3d_Add)
304
+ {
305
+ currentColor .rgb = arg1 .rgb + arg2 .rgb;
306
+ }
307
+ else if (mode == x3d_AddSigned)
308
+ {
309
+ currentColor .rgb = arg1 .rgb + arg2 .rgb - 0.5;
310
+ }
311
+ else if (mode == x3d_AddSigned2X)
312
+ {
313
+ currentColor .rgb = (arg1 .rgb + arg2 .rgb - 0.5) * 2.0;
314
+ }
315
+ else if (mode == x3d_AddSmooth)
316
+ {
317
+ currentColor .rgb = arg1 .rgb + (1.0 - arg1 .rgb) * arg2 .rgb;
318
+ }
319
+ else if (mode == x3d_Subtract)
320
+ {
321
+ currentColor .rgb = arg1 .rgb - arg2 .rgb;
322
+ }
323
+ else if (mode == x3d_BlendDiffuseAlpha)
324
+ {
325
+ currentColor .rgb = arg1 .rgb * diffuseColor .a + arg2 .rgb * (1.0 - diffuseColor .a);
326
+ }
327
+ else if (mode == x3d_BlendTextureAlpha)
328
+ {
329
+ currentColor .rgb = arg1 .rgb * arg1 .a + arg2 .rgb * (1.0 - arg1 .a);
330
+ }
331
+ else if (mode == x3d_BlendFactorAlpha)
332
+ {
333
+ currentColor .rgb = arg1 .rgb * x3d_MultiTextureColor .a + arg2 .rgb * (1.0 - x3d_MultiTextureColor .a);
334
+ }
335
+ else if (mode == x3d_BlendCurrentAlpha)
336
+ {
337
+ currentColor .rgb = arg1 .rgb * arg2 .a + arg2 .rgb * (1.0 - arg2 .a);
338
+ }
339
+ else if (mode == x3d_ModulateAlphaAddColor)
340
+ {
341
+ currentColor .rgb = arg1 .rgb + arg1 .a * arg2 .rgb;
342
+ }
343
+ else if (mode == x3d_ModulateInvAlphaAddColor)
344
+ {
345
+ currentColor .rgb = (1.0 - arg1 .a) * arg2 .rgb + arg1 .rgb;
346
+ }
347
+ else if (mode == x3d_ModulateInvColorAddAlpha)
348
+ {
349
+ currentColor .rgb = (1.0 - arg1 .rgb) * arg2 .rgb + arg1 .a;
350
+ }
351
+ else if (mode == x3d_DotProduct3)
352
+ {
353
+ currentColor .rgb = vec3 (dot (arg1 .rgb * 2.0 - 1.0, arg2 .rgb * 2.0 - 1.0));
354
+ }
355
+ else if (mode == x3d_SelectArg1)
356
+ {
357
+ currentColor .rgb = arg1 .rgb;
358
+ }
359
+ else if (mode == x3d_SelectArg2)
360
+ {
361
+ currentColor .rgb = arg2 .rgb;
362
+ }
363
+ else if (mode == x3d_Off)
364
+ ;
365
+ if (alphaMode == x3d_Replace)
366
+ {
367
+ currentColor .a = arg1 .a;
368
+ }
369
+ else if (alphaMode == x3d_Modulate)
370
+ {
371
+ currentColor .a = arg1 .a * arg2 .a;
372
+ }
373
+ else if (alphaMode == x3d_Modulate2X)
374
+ {
375
+ currentColor .a = (arg1 .a * arg2 .a) * 2.0;
376
+ }
377
+ else if (alphaMode == x3d_Modulate4X)
378
+ {
379
+ currentColor .a = (arg1 .a * arg2 .a) * 4.0;
380
+ }
381
+ else if (alphaMode == x3d_Add)
382
+ {
383
+ currentColor .a = arg1 .a + arg2 .a;
384
+ }
385
+ else if (alphaMode == x3d_AddSigned)
386
+ {
387
+ currentColor .a = arg1 .a + arg2 .a - 0.5;
388
+ }
389
+ else if (alphaMode == x3d_AddSigned2X)
390
+ {
391
+ currentColor .a = (arg1 .a + arg2 .a - 0.5) * 2.0;
392
+ }
393
+ else if (alphaMode == x3d_AddSmooth)
394
+ {
395
+ currentColor .a = arg1 .a + (1.0 - arg1 .a) * arg2 .a;
396
+ }
397
+ else if (alphaMode == x3d_Subtract)
398
+ {
399
+ currentColor .a = arg1 .a - arg2 .a;
400
+ }
401
+ else if (alphaMode == x3d_BlendDiffuseAlpha)
402
+ {
403
+ currentColor .a = arg1 .a * diffuseColor .a + arg2 .a * (1.0 - diffuseColor .a);
404
+ }
405
+ else if (alphaMode == x3d_BlendTextureAlpha)
406
+ {
407
+ currentColor .a = arg1 .a * arg1 .a + arg2 .a * (1.0 - arg1 .a);
408
+ }
409
+ else if (alphaMode == x3d_BlendFactorAlpha)
410
+ {
411
+ currentColor .a = arg1 .a * x3d_MultiTextureColor .a + arg2 .a * (1.0 - x3d_MultiTextureColor .a);
412
+ }
413
+ else if (alphaMode == x3d_BlendCurrentAlpha)
414
+ {
415
+ currentColor .a = arg1 .a * arg2 .a + arg2 .a * (1.0 - arg2 .a);
416
+ }
417
+ else if (alphaMode == x3d_ModulateAlphaAddColor)
418
+ {
419
+ currentColor .a = arg1 .a + arg1 .a * arg2 .a;
420
+ }
421
+ else if (alphaMode == x3d_ModulateInvAlphaAddColor)
422
+ {
423
+ currentColor .a = (1.0 - arg1 .a) * arg2 .a + arg1 .a;
424
+ }
425
+ else if (alphaMode == x3d_ModulateInvColorAddAlpha)
426
+ {
427
+ currentColor .a = (1.0 - arg1 .a) * arg2 .a + arg1 .a;
428
+ }
429
+ else if (alphaMode == x3d_DotProduct3)
430
+ {
431
+ currentColor .a = dot (arg1 .rgb * 2.0 - 1.0, arg2 .rgb * 2.0 - 1.0);
432
+ }
433
+ else if (alphaMode == x3d_SelectArg1)
434
+ {
435
+ currentColor .a = arg1 .a;
436
+ }
437
+ else if (alphaMode == x3d_SelectArg2)
438
+ {
439
+ currentColor .a = arg2 .a;
440
+ }
441
+ else if (alphaMode == x3d_Off)
442
+ ;
443
+ }
444
+ return currentColor;
445
+ }
446
+ #ifdef X3D_PROJECTIVE_TEXTURE_MAPPING
447
+ vec4
448
+ getProjectiveTexture (const in int i, const in vec2 texCoord)
449
+ {
450
+ vec4 color = vec4 (0.0);
451
+ #if x3d_MaxTextures > 0
452
+ if (i == 0)
453
+ color = texture2D (x3d_ProjectiveTexture [0], texCoord);
454
+ #endif
455
+ #if x3d_MaxTextures > 1
456
+ else if (i == 1)
457
+ color = texture2D (x3d_ProjectiveTexture [1], texCoord);
458
+ #endif
459
+ return color;
460
+ }
461
+ vec4
462
+ getProjectiveTextureColor (in vec4 currentColor)
463
+ {
464
+ if (x3d_NumProjectiveTextures > 0)
465
+ {
466
+ vec3 N = gl_FrontFacing ? normal : -normal;
467
+ for (int i = 0; i < x3d_MaxTextures; ++ i)
468
+ {
469
+ if (i == x3d_NumProjectiveTextures)
470
+ break;
471
+ vec4 texCoord = x3d_ProjectiveTextureMatrix [i] * vec4 (vertex, 1.0);
472
+ texCoord .stp /= texCoord .q;
473
+ if (texCoord .s < 0.0 || texCoord .s > 1.0)
474
+ continue;
475
+ if (texCoord .t < 0.0 || texCoord .t > 1.0)
476
+ continue;
477
+ if (texCoord .p < 0.0 || texCoord .p > 1.0)
478
+ continue;
479
+ vec3 p = x3d_ProjectiveTextureLocation [i] - vertex;
480
+ if (dot (N, p) < 0.0)
481
+ continue;
482
+ currentColor *= getProjectiveTexture (i, texCoord .st);
483
+ }
484
+ }
485
+ return currentColor;
486
+ }
487
+ #else
488
+ vec4
489
+ getProjectiveTextureColor (in vec4 currentColor)
490
+ {
491
+ return currentColor;
492
+ }
493
+ #endif
494
+ #else
495
+ vec4
496
+ getTexCoord (const in int textureTransformMapping, const in int textureCoordinateMapping)
497
+ {
498
+ return texCoord0;
499
+ }
500
+ vec4
501
+ getTextureColor (const in vec4 diffuseColor, const in vec4 specularColor)
502
+ {
503
+ vec4 texCoord = texCoord0;
504
+ vec4 textureColor = vec4 (1.0);
505
+ texCoord .stp /= texCoord .q;
506
+ if ((x3d_GeometryType == x3d_Geometry2D) && (gl_FrontFacing ? false : true))
507
+ texCoord .s = 1.0 - texCoord .s;
508
+ if (x3d_TextureType [0] == x3d_TextureType2D)
509
+ {
510
+ textureColor = texture2D (x3d_Texture2D [0], texCoord .st);
511
+ }
512
+ else if (x3d_TextureType [0] == x3d_TextureTypeCube)
513
+ {
514
+ textureColor = textureCube (x3d_TextureCube [0], texCoord .stp);
515
+ }
516
+ return diffuseColor * textureColor;
517
+ }
518
+ vec4
519
+ getProjectiveTextureColor (in vec4 currentColor)
520
+ {
521
+ return currentColor;
522
+ }
523
+ #endif
524
+ #ifdef X3D_MATERIAL_TEXTURES
525
+ uniform x3d_NormalTextureParameters x3d_NormalTexture;
526
+ mat3
527
+ getTBNMatrix (const in vec2 texCoord)
528
+ {
529
+ vec3 pos_dx = dFdx (vertex);
530
+ vec3 pos_dy = dFdy (vertex);
531
+ vec3 tex_dx = dFdx (vec3 (texCoord, 0.0));
532
+ vec3 tex_dy = dFdy (vec3 (texCoord, 0.0));
533
+ vec3 t = (tex_dy .t * pos_dx - tex_dx .t * pos_dy) / (tex_dx .s * tex_dy.t - tex_dy .s * tex_dx .t);
534
+ vec3 N = normalize (normal);
535
+ vec3 T = normalize (t - N * dot (N, t));
536
+ vec3 B = normalize (cross (N, T));
537
+ mat3 tbn = mat3 (T, B, N);
538
+ return tbn;
539
+ }
540
+ #endif
541
+ vec3
542
+ getNormalVector ()
543
+ {
544
+ float facing = gl_FrontFacing ? 1.0 : -1.0;
545
+ #if defined(X3D_NORMAL_TEXTURE) && !defined(X3D_NORMAL_TEXTURE_3D)
546
+ vec4 texCoord = getTexCoord (x3d_NormalTexture .textureTransformMapping, x3d_NormalTexture .textureCoordinateMapping);
547
+ vec3 normalScale = vec3 (vec2 (x3d_Material .normalScale), 1.0);
548
+ mat3 tbn = getTBNMatrix (texCoord .st);
549
+ #if defined(X3D_NORMAL_TEXTURE_2D)
550
+ vec3 n = texture2D (x3d_NormalTexture .texture2D, texCoord .st) .rgb;
551
+ #elif defined(X3D_NORMAL_TEXTURE_CUBE)
552
+ vec3 n = textureCube (x3d_NormalTexture .textureCube, texCoord .stp) .rgb;
553
+ #endif
554
+ return normalize (tbn * ((n * 2.0 - 1.0) * normalScale)) * facing;
555
+ #else
556
+ return normalize (normal) * facing;
557
+ #endif
558
+ }
559
+ float
560
+ getSpotFactor (const in float cutOffAngle, const in float beamWidth, const in vec3 L, const in vec3 d)
561
+ {
562
+ float spotAngle = acos (clamp (dot (-L, d), -1.0, 1.0));
563
+ if (spotAngle >= cutOffAngle)
564
+ return 0.0;
565
+ else if (spotAngle <= beamWidth)
566
+ return 1.0;
567
+ return (spotAngle - cutOffAngle) / (beamWidth - cutOffAngle);
568
+ }
569
+ #ifdef X3D_MATERIAL_TEXTURES
570
+ uniform x3d_BaseTextureParameters x3d_BaseTexture;
571
+ uniform x3d_EmissiveTextureParameters x3d_EmissiveTexture;
572
+ uniform x3d_MetallicRoughnessTextureParameters x3d_MetallicRoughnessTexture;
573
+ uniform x3d_OcclusionTextureParameters x3d_OcclusionTexture;
574
+ #endif
575
+ vec4
576
+ getBaseColor ()
577
+ {
578
+ float alpha = 1.0 - x3d_Material .transparency;
579
+ vec4 baseParameter = x3d_ColorMaterial ? vec4 (color .rgb, color .a * alpha) : vec4 (x3d_Material .baseColor, alpha);
580
+ #if defined(X3D_BASE_TEXTURE) && !defined(X3D_BASE_TEXTURE_3D)
581
+ vec4 texCoord = getTexCoord (x3d_BaseTexture .textureTransformMapping, x3d_BaseTexture .textureCoordinateMapping);
582
+ #if defined(X3D_BASE_TEXTURE_2D)
583
+ return baseParameter * SRGBtoLINEAR (texture2D (x3d_BaseTexture .texture2D, texCoord .st));
584
+ #elif defined(X3D_BASE_TEXTURE_CUBE)
585
+ return baseParameter * SRGBtoLINEAR (textureCube (x3d_BaseTexture .textureCube, texCoord .stp));
586
+ #endif
587
+ #else
588
+ return getTextureColor (baseParameter, vec4 (vec3 (1.0), alpha));
589
+ #endif
590
+ }
591
+ vec3
592
+ getEmissiveColor ()
593
+ {
594
+ vec3 emissiveParameter = x3d_Material .emissiveColor;
595
+ #if defined(X3D_EMISSIVE_TEXTURE) && !defined(X3D_EMISSIVE_TEXTURE_3D)
596
+ vec4 texCoord = getTexCoord (x3d_EmissiveTexture .textureTransformMapping, x3d_EmissiveTexture .textureCoordinateMapping);
597
+ #if defined(X3D_EMISSIVE_TEXTURE_2D)
598
+ return emissiveParameter * SRGBtoLINEAR (texture2D (x3d_EmissiveTexture .texture2D, texCoord .st)) .rgb;
599
+ #elif defined(X3D_EMISSIVE_TEXTURE_CUBE)
600
+ return emissiveParameter * SRGBtoLINEAR (textureCube (x3d_EmissiveTexture .textureCube, texCoord .stp)) .rgb;
601
+ #endif
602
+ #else
603
+ return emissiveParameter .rgb;
604
+ #endif
605
+ }
606
+ vec2
607
+ getMetallicRoughness ()
608
+ {
609
+ float metallic = x3d_Material .metallic;
610
+ float perceptualRoughness = x3d_Material .roughness;
611
+ #if defined(X3D_METALLIC_ROUGHNESS_TEXTURE) && !defined(X3D_METALLIC_ROUGHNESS_TEXTURE_3D)
612
+ vec4 texCoord = getTexCoord (x3d_MetallicRoughnessTexture .textureTransformMapping, x3d_MetallicRoughnessTexture .textureCoordinateMapping);
613
+ #if defined(X3D_METALLIC_ROUGHNESS_TEXTURE_2D)
614
+ vec4 mrSample = texture2D (x3d_MetallicRoughnessTexture .texture2D, texCoord .st);
615
+ #elif defined(X3D_METALLIC_ROUGHNESS_TEXTURE_CUBE)
616
+ vec4 mrSample = textureCube (x3d_MetallicRoughnessTexture .textureCube, texCoord .stp);
617
+ #endif
618
+ metallic *= mrSample .b;
619
+ perceptualRoughness *= mrSample .g;
620
+ return vec2 (metallic, perceptualRoughness);
621
+ #else
622
+ return vec2 (metallic, perceptualRoughness);
623
+ #endif
624
+ }
625
+ float
626
+ getOcclusionFactor ()
627
+ {
628
+ #if defined(X3D_OCCLUSION_TEXTURE) && !defined(X3D_OCCLUSION_TEXTURE_3D)
629
+ vec4 texCoord = getTexCoord (x3d_OcclusionTexture .textureTransformMapping, x3d_OcclusionTexture .textureCoordinateMapping);
630
+ #if defined(X3D_OCCLUSION_TEXTURE_2D)
631
+ return texture2D (x3d_OcclusionTexture .texture2D, texCoord .st) .r;
632
+ #elif defined(X3D_OCCLUSION_TEXTURE_CUBE)
633
+ return textureCube (x3d_OcclusionTexture .textureCube, texCoord .stp) .r;
634
+ #endif
635
+ #else
636
+ return 1.0;
637
+ #endif
638
+ }
639
+ struct PBRInfo
640
+ {
641
+ float NdotL;
642
+ float NdotV;
643
+ float NdotH;
644
+ float LdotH;
645
+ float VdotH;
646
+ float perceptualRoughness;
647
+ float metalness;
648
+ vec3 reflectance0;
649
+ vec3 reflectance90;
650
+ float alphaRoughness;
651
+ vec3 diffuseColor;
652
+ vec3 specularColor;
653
+ };
654
+ const float M_PI = 3.141592653589793;
655
+ const float c_MinRoughness = 0.04;
656
+ #ifdef USE_IBL
657
+ vec3
658
+ getIBLContribution (const in PBRInfo pbrInputs, vec3 n, const in vec3 reflection)
659
+ {
660
+ float mipCount = 9.0;
661
+ float lod = pbrInputs .perceptualRoughness * mipCount;
662
+ vec3 brdf = SRGBtoLINEAR (texture (brdfLUT, vec2 (pbrInputs .NdotV, 1.0 - pbrInputs .perceptualRoughness))) .rgb;
663
+ vec3 diffuseLight = SRGBtoLINEAR (textureCube (diffuseEnvironmentTexture, n)) .rgb;
664
+ #ifdef USE_TEX_LOD
665
+ vec3 specularLight = SRGBtoLINEAR (textureCubeLodEXT (specularEnvironmentTexture, reflection, lod)) .rgb;
666
+ #else
667
+ vec3 specularLight = SRGBtoLINEAR (textureCube (specularEnvironmentTexture, reflection)) .rgb;
668
+ #endif
669
+ vec3 diffuse = diffuseLight * pbrInputs .diffuseColor;
670
+ vec3 specular = specularLight * (pbrInputs .specularColor * brdf .x + brdf .y);
671
+ return diffuse + specular;
672
+ }
673
+ #endif
674
+ vec3
675
+ diffuse (const in PBRInfo pbrInputs)
676
+ {
677
+ return pbrInputs .diffuseColor / M_PI;
678
+ }
679
+ vec3
680
+ specularReflection (const in PBRInfo pbrInputs)
681
+ {
682
+ return pbrInputs .reflectance0 + (pbrInputs .reflectance90 - pbrInputs .reflectance0) * pow (clamp (1.0 - pbrInputs .VdotH, 0.0, 1.0), 5.0);
683
+ }
684
+ float
685
+ geometricOcclusion (const in PBRInfo pbrInputs)
686
+ {
687
+ float NdotL = pbrInputs .NdotL;
688
+ float NdotV = pbrInputs .NdotV;
689
+ float r = pbrInputs .alphaRoughness;
690
+ float attenuationL = 2.0 * NdotL / (NdotL + sqrt (r * r + (1.0 - r * r) * (NdotL * NdotL)));
691
+ float attenuationV = 2.0 * NdotV / (NdotV + sqrt (r * r + (1.0 - r * r) * (NdotV * NdotV)));
692
+ return attenuationL * attenuationV;
693
+ }
694
+ float
695
+ microfacetDistribution (const in PBRInfo pbrInputs)
696
+ {
697
+ float roughnessSq = pbrInputs .alphaRoughness * pbrInputs .alphaRoughness;
698
+ float f = (pbrInputs .NdotH * roughnessSq - pbrInputs .NdotH) * pbrInputs .NdotH + 1.0;
699
+ return roughnessSq / (M_PI * f * f);
700
+ }
701
+ void
702
+ main ()
703
+ {
704
+ vec2 metallicRoughness = getMetallicRoughness ();
705
+ float perceptualRoughness = clamp (metallicRoughness [1], c_MinRoughness, 1.0);
706
+ float metallic = clamp (metallicRoughness [0], 0.0, 1.0);
707
+ float alphaRoughness = perceptualRoughness * perceptualRoughness;
708
+ vec4 baseColor = getBaseColor ();
709
+ if (baseColor .a < x3d_AlphaCutoff)
710
+ {
711
+ discard;
712
+ }
713
+ vec3 f0 = vec3 (0.04);
714
+ vec3 diffuseColor = baseColor .rgb * (vec3 (1.0) - f0);
715
+ diffuseColor *= 1.0 - metallic;
716
+ vec3 specularColor = mix (f0, baseColor .rgb, metallic);
717
+ float reflectance = max (max (specularColor .r, specularColor .g), specularColor .b);
718
+ float reflectance90 = clamp (reflectance * 25.0, 0.0, 1.0);
719
+ vec3 specularEnvironmentR0 = specularColor .rgb;
720
+ vec3 specularEnvironmentR90 = vec3 (1.0, 1.0, 1.0) * reflectance90;
721
+ vec3 n = getNormalVector ();
722
+ vec3 v = normalize (-vertex);
723
+ vec3 finalColor = vec3 (0.0);
724
+ for (int i = 0; i < x3d_MaxLights; i ++)
725
+ {
726
+ if (i == x3d_NumLights)
727
+ break;
728
+ x3d_LightSourceParameters light = x3d_LightSource [i];
729
+ vec3 vL = light .location - vertex;
730
+ float dL = length (light .matrix * vL);
731
+ bool di = light .type == x3d_DirectionalLight;
732
+ if (di || dL <= light .radius)
733
+ {
734
+ vec3 d = light .direction;
735
+ vec3 c = light .attenuation;
736
+ vec3 L = di ? -d : normalize (vL);
737
+ vec3 l = normalize (L);
738
+ vec3 h = normalize (l + v);
739
+ float NdotL = clamp (dot (n, l), 0.001, 1.0);
740
+ float NdotV = abs (dot (n, v)) + 0.001;
741
+ float NdotH = clamp (dot (n, h), 0.0, 1.0);
742
+ float LdotH = clamp (dot (l, h), 0.0, 1.0);
743
+ float VdotH = clamp (dot (v, h), 0.0, 1.0);
744
+ PBRInfo pbrInputs = PBRInfo (
745
+ NdotL,
746
+ NdotV,
747
+ NdotH,
748
+ LdotH,
749
+ VdotH,
750
+ perceptualRoughness,
751
+ metallic,
752
+ specularEnvironmentR0,
753
+ specularEnvironmentR90,
754
+ alphaRoughness,
755
+ diffuseColor,
756
+ specularColor
757
+ );
758
+ vec3 F = specularReflection (pbrInputs);
759
+ float G = geometricOcclusion (pbrInputs);
760
+ float D = microfacetDistribution (pbrInputs);
761
+ float attenuationFactor = di ? 1.0 : 1.0 / max (c [0] + c [1] * dL + c [2] * (dL * dL), 1.0);
762
+ float spotFactor = light .type == x3d_SpotLight ? getSpotFactor (light .cutOffAngle, light .beamWidth, L, d) : 1.0;
763
+ float attenuationSpotFactor = attenuationFactor * spotFactor;
764
+ vec3 diffuseContrib = (1.0 - F) * diffuse (pbrInputs);
765
+ vec3 specContrib = F * G * D / (4.0 * NdotL * NdotV);
766
+ vec3 color = NdotL * attenuationSpotFactor * light .color * light .intensity * (diffuseContrib + specContrib);
767
+ finalColor += color;
768
+ }
769
+ }
770
+ #ifdef USE_IBL
771
+ vec3 reflection = -normalize (reflect (v, n));
772
+ finalColor += getIBLContribution (pbrInputs, n, reflection);
773
+ #endif
774
+ #ifdef X3D_OCCLUSION_TEXTURE
775
+ finalColor = mix (finalColor, finalColor * getOcclusionFactor (), x3d_Material .occlusionStrength);
776
+ #endif
777
+ finalColor += getEmissiveColor ();
778
+ gl_FragColor = Gamma (vec4 (finalColor, baseColor .a));
779
+ #ifdef X3D_LOGARITHMIC_DEPTH_BUFFER
780
+ if (x3d_LogarithmicFarFactor1_2 > 0.0)
781
+ gl_FragDepth = log2 (depth) * x3d_LogarithmicFarFactor1_2;
782
+ else
783
+ gl_FragDepth = gl_FragCoord .z;
784
+ #endif
785
+ }