@zephyr3d/scene 0.9.26 → 0.9.27

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 (95) hide show
  1. package/dist/animation/animationset.js +92 -30
  2. package/dist/animation/animationset.js.map +1 -1
  3. package/dist/animation/joint_dynamics/convex_collider.js +320 -0
  4. package/dist/animation/joint_dynamics/convex_collider.js.map +1 -0
  5. package/dist/animation/skeleton.js +21 -1
  6. package/dist/animation/skeleton.js.map +1 -1
  7. package/dist/asset/model.js +6 -2
  8. package/dist/asset/model.js.map +1 -1
  9. package/dist/camera/camera.js +75 -23
  10. package/dist/camera/camera.js.map +1 -1
  11. package/dist/index.d.ts +4764 -3600
  12. package/dist/index.js +2 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/material/hairstrand.js +235 -235
  15. package/dist/material/hairstrand.js.map +1 -1
  16. package/dist/material/material.js +296 -296
  17. package/dist/material/material.js.map +1 -1
  18. package/dist/material/mixins/lit.js +33 -1
  19. package/dist/material/mixins/lit.js.map +1 -1
  20. package/dist/material/shader/helper.js +404 -3
  21. package/dist/material/shader/helper.js.map +1 -1
  22. package/dist/material/water.js +2057 -72
  23. package/dist/material/water.js.map +1 -1
  24. package/dist/posteffect/motionblur.js +663 -58
  25. package/dist/posteffect/motionblur.js.map +1 -1
  26. package/dist/posteffect/posteffect.js +12 -1
  27. package/dist/posteffect/posteffect.js.map +1 -1
  28. package/dist/posteffect/sao.js +46 -44
  29. package/dist/posteffect/sao.js.map +1 -1
  30. package/dist/posteffect/sss.js +30 -2
  31. package/dist/posteffect/sss.js.map +1 -1
  32. package/dist/render/abuffer_oit.js +37 -37
  33. package/dist/render/abuffer_oit.js.map +1 -1
  34. package/dist/render/clipmap.js +156 -5
  35. package/dist/render/clipmap.js.map +1 -1
  36. package/dist/render/cull_visitor.js +1 -0
  37. package/dist/render/cull_visitor.js.map +1 -1
  38. package/dist/render/dualdepthpeeling_oit.js +49 -49
  39. package/dist/render/dualdepthpeeling_oit.js.map +1 -1
  40. package/dist/render/fbm_wavegenerator.js +3 -3
  41. package/dist/render/fbm_wavegenerator.js.map +1 -1
  42. package/dist/render/fft_wavegenerator.js +57 -15
  43. package/dist/render/fft_wavegenerator.js.map +1 -1
  44. package/dist/render/gerstner_wavegenerator.js +127 -20
  45. package/dist/render/gerstner_wavegenerator.js.map +1 -1
  46. package/dist/render/hzb.js +80 -22
  47. package/dist/render/hzb.js.map +1 -1
  48. package/dist/render/lightpass.js +6 -3
  49. package/dist/render/lightpass.js.map +1 -1
  50. package/dist/render/oit.js +11 -11
  51. package/dist/render/oit.js.map +1 -1
  52. package/dist/render/render_queue.js +36 -0
  53. package/dist/render/render_queue.js.map +1 -1
  54. package/dist/render/renderer.js +4 -0
  55. package/dist/render/renderer.js.map +1 -1
  56. package/dist/render/rendergraph/blackboard.js +1 -0
  57. package/dist/render/rendergraph/blackboard.js.map +1 -1
  58. package/dist/render/rendergraph/forward_plus_builder.js +318 -9
  59. package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
  60. package/dist/render/rendergraph/frame_resource_requirements.js +1 -0
  61. package/dist/render/rendergraph/frame_resource_requirements.js.map +1 -1
  62. package/dist/render/rendergraph/history_resources.js +8 -1
  63. package/dist/render/rendergraph/history_resources.js.map +1 -1
  64. package/dist/render/underwater.js +624 -0
  65. package/dist/render/underwater.js.map +1 -0
  66. package/dist/render/water_caustics.js +1380 -0
  67. package/dist/render/water_caustics.js.map +1 -0
  68. package/dist/render/weightedblended_oit.js +33 -33
  69. package/dist/render/weightedblended_oit.js.map +1 -1
  70. package/dist/scene/water.js +540 -4
  71. package/dist/scene/water.js.map +1 -1
  72. package/dist/shaders/water.js +22 -19
  73. package/dist/shaders/water.js.map +1 -1
  74. package/dist/shaders/water_medium.js +56 -0
  75. package/dist/shaders/water_medium.js.map +1 -0
  76. package/dist/shadow/shadow_region.js +49 -49
  77. package/dist/shadow/shadow_region.js.map +1 -1
  78. package/dist/utility/serialization/manager.js +3 -1
  79. package/dist/utility/serialization/manager.js.map +1 -1
  80. package/dist/utility/serialization/scene/animation.js +31 -2
  81. package/dist/utility/serialization/scene/animation.js.map +1 -1
  82. package/dist/utility/serialization/scene/camera.js +53 -25
  83. package/dist/utility/serialization/scene/camera.js.map +1 -1
  84. package/dist/utility/serialization/scene/light.js.map +1 -1
  85. package/dist/utility/serialization/scene/water.js +1101 -21
  86. package/dist/utility/serialization/scene/water.js.map +1 -1
  87. package/dist/utility/shprojector.js +87 -87
  88. package/dist/utility/shprojector.js.map +1 -1
  89. package/package.json +1 -1
  90. package/dist/render/rendergraph/frame_graph_context.js +0 -41
  91. package/dist/render/rendergraph/frame_graph_context.js.map +0 -1
  92. package/dist/shaders/ssgi.js +0 -63
  93. package/dist/shaders/ssgi.js.map +0 -1
  94. package/dist/shaders/ssgi_reprojection.js +0 -118
  95. package/dist/shaders/ssgi_reprojection.js.map +0 -1
@@ -89,6 +89,29 @@ function decodeSkeletonBindPose(encoded) {
89
89
  scale: new Vector3(data[7], data[8], data[9])
90
90
  };
91
91
  }
92
+ function encodeSkeletonPose(pose) {
93
+ const values = pose.flatMap((transform)=>[
94
+ ...transform.position,
95
+ ...transform.rotation,
96
+ ...transform.scale
97
+ ]);
98
+ return uint8ArrayToBase64(new Uint8Array(new Float32Array(values).buffer));
99
+ }
100
+ function decodeSkeletonPose(encoded, jointCount) {
101
+ const data = new Float32Array(base64ToUint8Array(encoded).buffer);
102
+ if (data.length !== jointCount * 10) {
103
+ throw new Error('Invalid serialized skeleton pose');
104
+ }
105
+ const pose = [];
106
+ for(let i = 0; i < jointCount; i++){
107
+ pose.push({
108
+ position: new Vector3(data[i * 10 + 0], data[i * 10 + 1], data[i * 10 + 2]),
109
+ rotation: new Quaternion(data[i * 10 + 3], data[i * 10 + 4], data[i * 10 + 5], data[i * 10 + 6]),
110
+ scale: new Vector3(data[i * 10 + 7], data[i * 10 + 8], data[i * 10 + 9])
111
+ });
112
+ }
113
+ return pose;
114
+ }
92
115
  function vectorToArray(value) {
93
116
  return [
94
117
  value.x,
@@ -1824,6 +1847,7 @@ function getPCAGeometryCacheTrackClass() {
1824
1847
  const inverseBindMatricesArray = new Float32Array(base64ToUint8Array(init.inverseBindMatrices).buffer);
1825
1848
  const bindPoseArray = new Float32Array(base64ToUint8Array(init.bindPose ?? init.bindPoseMatrices).buffer);
1826
1849
  const rootBindPose = init.rootBindPose ? decodeSkeletonBindPose(init.rootBindPose) : undefined;
1850
+ const retargetPose = init.retargetPose ? decodeSkeletonPose(init.retargetPose, joints.length) : undefined;
1827
1851
  const inverseBindMatrices = [];
1828
1852
  const bindPose = [];
1829
1853
  for(let i = 0; i < joints.length; i++){
@@ -1849,7 +1873,8 @@ function getPCAGeometryCacheTrackClass() {
1849
1873
  if (!rig) {
1850
1874
  rig = new SkeletonRig(joints, bindPose, {
1851
1875
  rootJoint,
1852
- rootBindPose
1876
+ rootBindPose,
1877
+ retargetPose
1853
1878
  });
1854
1879
  ctx.animationSet.rigs.push(new DRef(rig));
1855
1880
  }
@@ -1881,6 +1906,7 @@ function getPCAGeometryCacheTrackClass() {
1881
1906
  rootBindPose: encodeSkeletonBindPose(obj.rig.rootBindPose),
1882
1907
  inverseBindMatrices: uint8ArrayToBase64(new Uint8Array(new Float32Array(inverseBindMatrices).buffer)),
1883
1908
  bindPose: uint8ArrayToBase64(new Uint8Array(new Float32Array(bindPose).buffer)),
1909
+ retargetPose: obj.rig.hasRetargetPose ? encodeSkeletonPose(obj.rig.retargetPose) : undefined,
1884
1910
  id: obj.persistentId
1885
1911
  };
1886
1912
  },
@@ -1923,9 +1949,11 @@ function getPCAGeometryCacheTrackClass() {
1923
1949
  });
1924
1950
  }
1925
1951
  }
1952
+ const retargetPose = init.retargetPose ? decodeSkeletonPose(init.retargetPose, joints.length) : undefined;
1926
1953
  const rig = new SkeletonRig(joints, bindPose, {
1927
1954
  rootJoint,
1928
- rootBindPose
1955
+ rootBindPose,
1956
+ retargetPose
1929
1957
  });
1930
1958
  rig.persistentId = init.id;
1931
1959
  return {
@@ -1947,6 +1975,7 @@ function getPCAGeometryCacheTrackClass() {
1947
1975
  rootJoint: obj.rootJoint?.persistentId ?? '',
1948
1976
  rootBindPose: encodeSkeletonBindPose(obj.rootBindPose),
1949
1977
  bindPose: uint8ArrayToBase64(new Uint8Array(new Float32Array(bindPose).buffer)),
1978
+ retargetPose: obj.hasRetargetPose ? encodeSkeletonPose(obj.retargetPose) : undefined,
1950
1979
  id: obj.persistentId
1951
1980
  };
1952
1981
  },