x_ite 8.6.7 → 8.6.9

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 (110) hide show
  1. package/.vscode/tasks.json +1 -1
  2. package/dist/assets/components/Annotation.js +13 -13
  3. package/dist/assets/components/Annotation.min.js +1 -1
  4. package/dist/assets/components/CADGeometry.js +13 -13
  5. package/dist/assets/components/CADGeometry.min.js +1 -1
  6. package/dist/assets/components/CubeMapTexturing.js +26 -26
  7. package/dist/assets/components/CubeMapTexturing.min.js +1 -1
  8. package/dist/assets/components/DIS.js +13 -13
  9. package/dist/assets/components/DIS.min.js +1 -1
  10. package/dist/assets/components/EventUtilities.js +9 -9
  11. package/dist/assets/components/EventUtilities.min.js +1 -1
  12. package/dist/assets/components/Geometry2D.js +19 -19
  13. package/dist/assets/components/Geometry2D.min.js +1 -1
  14. package/dist/assets/components/Geospatial.js +33 -33
  15. package/dist/assets/components/Geospatial.min.js +1 -1
  16. package/dist/assets/components/HAnim.js +18 -18
  17. package/dist/assets/components/HAnim.min.js +1 -1
  18. package/dist/assets/components/KeyDeviceSensor.js +8 -8
  19. package/dist/assets/components/KeyDeviceSensor.min.js +1 -1
  20. package/dist/assets/components/Layout.js +27 -27
  21. package/dist/assets/components/Layout.min.js +1 -1
  22. package/dist/assets/components/NURBS.js +24 -24
  23. package/dist/assets/components/NURBS.min.js +1 -1
  24. package/dist/assets/components/ParticleSystems.js +25 -27
  25. package/dist/assets/components/ParticleSystems.min.js +1 -1
  26. package/dist/assets/components/Picking.js +19 -19
  27. package/dist/assets/components/Picking.min.js +1 -1
  28. package/dist/assets/components/RigidBodyPhysics.js +18 -18
  29. package/dist/assets/components/RigidBodyPhysics.min.js +1 -1
  30. package/dist/assets/components/Scripting.js +28 -28
  31. package/dist/assets/components/Scripting.min.js +1 -1
  32. package/dist/assets/components/Text.js +24 -24
  33. package/dist/assets/components/Text.min.js +1 -1
  34. package/dist/assets/components/TextureProjector.js +14 -14
  35. package/dist/assets/components/TextureProjector.min.js +1 -1
  36. package/dist/assets/components/Texturing3D.js +33 -33
  37. package/dist/assets/components/Texturing3D.min.js +1 -1
  38. package/dist/assets/components/VolumeRendering.js +19 -19
  39. package/dist/assets/components/VolumeRendering.min.js +1 -1
  40. package/dist/assets/components/X_ITE.js +9 -9
  41. package/dist/assets/components/X_ITE.min.js +1 -1
  42. package/dist/x_ite.css +1 -1
  43. package/dist/x_ite.js +907 -689
  44. package/dist/x_ite.min.js +1 -1
  45. package/dist/x_ite.zip +0 -0
  46. package/docs/_config.yml +2 -2
  47. package/docs/laboratory/gltf-sample-viewer.html +4 -4
  48. package/package.json +1 -1
  49. package/src/assets/shaders/webgl1/Pointing.fs.js +1 -1
  50. package/src/assets/shaders/webgl1/include/Fragment.glsl.js +17 -1
  51. package/src/assets/shaders/webgl1/include/Point.glsl.js +10 -2
  52. package/src/assets/shaders/webgl1/include/Texture.glsl.js +31 -1
  53. package/src/assets/shaders/webgl1/include/Vertex.glsl.js +26 -3
  54. package/src/assets/shaders/webgl2/Pointing.fs.js +1 -1
  55. package/src/assets/shaders/webgl2/include/Fragment.glsl.js +18 -0
  56. package/src/assets/shaders/webgl2/include/Particle.glsl.js +9 -23
  57. package/src/assets/shaders/webgl2/include/Point.glsl.js +12 -4
  58. package/src/assets/shaders/webgl2/include/Texture.glsl.js +17 -20
  59. package/src/assets/shaders/webgl2/include/Vertex.glsl.js +24 -0
  60. package/src/bookmarks.js +1 -1
  61. package/src/standard/Math/Numbers/Color3.js +2 -2
  62. package/src/standard/Math/Numbers/Color4.js +1 -1
  63. package/src/tests.js +1 -0
  64. package/src/x_ite/Browser/Core/BrowserOptions.js +3 -0
  65. package/src/x_ite/Browser/Core/BrowserTimings.js +12 -11
  66. package/src/x_ite/Browser/Core/Context.js +64 -64
  67. package/src/x_ite/Browser/Core/ContextMenu.js +0 -9
  68. package/src/x_ite/Browser/Navigation/ExamineViewer.js +1 -1
  69. package/src/x_ite/Browser/Shaders/Shaders.js +0 -2
  70. package/src/x_ite/Browser/Texturing/X3DTexturingContext.js +8 -0
  71. package/src/x_ite/Browser/VERSION.js +1 -1
  72. package/src/x_ite/Browser/X3DBrowser.js +1 -1
  73. package/src/x_ite/Components/Core/X3DBindableNode.js +0 -2
  74. package/src/x_ite/Components/Core/X3DNode.js +3 -8
  75. package/src/x_ite/Components/CubeMapTexturing/ComposedCubeMapTexture.js +1 -1
  76. package/src/x_ite/Components/Layering/X3DLayerNode.js +6 -2
  77. package/src/x_ite/Components/Navigation/NavigationInfo.js +1 -0
  78. package/src/x_ite/Components/Navigation/X3DViewpointNode.js +34 -21
  79. package/src/x_ite/Components/ParticleSystems/ParticleSystem.js +2 -4
  80. package/src/x_ite/Components/Rendering/X3DGeometryNode.js +5 -19
  81. package/src/x_ite/Components/Rendering/X3DLineGeometryNode.js +6 -12
  82. package/src/x_ite/Components/Rendering/X3DPointGeometryNode.js +4 -8
  83. package/src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js +28 -27
  84. package/src/x_ite/Components/Shape/Material.js +28 -23
  85. package/src/x_ite/Components/Shape/PhysicalMaterial.js +5 -0
  86. package/src/x_ite/Components/Shape/TwoSidedMaterial.js +1 -0
  87. package/src/x_ite/Components/Shape/UnlitMaterial.js +1 -0
  88. package/src/x_ite/Components/Shape/X3DMaterialNode.js +21 -19
  89. package/src/x_ite/Components/Shape/X3DOneSidedMaterialNode.js +16 -10
  90. package/src/x_ite/Components/Texturing/ImageTexture.js +86 -44
  91. package/src/x_ite/Components/Texturing/MovieTexture.js +5 -4
  92. package/src/x_ite/Components/Texturing/MultiTexture.js +7 -4
  93. package/src/x_ite/Components/Texturing/MultiTextureCoordinate.js +19 -16
  94. package/src/x_ite/Components/Texturing/MultiTextureTransform.js +16 -32
  95. package/src/x_ite/Components/Texturing/TextureCoordinateGenerator.js +1 -1
  96. package/src/x_ite/Components/Texturing/X3DSingleTextureCoordinateNode.js +2 -8
  97. package/src/x_ite/Components/Texturing/X3DSingleTextureTransformNode.js +2 -8
  98. package/src/x_ite/Execution/NamedNodesHandling.js +84 -0
  99. package/src/x_ite/Execution/X3DExecutionContext.js +7 -37
  100. package/src/x_ite/Execution/X3DScene.js +5 -0
  101. package/src/x_ite/InputOutput/FileLoader.js +1 -1
  102. package/src/x_ite/InputOutput/Generator.js +32 -81
  103. package/src/x_ite/Parser/GLTF2Parser.js +112 -52
  104. package/src/x_ite/Parser/OBJParser.js +48 -39
  105. package/src/x_ite/Parser/STLAParser.js +3 -0
  106. package/src/x_ite/Parser/SVGParser.js +4 -0
  107. package/src/x_ite/Rendering/X3DRenderObject.js +2 -0
  108. package/src/x_ite.html +52 -46
  109. package/x_ite.min.html +52 -46
  110. package/src/assets/shaders/webgl1/include/Particle.glsl.js +0 -7
package/dist/x_ite.zip CHANGED
Binary file
package/docs/_config.yml CHANGED
@@ -20,8 +20,8 @@ timezone:
20
20
  # ↓ --------------------------
21
21
 
22
22
  title: X_ITE X3D Browser # the main title
23
- version: 8.6.7 # x_ite latest version
24
- size: 288 # size in kb
23
+ version: 8.6.9 # x_ite latest version
24
+ size: 289 # size in kb
25
25
  x3d_latest_version: 4.0 # x3d latest version
26
26
 
27
27
  tagline: Step Into The Future # it will display as the sub-title
@@ -192,7 +192,7 @@ const glTF = [
192
192
  "WaterBottle/glTF/WaterBottle.gltf",
193
193
  ];
194
194
 
195
- glTF .server = "https://github.khronos.org/glTF-Sample-Viewer-Release/assets/models/2.0/";
195
+ glTF .server = "https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/";
196
196
 
197
197
  /* find . -type f -name "*.glb" | grep "/glTF-Binary/" | sort */
198
198
  const glb = [
@@ -262,7 +262,7 @@ const glb = [
262
262
  "WaterBottle/glTF-Binary/WaterBottle.glb",
263
263
  ];
264
264
 
265
- glb .server = "https://github.khronos.org/glTF-Sample-Viewer-Release/assets/models/2.0/";
265
+ glb .server = "https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/";
266
266
 
267
267
  /* find . -type f -name "*.gltf" | grep "/glTF-Draco/" | sort */
268
268
  const draco = [
@@ -287,7 +287,7 @@ const draco = [
287
287
  "WaterBottle/glTF-Draco/WaterBottle.gltf",
288
288
  ];
289
289
 
290
- draco .server = "https://github.khronos.org/glTF-Sample-Viewer-Release/assets/models/2.0/";
290
+ draco .server = "https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/";
291
291
 
292
292
  /* find . -type f -name "*.gltf" | grep "/glTF-Embedded//" | sort */
293
293
  const embedded = [
@@ -329,7 +329,7 @@ const embedded = [
329
329
  "VertexColorTest/glTF-Embedded/VertexColorTest.gltf",
330
330
  ];
331
331
 
332
- embedded .server = "https://github.khronos.org/glTF-Sample-Viewer-Release/assets/models/2.0/";
332
+ embedded .server = "https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/";
333
333
 
334
334
  function createList (description, array)
335
335
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "x_ite",
3
- "version": "8.6.7",
3
+ "version": "8.6.9",
4
4
  "description": "X_ITE X3D Browser, view and manipulate X3D and VRML scenes in HTML.",
5
5
  "homepage": "https://create3000.github.io/x_ite/",
6
6
  "author": "Holger Seelig <holger.seelig@gmail.com>",
@@ -30,7 +30,7 @@ main ()
30
30
  if (getPointColor (vec4 (1.0)) .a < 0.5)
31
31
  discard;
32
32
 
33
- setTexCoords ();
33
+ setPointTexCoords ();
34
34
  #endif
35
35
 
36
36
  gl_FragData [0] = vec4 (vertex, x3d_Id);
@@ -26,6 +26,14 @@ uniform float x3d_AlphaCutoff;
26
26
  #if X3D_NUM_TEXTURE_COORDINATES > 1
27
27
  varying vec4 texCoord1;
28
28
  #endif
29
+
30
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
31
+ varying vec4 texCoord2;
32
+ #endif
33
+
34
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
35
+ varying vec4 texCoord3;
36
+ #endif
29
37
  #endif
30
38
  #else
31
39
  #if defined (X3D_TEXTURE) || defined (X3D_MATERIAL_TEXTURES)
@@ -36,6 +44,14 @@ uniform float x3d_AlphaCutoff;
36
44
  #if X3D_NUM_TEXTURE_COORDINATES > 1
37
45
  vec4 texCoord1 = vec4 (0.0, 0.0, 0.0, 1.0);
38
46
  #endif
47
+
48
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
49
+ vec4 texCoord2 = vec4 (0.0, 0.0, 0.0, 1.0);
50
+ #endif
51
+
52
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
53
+ vec4 texCoord3 = vec4 (0.0, 0.0, 0.0, 1.0);
54
+ #endif
39
55
  #endif
40
56
  #endif
41
57
 
@@ -81,7 +97,7 @@ fragment_main ()
81
97
  #endif
82
98
 
83
99
  #if defined (X3D_GEOMETRY_0D) && defined (X3D_STYLE_PROPERTIES)
84
- setTexCoords ();
100
+ setPointTexCoords ();
85
101
  #endif
86
102
 
87
103
  vec4 finalColor = getMaterialColor ();
@@ -2,7 +2,7 @@ export default /* glsl */ `
2
2
  #if defined (X3D_GEOMETRY_0D) && defined (X3D_STYLE_PROPERTIES)
3
3
  #if defined (X3D_TEXTURE) || defined (X3D_MATERIAL_TEXTURES)
4
4
  void
5
- setTexCoords ()
5
+ setPointTexCoords ()
6
6
  {
7
7
  vec4 texCoord = vec4 (gl_PointCoord .x, 1.0 - gl_PointCoord .y, 0.0, 1.0);
8
8
 
@@ -13,13 +13,21 @@ setTexCoords ()
13
13
  #if X3D_NUM_TEXTURE_COORDINATES > 1
14
14
  texCoord1 = texCoord;
15
15
  #endif
16
+
17
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
18
+ texCoord2 = texCoord;
19
+ #endif
20
+
21
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
22
+ texCoord3 = texCoord;
23
+ #endif
16
24
  }
17
25
 
18
26
  #define getPointColor(color) (color)
19
27
 
20
28
  #else
21
29
 
22
- #define setTexCoords()
30
+ #define setPointTexCoords()
23
31
 
24
32
  varying float pointSize;
25
33
 
@@ -21,6 +21,16 @@ getTextureMatrix (const in int i)
21
21
  textureMatrix = x3d_TextureMatrix [1];
22
22
  #endif
23
23
 
24
+ #if X3D_NUM_TEXTURE_TRANSFORMS > 2
25
+ else if (i == 2)
26
+ textureMatrix = x3d_TextureMatrix [2];
27
+ #endif
28
+
29
+ #if X3D_NUM_TEXTURE_TRANSFORMS > 3
30
+ else if (i == 3)
31
+ textureMatrix = x3d_TextureMatrix [3];
32
+ #endif
33
+
24
34
  return textureMatrix;
25
35
  #else
26
36
  return x3d_TextureMatrix [0];
@@ -43,6 +53,16 @@ getTexCoord (const in int i)
43
53
  texCoord = texCoord1;
44
54
  #endif
45
55
 
56
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
57
+ else if (i == 2)
58
+ texCoord = texCoord2;
59
+ #endif
60
+
61
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
62
+ else if (i == 3)
63
+ texCoord = texCoord3;
64
+ #endif
65
+
46
66
  return texCoord;
47
67
  #else
48
68
  return texCoord0;
@@ -144,6 +164,16 @@ getTexCoord (const in int textureTransformMapping, const in int textureCoordinat
144
164
  texCoord = getTexCoord (x3d_TextureCoordinateGenerator [1], textureTransformMapping, textureCoordinateMapping);
145
165
  #endif
146
166
 
167
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
168
+ else if (textureCoordinateMapping == 2)
169
+ texCoord = getTexCoord (x3d_TextureCoordinateGenerator [2], textureTransformMapping, textureCoordinateMapping);
170
+ #endif
171
+
172
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
173
+ else if (textureCoordinateMapping == 3)
174
+ texCoord = getTexCoord (x3d_TextureCoordinateGenerator [3], textureTransformMapping, textureCoordinateMapping);
175
+ #endif
176
+
147
177
  texCoord .stp /= texCoord .q;
148
178
 
149
179
  #if defined (X3D_GEOMETRY_2D)
@@ -208,7 +238,7 @@ getTextureColor (const in vec4 diffuseColor, const in vec4 specularColor)
208
238
  {
209
239
  // Get texture color.
210
240
 
211
- vec3 texCoord = getTexCoord (i, i);
241
+ vec3 texCoord = getTexCoord (min (i, X3D_NUM_TEXTURE_TRANSFORMS - 1), min (i, X3D_NUM_TEXTURE_COORDINATES - 1));
212
242
  vec4 textureColor = getTexture (i, texCoord);
213
243
 
214
244
  // Multi texturing
@@ -23,6 +23,14 @@ uniform mat4 x3d_ModelViewMatrix;
23
23
  #if X3D_NUM_TEXTURE_COORDINATES > 1
24
24
  attribute vec4 x3d_TexCoord1;
25
25
  #endif
26
+
27
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
28
+ attribute vec4 x3d_TexCoord2;
29
+ #endif
30
+
31
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
32
+ attribute vec4 x3d_TexCoord3;
33
+ #endif
26
34
  #endif
27
35
  #endif
28
36
 
@@ -47,6 +55,14 @@ attribute vec4 x3d_Vertex;
47
55
  #if X3D_NUM_TEXTURE_COORDINATES > 1
48
56
  varying vec4 texCoord1;
49
57
  #endif
58
+
59
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
60
+ varying vec4 texCoord2;
61
+ #endif
62
+
63
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
64
+ varying vec4 texCoord3;
65
+ #endif
50
66
  #endif
51
67
  #endif
52
68
 
@@ -72,7 +88,6 @@ varying vec3 vertex;
72
88
 
73
89
  // Main
74
90
 
75
- #pragma X3D include "Particle.glsl"
76
91
  #pragma X3D include "PointSize.glsl"
77
92
 
78
93
  void
@@ -101,11 +116,19 @@ vertex_main ()
101
116
  #if ! defined (X3D_GEOMETRY_0D) && ! defined (X3D_GEOMETRY_1D)
102
117
  #if defined (X3D_TEXTURE) || defined (X3D_MATERIAL_TEXTURES)
103
118
  #if X3D_NUM_TEXTURE_COORDINATES > 0
104
- texCoord0 = getTexCoord (x3d_TexCoord0);
119
+ texCoord0 = x3d_TexCoord0;
105
120
  #endif
106
121
 
107
122
  #if X3D_NUM_TEXTURE_COORDINATES > 1
108
- texCoord1 = getTexCoord (x3d_TexCoord1);
123
+ texCoord1 = x3d_TexCoord1;
124
+ #endif
125
+
126
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
127
+ texCoord2 = x3d_TexCoord2;
128
+ #endif
129
+
130
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
131
+ texCoord3 = x3d_TexCoord3;
109
132
  #endif
110
133
  #endif
111
134
  #endif
@@ -35,7 +35,7 @@ main ()
35
35
  if (getPointColor (vec4 (1.0)) .a < 0.5)
36
36
  discard;
37
37
 
38
- setTexCoords ();
38
+ setPointTexCoords ();
39
39
  #endif
40
40
 
41
41
  #if defined (X3D_GEOMETRY_1D) && defined (X3D_STYLE_PROPERTIES)
@@ -18,6 +18,14 @@ uniform float x3d_AlphaCutoff;
18
18
  #if X3D_NUM_TEXTURE_COORDINATES > 1
19
19
  in vec4 texCoord1;
20
20
  #endif
21
+
22
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
23
+ in vec4 texCoord2;
24
+ #endif
25
+
26
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
27
+ in vec4 texCoord3;
28
+ #endif
21
29
  #endif
22
30
  #else
23
31
  #if defined (X3D_TEXTURE) || defined (X3D_MATERIAL_TEXTURES)
@@ -28,6 +36,14 @@ uniform float x3d_AlphaCutoff;
28
36
  #if X3D_NUM_TEXTURE_COORDINATES > 1
29
37
  vec4 texCoord1 = vec4 (0.0, 0.0, 0.0, 1.0);
30
38
  #endif
39
+
40
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
41
+ vec4 texCoord2 = vec4 (0.0, 0.0, 0.0, 1.0);
42
+ #endif
43
+
44
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
45
+ vec4 texCoord3 = vec4 (0.0, 0.0, 0.0, 1.0);
46
+ #endif
31
47
  #endif
32
48
  #endif
33
49
 
@@ -80,6 +96,8 @@ fragment_main ()
80
96
  #endif
81
97
 
82
98
  #if defined (X3D_GEOMETRY_0D) && defined (X3D_STYLE_PROPERTIES)
99
+ setPointTexCoords ();
100
+ #elif defined (X3D_TEXTURE) || defined (X3D_MATERIAL_TEXTURES)
83
101
  setTexCoords ();
84
102
  #endif
85
103
 
@@ -1,8 +1,10 @@
1
1
  export default /* glsl */ `
2
2
  #if defined (X3D_PARTICLE_SYSTEM)
3
+ #if defined (X3D_TEX_COORD_RAMP)
4
+
5
+ uniform sampler2D x3d_TexCoordRamp;
3
6
 
4
7
  in vec4 x3d_Particle;
5
- in mat4 x3d_ParticleMatrix;
6
8
 
7
9
  vec4
8
10
  texelFetch (const in sampler2D sampler, const in int index, const in int lod)
@@ -14,12 +16,8 @@ texelFetch (const in sampler2D sampler, const in int index, const in int lod)
14
16
  return t;
15
17
  }
16
18
 
17
- #if defined (X3D_TEX_COORD_RAMP)
18
-
19
- uniform sampler2D x3d_TexCoordRamp;
20
-
21
19
  vec4
22
- getParticleTexCoord (const in vec4 texCoord)
20
+ getTexCoord (const in vec4 texCoord)
23
21
  {
24
22
  const int map [6] = int [6] (0, 1, 2, 0, 2, 3);
25
23
 
@@ -28,9 +26,11 @@ getParticleTexCoord (const in vec4 texCoord)
28
26
  return texelFetch (x3d_TexCoordRamp, index0 + map [gl_VertexID % 6], 0);
29
27
  }
30
28
  #else
31
- #define getParticleTexCoord(texCoord) (texCoord)
29
+ #define getTexCoord(texCoord) (texCoord)
32
30
  #endif
33
31
 
32
+ in mat4 x3d_ParticleMatrix;
33
+
34
34
  vec4
35
35
  getVertex (const in vec4 vertex)
36
36
  {
@@ -38,21 +38,7 @@ getVertex (const in vec4 vertex)
38
38
  }
39
39
 
40
40
  #else
41
-
42
- #define getVertex(vertex) (vertex)
43
- #define getParticleTexCoord(texCoord) (texCoord)
44
-
45
- #endif
46
-
47
- #if defined (X3D_PHYSICAL_MATERIAL)
48
- vec4
49
- getTexCoord (const in vec4 texCoord)
50
- {
51
- vec4 t = getParticleTexCoord (texCoord);
52
-
53
- return vec4 (t .x, 1.0 - t .y, t .z, t .w);
54
- }
55
- #else
56
- #define getTexCoord(texCoord) getParticleTexCoord(texCoord)
41
+ #define getVertex(vertex) (vertex)
42
+ #define getTexCoord(texCoord) (texCoord)
57
43
  #endif
58
44
  `;
@@ -2,16 +2,24 @@ export default /* glsl */ `
2
2
  #if defined (X3D_GEOMETRY_0D) && defined (X3D_STYLE_PROPERTIES)
3
3
  #if defined (X3D_TEXTURE) || defined (X3D_MATERIAL_TEXTURES)
4
4
  void
5
- setTexCoords ()
5
+ setPointTexCoords ()
6
6
  {
7
7
  vec4 texCoord = vec4 (gl_PointCoord .x, 1.0 - gl_PointCoord .y, 0.0, 1.0);
8
8
 
9
9
  #if X3D_NUM_TEXTURE_COORDINATES > 0
10
- texCoord0 = texCoord;
10
+ texCoords [0] = texCoord;
11
11
  #endif
12
12
 
13
13
  #if X3D_NUM_TEXTURE_COORDINATES > 1
14
- texCoord1 = texCoord;
14
+ texCoords [1] = texCoord;
15
+ #endif
16
+
17
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
18
+ texCoords [2] = texCoord;
19
+ #endif
20
+
21
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
22
+ texCoords [3] = texCoord;
15
23
  #endif
16
24
  }
17
25
 
@@ -19,7 +27,7 @@ setTexCoords ()
19
27
 
20
28
  #else
21
29
 
22
- #define setTexCoords()
30
+ #define setPointTexCoords()
23
31
 
24
32
  in float pointSize;
25
33
 
@@ -3,25 +3,22 @@ export default /* glsl */ `
3
3
 
4
4
  #pragma X3D include "Perlin.glsl"
5
5
 
6
- vec4
7
- getTexCoord (const in int i)
6
+ vec4 texCoords [X3D_NUM_TEXTURE_COORDINATES];
7
+
8
+ void
9
+ setTexCoords ()
8
10
  {
11
+ #if X3D_NUM_TEXTURE_COORDINATES > 0
12
+ texCoords [0] = texCoord0;
13
+ #endif
9
14
  #if X3D_NUM_TEXTURE_COORDINATES > 1
10
- switch (i)
11
- {
12
- #if X3D_NUM_TEXTURE_COORDINATES > 0
13
- case 0:
14
- return texCoord0;
15
- #endif
16
- #if X3D_NUM_TEXTURE_COORDINATES > 1
17
- case 1:
18
- return texCoord1;
19
- #endif
20
- }
21
-
22
- return vec4 (0.0);
23
- #else
24
- return texCoord0;
15
+ texCoords [1] = texCoord1;
16
+ #endif
17
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
18
+ texCoords [2] = texCoord2;
19
+ #endif
20
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
21
+ texCoords [3] = texCoord3;
25
22
  #endif
26
23
  }
27
24
 
@@ -36,7 +33,7 @@ getTexCoord (const in x3d_TextureCoordinateGeneratorParameters textureCoordinate
36
33
  {
37
34
  case x3d_None:
38
35
  {
39
- return x3d_TextureMatrix [textureTransformMapping] * getTexCoord (textureCoordinateMapping);
36
+ return x3d_TextureMatrix [textureTransformMapping] * texCoords [textureCoordinateMapping];
40
37
  }
41
38
  case x3d_Sphere:
42
39
  {
@@ -105,7 +102,7 @@ getTexCoord (const in x3d_TextureCoordinateGeneratorParameters textureCoordinate
105
102
  }
106
103
  default:
107
104
  {
108
- return x3d_TextureMatrix [textureTransformMapping] * getTexCoord (textureCoordinateMapping);
105
+ return x3d_TextureMatrix [textureTransformMapping] * texCoords [textureCoordinateMapping];
109
106
  }
110
107
  }
111
108
  }
@@ -183,7 +180,7 @@ getTextureColor (const in vec4 diffuseColor, const in vec4 specularColor)
183
180
  {
184
181
  // Get texture color.
185
182
 
186
- vec3 texCoord = getTexCoord (i, i);
183
+ vec3 texCoord = getTexCoord (min (i, X3D_NUM_TEXTURE_TRANSFORMS - 1), min (i, X3D_NUM_TEXTURE_COORDINATES - 1));
187
184
  vec4 textureColor = getTexture (i, texCoord);
188
185
 
189
186
  // Multi texturing
@@ -27,6 +27,14 @@ uniform mat4 x3d_ModelViewMatrix;
27
27
  #if X3D_NUM_TEXTURE_COORDINATES > 1
28
28
  in vec4 x3d_TexCoord1;
29
29
  #endif
30
+
31
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
32
+ in vec4 x3d_TexCoord2;
33
+ #endif
34
+
35
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
36
+ in vec4 x3d_TexCoord3;
37
+ #endif
30
38
  #endif
31
39
  #endif
32
40
 
@@ -51,6 +59,14 @@ in vec4 x3d_Vertex;
51
59
  #if X3D_NUM_TEXTURE_COORDINATES > 1
52
60
  out vec4 texCoord1;
53
61
  #endif
62
+
63
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
64
+ out vec4 texCoord2;
65
+ #endif
66
+
67
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
68
+ out vec4 texCoord3;
69
+ #endif
54
70
  #endif
55
71
  #endif
56
72
 
@@ -123,6 +139,14 @@ vertex_main ()
123
139
  #if X3D_NUM_TEXTURE_COORDINATES > 1
124
140
  texCoord1 = getTexCoord (x3d_TexCoord1);
125
141
  #endif
142
+
143
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
144
+ texCoord2 = getTexCoord (x3d_TexCoord2);
145
+ #endif
146
+
147
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
148
+ texCoord3 = getTexCoord (x3d_TexCoord3);
149
+ #endif
126
150
  #endif
127
151
  #endif
128
152
 
package/src/bookmarks.js CHANGED
@@ -125,7 +125,7 @@ const Bookmarks = (function ()
125
125
  base = url .replace (/(?:\.O)?\.[^\.]+$/, ""),
126
126
  local = base .replace (/https:\/\/create3000.github.io\/(.*?)\//, "http://192.168.0.18/$1/docs/");
127
127
 
128
- $(".file") .text (url)
128
+ $("#file") .text (url)
129
129
  .append ($("<a/>")
130
130
  .attr ('href', base + ".x3d")
131
131
  .on ("click", () => this .loadURL (base + ".x3d") && false)
@@ -47,7 +47,7 @@
47
47
 
48
48
  import Algorithm from "../Algorithm.js";
49
49
 
50
- const clamp = Algorithm .clamp;
50
+ const { clamp, interval, degrees } = Algorithm;
51
51
 
52
52
  const
53
53
  _r = Symbol .for ("X_ITE.Color3.r"),
@@ -157,7 +157,7 @@ Color3 .prototype =
157
157
  }
158
158
  else
159
159
  {
160
- const w = Algorithm .degrees (Algorithm .interval (h, 0, Math .PI * 2)) / 60; // sector 0 to 5
160
+ const w = degrees (interval (h, 0, Math .PI * 2)) / 60; // sector 0 to 5
161
161
 
162
162
  const i = Math .floor (w);
163
163
  const f = w - i; // factorial part of h
@@ -48,7 +48,7 @@
48
48
  import Color3 from "./Color3.js";
49
49
  import Algorithm from "../Algorithm.js";
50
50
 
51
- const clamp = Algorithm .clamp;
51
+ const { clamp } = Algorithm;
52
52
 
53
53
  const
54
54
  _r = Symbol .for ("X_ITE.Color3.r"),
package/src/tests.js CHANGED
@@ -107,6 +107,7 @@ const X_ITE_TESTS = [
107
107
  { path: "Interpolation/Cube.wrl" },
108
108
  { path: "Interpolation/EaseInEaseOut.wrl" },
109
109
  { path: "Interpolation/Interpolators.wrl" },
110
+ { path: "Interpolation/Jumps.x3dv" },
110
111
  { path: "Interpolation/LineTrail.wrl" },
111
112
  { path: "Interpolation/NormalInterpolator.x3d" },
112
113
  { path: "Interpolation/OrientationInterpolator.x3d" },
@@ -265,6 +265,9 @@ BrowserOptions .prototype = Object .assign (Object .create (X3DBaseNode .prototy
265
265
  set_straightenHorizon__: function (straightenHorizon)
266
266
  {
267
267
  this .localStorage .StraightenHorizon = straightenHorizon .getValue ();
268
+
269
+ if (straightenHorizon .getValue ())
270
+ this .getBrowser () .getActiveLayer ()?.straightenView ();
268
271
  },
269
272
  updateContentScale: function ()
270
273
  {
@@ -49,8 +49,6 @@ import X3DBaseNode from "../../Base/X3DBaseNode.js";
49
49
  import StopWatch from "../../../standard/Time/StopWatch.js";
50
50
  import _ from "../../../locale/gettext.js";
51
51
 
52
- function f2 (n) { return n .toFixed (2); }
53
-
54
52
  function BrowserTimings (executionContext)
55
53
  {
56
54
  X3DBaseNode .call (this, executionContext);
@@ -111,6 +109,7 @@ BrowserTimings .prototype = Object .assign (Object .create (X3DBaseNode .prototy
111
109
  this .fps .reset ();
112
110
  this .getBrowser () .prepareEvents () .addInterest ("update", this);
113
111
  this .update ();
112
+ this .build ();
114
113
  }
115
114
  else
116
115
  {
@@ -158,7 +157,7 @@ BrowserTimings .prototype = Object .assign (Object .create (X3DBaseNode .prototy
158
157
  let r = 0;
159
158
 
160
159
  rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (_("Frame rate") + ":")) .append ($("<td></td>") .text (f2(1000 / this .fps .averageTime) .toLocaleString (language, fixed) + " " + _("fps")));
161
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (_("Speed") + ":")) .append ($("<td></td>") .text (f2(this .getSpeed (browser .currentSpeed)) .toLocaleString (language, fixed) + " " + this .getSpeedUnit (browser .currentSpeed)));
160
+ rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (_("Speed") + ":")) .append ($("<td></td>") .text (f2(this .getSpeed (browser .currentSpeed)) .toLocaleString (language, fixed) + " " + this .getSpeedUnit (browser .currentSpeed)));
162
161
 
163
162
  if (this .localStorage .type === "MORE")
164
163
  {
@@ -183,14 +182,14 @@ BrowserTimings .prototype = Object .assign (Object .create (X3DBaseNode .prototy
183
182
 
184
183
  rows [1] .addClass ("x_ite-private-more");
185
184
 
186
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (_("Browser") + ":")) .append ($("<td></td>") .text (f2(browser .getSystemTime () .averageTime) .toLocaleString (language, fixed) + " " + _("ms")));
187
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (_("X3D total") + ":")) .append ($("<td></td>") .text (f2(browser .getBrowserTime () .averageTime) .toLocaleString (language, fixed) + " " + _("ms")));
188
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (_("Event Processing") + ":")) .append ($("<td></td>") .text (f2(routingTime) .toLocaleString (language, fixed) + " " + _("ms")));
189
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (_("Pointer") + ":")) .append ($("<td></td>") .text (f2(browser .getPointingTime () .averageTime) .toLocaleString (language, fixed) + " " + _("ms")));
190
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (_("Camera") + ":")) .append ($("<td></td>") .text (f2(browser .getCameraTime () .averageTime) .toLocaleString (language, fixed) + " " + _("ms")));
191
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (_("Picking") + ":")) .append ($("<td></td>") .text (f2(browser .getPickingTime () .averageTime) .toLocaleString (language, fixed) + " " + _("ms")));
192
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (_("Collision Detection") + ":")) .append ($("<td></td>") .text (f2(collisionTime) .toLocaleString (language, fixed) + " " + _("ms")));
193
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (_("Rendering") + ":")) .append ($("<td></td>") .text (f2(browser .getDisplayTime () .averageTime) .toLocaleString (language, fixed) + " " + _("ms")));
185
+ rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (_("Browser") + ":")) .append ($("<td></td>") .text (f2(browser .getSystemTime () .averageTime) .toLocaleString (language, fixed) + " " + _("ms")));
186
+ rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (_("X3D total") + ":")) .append ($("<td></td>") .text (f2(browser .getBrowserTime () .averageTime) .toLocaleString (language, fixed) + " " + _("ms")));
187
+ rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (_("Event Processing") + ":")) .append ($("<td></td>") .text (f2(routingTime) .toLocaleString (language, fixed) + " " + _("ms")));
188
+ rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (_("Pointer") + ":")) .append ($("<td></td>") .text (f2(browser .getPointingTime () .averageTime) .toLocaleString (language, fixed) + " " + _("ms")));
189
+ rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (_("Camera") + ":")) .append ($("<td></td>") .text (f2(browser .getCameraTime () .averageTime) .toLocaleString (language, fixed) + " " + _("ms")));
190
+ rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (_("Picking") + ":")) .append ($("<td></td>") .text (f2(browser .getPickingTime () .averageTime) .toLocaleString (language, fixed) + " " + _("ms")));
191
+ rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (_("Collision Detection") + ":")) .append ($("<td></td>") .text (f2(collisionTime) .toLocaleString (language, fixed) + " " + _("ms")));
192
+ rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (_("Rendering") + ":")) .append ($("<td></td>") .text (f2(browser .getDisplayTime () .averageTime) .toLocaleString (language, fixed) + " " + _("ms")));
194
193
  rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (_("Number of Shapes") + ":")) .append ($("<td></td>") .text (opaqueShapes + " + " + transparentShapes));
195
194
  rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (_("Number of Sensors") + ":")) .append ($("<td></td>") .text (prepareEvents + sensors));
196
195
 
@@ -228,4 +227,6 @@ BrowserTimings .prototype = Object .assign (Object .create (X3DBaseNode .prototy
228
227
  },
229
228
  });
230
229
 
230
+ function f2 (n) { return isFinite (n) ? n .toFixed (2) : 0 .toFixed (2); }
231
+
231
232
  export default BrowserTimings;