@3driseai/3drise-viewer 0.1.30 → 0.1.31

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 (91) hide show
  1. package/dist/animationsV2/ClipPlayer.d.ts.map +1 -1
  2. package/dist/animationsV2/ClipPlayer.js +14 -12
  3. package/dist/animationsV2/ClipsRuntime.d.ts +9 -0
  4. package/dist/animationsV2/ClipsRuntime.d.ts.map +1 -1
  5. package/dist/animationsV2/ClipsRuntime.js +54 -7
  6. package/dist/animationsV2/appliers.d.ts.map +1 -1
  7. package/dist/animationsV2/appliers.js +21 -2
  8. package/dist/animationsV2/clipUtils.d.ts.map +1 -1
  9. package/dist/animationsV2/clipUtils.js +4 -0
  10. package/dist/animationsV2/sequenceUtils.js +4 -5
  11. package/dist/animationsV2/sunSystemLive.d.ts +12 -0
  12. package/dist/animationsV2/sunSystemLive.d.ts.map +1 -0
  13. package/dist/animationsV2/sunSystemLive.js +8 -0
  14. package/dist/api/sceneHandle.d.ts +3 -1
  15. package/dist/api/sceneHandle.d.ts.map +1 -1
  16. package/dist/api/sceneHandle.js +2 -2
  17. package/dist/components/AdaptiveResolution.d.ts +9 -0
  18. package/dist/components/AdaptiveResolution.d.ts.map +1 -0
  19. package/dist/components/AdaptiveResolution.js +61 -0
  20. package/dist/components/CameraController.d.ts.map +1 -1
  21. package/dist/components/CameraController.js +24 -7
  22. package/dist/components/MoonDisc.d.ts.map +1 -1
  23. package/dist/components/MoonDisc.js +2 -1
  24. package/dist/components/OceanBuilder.d.ts +4 -1
  25. package/dist/components/OceanBuilder.d.ts.map +1 -1
  26. package/dist/components/OceanBuilder.js +2 -1
  27. package/dist/components/ParticlesGenerator.d.ts.map +1 -1
  28. package/dist/components/ParticlesGenerator.js +2 -0
  29. package/dist/components/SceneBuilder.d.ts.map +1 -1
  30. package/dist/components/SceneBuilder.js +5 -2
  31. package/dist/components/Skybox.d.ts.map +1 -1
  32. package/dist/components/Skybox.js +2 -1
  33. package/dist/components/SunLight.d.ts.map +1 -1
  34. package/dist/components/SunLight.js +3 -2
  35. package/dist/components/index.d.ts +1 -0
  36. package/dist/components/index.d.ts.map +1 -1
  37. package/dist/components/index.js +1 -0
  38. package/dist/components/lightBulb/LightBulb.d.ts.map +1 -1
  39. package/dist/components/lightBulb/LightBulb.js +7 -2
  40. package/dist/components/particles/FireworksParticles.d.ts +22 -0
  41. package/dist/components/particles/FireworksParticles.d.ts.map +1 -0
  42. package/dist/components/particles/FireworksParticles.js +1649 -0
  43. package/dist/components/particles/index.d.ts +2 -0
  44. package/dist/components/particles/index.d.ts.map +1 -1
  45. package/dist/components/particles/index.js +1 -0
  46. package/dist/components/terrain/TerrainSurface.d.ts.map +1 -1
  47. package/dist/components/terrain/TerrainSurface.js +26 -4
  48. package/dist/components/water/OceanSurface.d.ts.map +1 -1
  49. package/dist/components/water/OceanSurface.js +5 -1
  50. package/dist/components/water/types.d.ts +3 -1
  51. package/dist/components/water/types.d.ts.map +1 -1
  52. package/dist/constants.d.ts +1 -1
  53. package/dist/constants.d.ts.map +1 -1
  54. package/dist/constants.js +1 -1
  55. package/dist/hooks/useOceanMaterial.d.ts +6 -2
  56. package/dist/hooks/useOceanMaterial.d.ts.map +1 -1
  57. package/dist/hooks/useOceanMaterial.js +22 -2
  58. package/dist/hooks/useOrbitTargetFollow.d.ts +10 -0
  59. package/dist/hooks/useOrbitTargetFollow.d.ts.map +1 -0
  60. package/dist/hooks/useOrbitTargetFollow.js +194 -0
  61. package/dist/index.d.ts +1 -0
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +1 -0
  64. package/dist/shaders/glsl/terrainCore.glsl.d.ts +18 -3
  65. package/dist/shaders/glsl/terrainCore.glsl.d.ts.map +1 -1
  66. package/dist/shaders/glsl/terrainCore.glsl.js +42 -21
  67. package/dist/shaders/ocean/OceanSurfaceMaterial.d.ts +36 -11
  68. package/dist/shaders/ocean/OceanSurfaceMaterial.d.ts.map +1 -1
  69. package/dist/shaders/ocean/OceanSurfaceMaterial.js +96 -5
  70. package/dist/triggers/hosts/actions.d.ts.map +1 -1
  71. package/dist/triggers/hosts/actions.js +2 -0
  72. package/dist/triggers/hosts/timelineCues.js +1 -1
  73. package/dist/triggers/kinds/change.d.ts +4 -0
  74. package/dist/triggers/kinds/change.d.ts.map +1 -0
  75. package/dist/triggers/kinds/change.js +50 -0
  76. package/dist/triggers/kinds/index.d.ts +1 -0
  77. package/dist/triggers/kinds/index.d.ts.map +1 -1
  78. package/dist/triggers/kinds/index.js +1 -0
  79. package/dist/utils/CameraSingleton.d.ts +4 -0
  80. package/dist/utils/CameraSingleton.d.ts.map +1 -1
  81. package/dist/utils/CameraSingleton.js +4 -0
  82. package/dist/utils/deviceTier.d.ts +2 -0
  83. package/dist/utils/deviceTier.d.ts.map +1 -0
  84. package/dist/utils/deviceTier.js +16 -0
  85. package/dist/utils/environmentDrawOrder.d.ts +23 -0
  86. package/dist/utils/environmentDrawOrder.d.ts.map +1 -0
  87. package/dist/utils/environmentDrawOrder.js +22 -0
  88. package/dist/utils/terrainUniforms.d.ts +7 -0
  89. package/dist/utils/terrainUniforms.d.ts.map +1 -1
  90. package/dist/utils/terrainUniforms.js +15 -2
  91. package/package.json +2 -2
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Draw order of the camera-centred environment surfaces.
3
+ *
4
+ * three sorts opaque objects by renderOrder, then by MATERIAL ID, then by depth.
5
+ * The world ocean and the terrain clipmaps are both centred on the camera, so the
6
+ * depth tie never helps, and with renderOrder left at 0 the material id decides:
7
+ * whichever surface was created last draws last. That made the frame cost depend
8
+ * on mount order — measured 13 ms vs 22-27 ms GPU in the same view — because when
9
+ * the terrain drew first, every terrain pixel under the sea ran the full terrain
10
+ * shader (textures, 8 noise octaves) and was then painted over by water.
11
+ *
12
+ * Fixed order instead, all below the scene's objects (0):
13
+ * 1. water, inner rings first (cheap shader; hides the seabed from the depth test)
14
+ * 2. terrain, inner rings first (near ground hides far ground: front to back)
15
+ * Drawing near-to-far is what lets the early depth test throw hidden pixels away
16
+ * before their shader runs. Wasted water pixels behind land are cheap; wasted
17
+ * terrain pixels under water were most of the frame.
18
+ */
19
+ export declare const OCEAN_DRAW_ORDER = -40;
20
+ export declare const TERRAIN_DRAW_ORDER = -20;
21
+ /** Inner ring (level 0) first, then outward. */
22
+ export declare const ringDrawOrder: (base: number, level: number) => number;
23
+ //# sourceMappingURL=environmentDrawOrder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environmentDrawOrder.d.ts","sourceRoot":"","sources":["../../src/utils/environmentDrawOrder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,gDAAgD;AAChD,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,WAAiB,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Draw order of the camera-centred environment surfaces.
3
+ *
4
+ * three sorts opaque objects by renderOrder, then by MATERIAL ID, then by depth.
5
+ * The world ocean and the terrain clipmaps are both centred on the camera, so the
6
+ * depth tie never helps, and with renderOrder left at 0 the material id decides:
7
+ * whichever surface was created last draws last. That made the frame cost depend
8
+ * on mount order — measured 13 ms vs 22-27 ms GPU in the same view — because when
9
+ * the terrain drew first, every terrain pixel under the sea ran the full terrain
10
+ * shader (textures, 8 noise octaves) and was then painted over by water.
11
+ *
12
+ * Fixed order instead, all below the scene's objects (0):
13
+ * 1. water, inner rings first (cheap shader; hides the seabed from the depth test)
14
+ * 2. terrain, inner rings first (near ground hides far ground: front to back)
15
+ * Drawing near-to-far is what lets the early depth test throw hidden pixels away
16
+ * before their shader runs. Wasted water pixels behind land are cheap; wasted
17
+ * terrain pixels under water were most of the frame.
18
+ */
19
+ export const OCEAN_DRAW_ORDER = -40;
20
+ export const TERRAIN_DRAW_ORDER = -20;
21
+ /** Inner ring (level 0) first, then outward. */
22
+ export const ringDrawOrder = (base, level) => base + level;
@@ -2,6 +2,13 @@ import * as THREE from 'three';
2
2
  import type { TerrainConfig, TerrainQualityConfig } from '@3driseai/3drise-core';
3
3
  import type { TerrainTextureState } from '../hooks/useTerrainTextures';
4
4
  import type { CloudSunState } from '../hooks/useCloudSun';
5
+ /**
6
+ * The height field's own uniforms (terrainFormUniforms): landform, scale, octaves,
7
+ * warp, erosion, shaping. Shared by the terrain material and by every material that
8
+ * includes `terrainFieldOnly` to read the ground — the ocean, for its shoreline —
9
+ * so the two can never disagree about where the ground is.
10
+ */
11
+ export declare function applyTerrainFieldUniforms(material: THREE.ShaderMaterial, config: TerrainConfig): void;
5
12
  export declare function applyTerrainUniforms(material: THREE.ShaderMaterial, config: TerrainConfig, quality: TerrainQualityConfig): void;
6
13
  export default applyTerrainUniforms;
7
14
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"terrainUniforms.d.ts","sourceRoot":"","sources":["../../src/utils/terrainUniforms.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAe,MAAM,uBAAuB,CAAC;AAE9F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAoD1D,wBAAgB,oBAAoB,CAChC,QAAQ,EAAE,KAAK,CAAC,cAAc,EAC9B,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,oBAAoB,GAC9B,IAAI,CAwDN;AAED,eAAe,oBAAoB,CAAC;AAUpC;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAChC,QAAQ,EAAE,KAAK,CAAC,cAAc,EAC9B,MAAM,EAAE,aAAa,EACrB,GAAG,EAAE,mBAAmB,GACzB,IAAI,CAyDN;AAiCD,wDAAwD;AACxD,wBAAgB,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CA4BlG;AAMD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,cAAc,EAAE,GAAG,EAAE,aAAa,GAAG,IAAI,CAwC5F"}
1
+ {"version":3,"file":"terrainUniforms.d.ts","sourceRoot":"","sources":["../../src/utils/terrainUniforms.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAe,MAAM,uBAAuB,CAAC;AAE9F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAoD1D;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,KAAK,CAAC,cAAc,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAwBrG;AAED,wBAAgB,oBAAoB,CAChC,QAAQ,EAAE,KAAK,CAAC,cAAc,EAC9B,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,oBAAoB,GAC9B,IAAI,CAqCN;AAED,eAAe,oBAAoB,CAAC;AAUpC;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAChC,QAAQ,EAAE,KAAK,CAAC,cAAc,EAC9B,MAAM,EAAE,aAAa,EACrB,GAAG,EAAE,mBAAmB,GACzB,IAAI,CAyDN;AAiCD,wDAAwD;AACxD,wBAAgB,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CA4BlG;AAMD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,cAAc,EAAE,GAAG,EAAE,aAAa,GAAG,IAAI,CAwC5F"}
@@ -45,9 +45,15 @@ function setColor(uniform, hex) {
45
45
  return;
46
46
  uniform.value.setStyle(hex, THREE.SRGBColorSpace);
47
47
  }
48
- export function applyTerrainUniforms(material, config, quality) {
48
+ /**
49
+ * The height field's own uniforms (terrainFormUniforms): landform, scale, octaves,
50
+ * warp, erosion, shaping. Shared by the terrain material and by every material that
51
+ * includes `terrainFieldOnly` to read the ground — the ocean, for its shoreline —
52
+ * so the two can never disagree about where the ground is.
53
+ */
54
+ export function applyTerrainFieldUniforms(material, config) {
49
55
  const u = material.uniforms;
50
- if (!u)
56
+ if (!u || !u.u_terrainType)
51
57
  return;
52
58
  u.u_terrainType.value = TYPE_INDEX[config.terrainType] ?? 2;
53
59
  u.u_elevation.value = Math.max(config.elevation, 0.01);
@@ -68,6 +74,13 @@ export function applyTerrainUniforms(material, config, quality) {
68
74
  u.u_plateau.value = config.plateau;
69
75
  u.u_valleyDepth.value = config.valleyDepth;
70
76
  u.u_valleyWidth.value = config.valleyWidth;
77
+ u.u_shadowSoftness.value = config.shadowSoftness;
78
+ }
79
+ export function applyTerrainUniforms(material, config, quality) {
80
+ const u = material.uniforms;
81
+ if (!u)
82
+ return;
83
+ applyTerrainFieldUniforms(material, config);
71
84
  setColor(u.u_lowColor, config.lowColor);
72
85
  setColor(u.u_midColor, config.midColor);
73
86
  setColor(u.u_rockColor, config.rockColor);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@3driseai/3drise-viewer",
3
- "version": "0.1.30",
3
+ "version": "0.1.31",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -39,6 +39,6 @@
39
39
  },
40
40
  "dependencies": {
41
41
  "@3driseai/3drise-common": "^1.0.1",
42
- "@3driseai/3drise-core": "^1.0.23"
42
+ "@3driseai/3drise-core": "^1.0.24"
43
43
  }
44
44
  }