@zephyr3d/scene 0.9.22 → 0.9.24
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.
- package/dist/animation/joint_dynamics/collision.js +1 -7
- package/dist/animation/joint_dynamics/collision.js.map +1 -1
- package/dist/animation/joint_dynamics/constraints.js +2 -17
- package/dist/animation/joint_dynamics/constraints.js.map +1 -1
- package/dist/animation/joint_dynamics/controller.js +2 -20
- package/dist/animation/joint_dynamics/controller.js.map +1 -1
- package/dist/animation/joint_dynamics/joint_dynamics_system.js +1 -3
- package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
- package/dist/animation/joint_dynamics/solver.js +14 -60
- package/dist/animation/joint_dynamics/solver.js.map +1 -1
- package/dist/animation/joint_dynamics/types.js +3 -3
- package/dist/animation/joint_dynamics/types.js.map +1 -1
- package/dist/app/app.js +23 -0
- package/dist/app/app.js.map +1 -1
- package/dist/app/scriptregistry.js +16 -53
- package/dist/app/scriptregistry.js.map +1 -1
- package/dist/asset/assetmanager.js +2 -0
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/model.js +22 -0
- package/dist/asset/model.js.map +1 -1
- package/dist/blitter/bilateralblur.js +3 -1
- package/dist/blitter/bilateralblur.js.map +1 -1
- package/dist/blitter/blitter.js +3 -3
- package/dist/blitter/blitter.js.map +1 -1
- package/dist/camera/camera.js +398 -45
- package/dist/camera/camera.js.map +1 -1
- package/dist/camera/perspectivecamera.js +69 -2
- package/dist/camera/perspectivecamera.js.map +1 -1
- package/dist/index.d.ts +9113 -8740
- package/dist/index.js +10 -2
- package/dist/index.js.map +1 -1
- package/dist/material/blinn.js +1 -1
- package/dist/material/blinn.js.map +1 -1
- package/dist/material/lambert.js +3 -3
- package/dist/material/lambert.js.map +1 -1
- package/dist/material/material.js +8 -5
- package/dist/material/material.js.map +1 -1
- package/dist/material/meshmaterial.js +17 -10
- package/dist/material/meshmaterial.js.map +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
- package/dist/material/mixins/lightmodel/lambert.js +1 -1
- package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +21 -6
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js +1 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
- package/dist/material/mixins/lit.js +33 -11
- package/dist/material/mixins/lit.js.map +1 -1
- package/dist/material/mixins/pbr/brdf.js +44 -12
- package/dist/material/mixins/pbr/brdf.js.map +1 -1
- package/dist/material/mixins/pbr/common.js +149 -14
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/mtoon.js +7 -4
- package/dist/material/mtoon.js.map +1 -1
- package/dist/material/pbrblueprint.js +5 -1
- package/dist/material/pbrblueprint.js.map +1 -1
- package/dist/material/pbrmr.js +1 -1
- package/dist/material/pbrmr.js.map +1 -1
- package/dist/material/pbrsg.js +1 -1
- package/dist/material/pbrsg.js.map +1 -1
- package/dist/material/shader/helper.js +512 -334
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/material/skin.js +2 -2
- package/dist/material/skin.js.map +1 -1
- package/dist/material/terrain-cm.js +5 -5
- package/dist/material/terrain-cm.js.map +1 -1
- package/dist/material/water.js +6 -4
- package/dist/material/water.js.map +1 -1
- package/dist/posteffect/bloom.js +54 -4
- package/dist/posteffect/bloom.js.map +1 -1
- package/dist/posteffect/compositor.js +41 -0
- package/dist/posteffect/compositor.js.map +1 -1
- package/dist/posteffect/posteffect.js +35 -0
- package/dist/posteffect/posteffect.js.map +1 -1
- package/dist/posteffect/sao.js +7 -6
- package/dist/posteffect/sao.js.map +1 -1
- package/dist/posteffect/skinsss.js +3 -3
- package/dist/posteffect/skinsss.js.map +1 -1
- package/dist/posteffect/ssgi.js +988 -436
- package/dist/posteffect/ssgi.js.map +1 -1
- package/dist/posteffect/ssr.js +83 -45
- package/dist/posteffect/ssr.js.map +1 -1
- package/dist/posteffect/sss.js +18 -15
- package/dist/posteffect/sss.js.map +1 -1
- package/dist/posteffect/taa.js +5 -4
- package/dist/posteffect/taa.js.map +1 -1
- package/dist/posteffect/tonemap.js +15 -3
- package/dist/posteffect/tonemap.js.map +1 -1
- package/dist/render/abuffer_oit.js +2 -2
- package/dist/render/abuffer_oit.js.map +1 -1
- package/dist/render/cluster_light.js +22 -16
- package/dist/render/cluster_light.js.map +1 -1
- package/dist/render/drawable_mixin.js +8 -5
- package/dist/render/drawable_mixin.js.map +1 -1
- package/dist/render/dualdepthpeeling_oit.js +10 -5
- package/dist/render/dualdepthpeeling_oit.js.map +1 -1
- package/dist/render/envlight.js +298 -5
- package/dist/render/envlight.js.map +1 -1
- package/dist/render/gpu_picking.js +7 -5
- package/dist/render/gpu_picking.js.map +1 -1
- package/dist/render/hzb.js +28 -19
- package/dist/render/hzb.js.map +1 -1
- package/dist/render/lightpass.js +18 -4
- package/dist/render/lightpass.js.map +1 -1
- package/dist/render/render_queue.js +37 -4
- package/dist/render/render_queue.js.map +1 -1
- package/dist/render/renderer.js +8 -3
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/rendergraph/blackboard.js +20 -48
- package/dist/render/rendergraph/blackboard.js.map +1 -1
- package/dist/render/rendergraph/device_pool_allocator.js +18 -58
- package/dist/render/rendergraph/device_pool_allocator.js.map +1 -1
- package/dist/render/rendergraph/executor.js +89 -115
- package/dist/render/rendergraph/executor.js.map +1 -1
- package/dist/render/rendergraph/forward_plus_builder.js +1003 -715
- package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
- package/dist/render/rendergraph/frame_graph_context.js +1 -1
- package/dist/render/rendergraph/frame_graph_context.js.map +1 -1
- package/dist/render/rendergraph/frame_resource_requirements.js +14 -0
- package/dist/render/rendergraph/frame_resource_requirements.js.map +1 -0
- package/dist/render/rendergraph/history_resource_manager.js +74 -140
- package/dist/render/rendergraph/history_resource_manager.js.map +1 -1
- package/dist/render/rendergraph/history_resources.js +7 -5
- package/dist/render/rendergraph/history_resources.js.map +1 -1
- package/dist/render/rendergraph/render_context.js +19 -0
- package/dist/render/rendergraph/render_context.js.map +1 -0
- package/dist/render/rendergraph/render_pipeline.js +315 -0
- package/dist/render/rendergraph/render_pipeline.js.map +1 -0
- package/dist/render/rendergraph/rendergraph.js +158 -141
- package/dist/render/rendergraph/rendergraph.js.map +1 -1
- package/dist/render/rendergraph/scene_render_context.js +267 -0
- package/dist/render/rendergraph/scene_render_context.js.map +1 -0
- package/dist/render/rendergraph/texture_affinity_cache.js +19 -0
- package/dist/render/rendergraph/texture_affinity_cache.js.map +1 -0
- package/dist/render/rendergraph/types.js +19 -31
- package/dist/render/rendergraph/types.js.map +1 -1
- package/dist/render/renderpass.js +3 -3
- package/dist/render/renderpass.js.map +1 -1
- package/dist/render/shadow_mask_pass.js +7 -6
- package/dist/render/shadow_mask_pass.js.map +1 -1
- package/dist/render/sky.js +257 -95
- package/dist/render/sky.js.map +1 -1
- package/dist/render/weightedblended_oit.js +4 -3
- package/dist/render/weightedblended_oit.js.map +1 -1
- package/dist/scene/basesprite.js +2 -0
- package/dist/scene/basesprite.js.map +1 -1
- package/dist/scene/batchgroup.js +10 -0
- package/dist/scene/batchgroup.js.map +1 -1
- package/dist/scene/environment.js +61 -2
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/light.js +178 -10
- package/dist/scene/light.js.map +1 -1
- package/dist/scene/meshdrawable.js +89 -2
- package/dist/scene/meshdrawable.js.map +1 -1
- package/dist/scene/msdftext.js +2 -0
- package/dist/scene/msdftext.js.map +1 -1
- package/dist/scene/msdftextsprite.js +2 -0
- package/dist/scene/msdftextsprite.js.map +1 -1
- package/dist/scene/particlesys.js +2 -0
- package/dist/scene/particlesys.js.map +1 -1
- package/dist/scene/scene.js +34 -1
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/terrain-cm/grass.js +2 -1
- package/dist/scene/terrain-cm/grass.js.map +1 -1
- package/dist/scene/terrain-cm/terrain-cm.js +2 -0
- package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
- package/dist/scene/water.js +2 -0
- package/dist/scene/water.js.map +1 -1
- package/dist/shaders/atmosphere.js +5 -4
- package/dist/shaders/atmosphere.js.map +1 -1
- package/dist/shaders/fog.js +10 -3
- package/dist/shaders/fog.js.map +1 -1
- package/dist/shaders/shadow.js +149 -40
- package/dist/shaders/shadow.js.map +1 -1
- package/dist/shaders/ssgi_reprojection.js +118 -0
- package/dist/shaders/ssgi_reprojection.js.map +1 -0
- package/dist/shaders/ssr.js +322 -154
- package/dist/shaders/ssr.js.map +1 -1
- package/dist/shadow/esm.js +10 -7
- package/dist/shadow/esm.js.map +1 -1
- package/dist/shadow/pcf_opt.js +12 -12
- package/dist/shadow/pcf_opt.js.map +1 -1
- package/dist/shadow/pcf_pd.js +12 -12
- package/dist/shadow/pcf_pd.js.map +1 -1
- package/dist/shadow/pcss.js +16 -11
- package/dist/shadow/pcss.js.map +1 -1
- package/dist/shadow/shadow_impl.js +29 -3
- package/dist/shadow/shadow_impl.js.map +1 -1
- package/dist/shadow/shadowmapper.js +5 -2
- package/dist/shadow/shadowmapper.js.map +1 -1
- package/dist/shadow/ssm.js +13 -13
- package/dist/shadow/ssm.js.map +1 -1
- package/dist/shadow/vsm.js +7 -7
- package/dist/shadow/vsm.js.map +1 -1
- package/dist/utility/physical.js +74 -0
- package/dist/utility/physical.js.map +1 -0
- package/dist/utility/rendermipmap.js +2 -2
- package/dist/utility/rendermipmap.js.map +1 -1
- package/dist/utility/serialization/manager.js +3 -1
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +3 -1
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/batch.js +3 -1
- package/dist/utility/serialization/scene/batch.js.map +1 -1
- package/dist/utility/serialization/scene/camera.js +598 -2
- package/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/utility/serialization/scene/light.js +180 -9
- package/dist/utility/serialization/scene/light.js.map +1 -1
- package/dist/utility/serialization/scene/material.js +43 -3
- package/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/utility/serialization/scene/mesh.js +3 -1
- package/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +3 -1
- package/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/utility/serialization/scene/particle.js +3 -1
- package/dist/utility/serialization/scene/particle.js.map +1 -1
- package/dist/utility/serialization/scene/primitive.js +2 -0
- package/dist/utility/serialization/scene/primitive.js.map +1 -1
- package/dist/utility/serialization/scene/scene.js +70 -0
- package/dist/utility/serialization/scene/scene.js.map +1 -1
- package/dist/utility/serialization/scene/sprite.js +3 -1
- package/dist/utility/serialization/scene/sprite.js.map +1 -1
- package/dist/utility/serialization/scene/terrain.js +3 -1
- package/dist/utility/serialization/scene/terrain.js.map +1 -1
- package/dist/utility/serialization/scene/text.js +3 -0
- package/dist/utility/serialization/scene/text.js.map +1 -1
- package/dist/utility/serialization/scene/water.js +3 -1
- package/dist/utility/serialization/scene/water.js.map +1 -1
- package/dist/values.js +59 -65
- package/dist/values.js.map +1 -1
- package/package.json +3 -3
|
@@ -3,7 +3,7 @@ import { buildConstraints, buildSurfaceFaces } from './constraints.js';
|
|
|
3
3
|
import { simulate, applyAngleLimits, applyResult, extractLocalTwist } from './solver.js';
|
|
4
4
|
import { Vector3, Quaternion, Matrix4x4, clamp01, InterpolatorScalar } from '@zephyr3d/base';
|
|
5
5
|
|
|
6
|
-
// High-level
|
|
6
|
+
// High-level SPCR joint-dynamics controller.
|
|
7
7
|
/**
|
|
8
8
|
* High-level controller for joint dynamics simulation.
|
|
9
9
|
*
|
|
@@ -80,10 +80,8 @@ import { Vector3, Quaternion, Matrix4x4, clamp01, InterpolatorScalar } from '@ze
|
|
|
80
80
|
this._pointTransforms = pointTransforms;
|
|
81
81
|
this._colliderTransforms = colliders.map((c)=>c.transform);
|
|
82
82
|
this._grabberTransforms = grabbers.map((g)=>g.transform);
|
|
83
|
-
// Build constraints
|
|
84
83
|
this._rebuildConstraints();
|
|
85
84
|
this._baseConstraintLengths = this._constraints.map((constraint)=>constraint.length);
|
|
86
|
-
// Flatten bone hierarchy to point list, build parent map
|
|
87
85
|
const allPoints = [];
|
|
88
86
|
const visitedPoints = new Set();
|
|
89
87
|
this._parentMap = new Map(); // child index -> parent index
|
|
@@ -104,35 +102,29 @@ import { Vector3, Quaternion, Matrix4x4, clamp01, InterpolatorScalar } from '@ze
|
|
|
104
102
|
allPoints.sort((a, b)=>a.index - b.index);
|
|
105
103
|
this._allPoints = allPoints;
|
|
106
104
|
this._maxPointDepth = allPoints.length > 0 ? Math.max(...allPoints.map((p)=>p.depth)) : 0;
|
|
107
|
-
//
|
|
108
|
-
// This is critical for correct bone rotation in skinned meshes
|
|
105
|
+
// Derive each missing bone axis in parent-local space for skinning.
|
|
109
106
|
for (const p of allPoints){
|
|
110
107
|
if (!p.boneAxis && p.children.length > 0) {
|
|
111
108
|
const childPos = pointTransforms[p.children[0].index].getWorldPosition();
|
|
112
109
|
const parentPos = pointTransforms[p.index].getWorldPosition();
|
|
113
|
-
// InverseTransformPoint: convert child world pos to parent local space
|
|
114
110
|
const parentRot = pointTransforms[p.index].getWorldRotation();
|
|
115
111
|
const parentScale = pointTransforms[p.index].getLocalScale();
|
|
116
112
|
const diff = Vector3.sub(childPos, parentPos);
|
|
117
113
|
const invRot = Quaternion.inverse(parentRot);
|
|
118
114
|
const localDir = invRot.transform(diff);
|
|
119
|
-
// Apply inverse scale
|
|
120
115
|
const unscaled = new Vector3(parentScale.x !== 0 ? localDir.x / parentScale.x : 0, parentScale.y !== 0 ? localDir.y / parentScale.y : 0, parentScale.z !== 0 ? localDir.z / parentScale.z : 0);
|
|
121
116
|
p.boneAxis = Vector3.normalize(unscaled);
|
|
122
117
|
}
|
|
123
118
|
}
|
|
124
|
-
// Build PointR/RW arrays
|
|
125
119
|
this._pointsR = allPoints.map((p)=>this._createPointR(p));
|
|
126
120
|
this._basePointParentLengths = this._pointsR.map((point)=>point.parentLength);
|
|
127
121
|
this._pointsRW = allPoints.map(()=>this._createPointRW());
|
|
128
122
|
this._positionsToTransform = new Array(allPoints.length).fill(Vector3.zero());
|
|
129
123
|
this._clearOutputTransformCache();
|
|
130
|
-
// Initialize colliders
|
|
131
124
|
this._collidersR = colliders.map((c)=>c.r);
|
|
132
125
|
this._collidersRW = colliders.map((c)=>this._createColliderRW(c.transform));
|
|
133
126
|
this._colliderHandleIds = this._collidersR.map(()=>this._nextColliderHandleId++);
|
|
134
127
|
this._rebuildColliderHandleMap();
|
|
135
|
-
// Initialize grabbers
|
|
136
128
|
this._grabbersR = grabbers.map((g)=>g.r);
|
|
137
129
|
this._grabbersRW = grabbers.map((g)=>({
|
|
138
130
|
enabled: g.enabled ? 1 : 0,
|
|
@@ -140,7 +132,6 @@ import { Vector3, Quaternion, Matrix4x4, clamp01, InterpolatorScalar } from '@ze
|
|
|
140
132
|
}));
|
|
141
133
|
this._grabberHandleIds = this._grabbersR.map(()=>this._nextGrabberHandleId++);
|
|
142
134
|
this._rebuildGrabberHandleMap();
|
|
143
|
-
// Flat planes
|
|
144
135
|
this._flatPlanes = flatPlanes.map((fp)=>({
|
|
145
136
|
normal: Vector3.normalize(fp.up),
|
|
146
137
|
distance: -Vector3.dot(Vector3.normalize(fp.up), fp.position)
|
|
@@ -151,7 +142,6 @@ import { Vector3, Quaternion, Matrix4x4, clamp01, InterpolatorScalar } from '@ze
|
|
|
151
142
|
this._flatPlaneEnabled = this._flatPlaneAll.map(()=>true);
|
|
152
143
|
this._flatPlaneHandleIds = this._flatPlaneAll.map(()=>this._nextFlatPlaneHandleId++);
|
|
153
144
|
this._rebuildFlatPlaneHandleMap();
|
|
154
|
-
// Capture initial state
|
|
155
145
|
this._previousRootPosition = rootTransform.getWorldPosition();
|
|
156
146
|
this._previousRootRotation = rootTransform.getWorldRotation();
|
|
157
147
|
for(let i = 0; i < this._pointsRW.length; i++){
|
|
@@ -178,7 +168,6 @@ import { Vector3, Quaternion, Matrix4x4, clamp01, InterpolatorScalar } from '@ze
|
|
|
178
168
|
if (!this._initialized || !this._rootTransform) {
|
|
179
169
|
return;
|
|
180
170
|
}
|
|
181
|
-
// Update fade
|
|
182
171
|
if (this._fadeState !== 'none') {
|
|
183
172
|
this._fadeTimer += deltaTime;
|
|
184
173
|
if (this._fadeTimer >= this._fadeDuration) {
|
|
@@ -189,7 +178,6 @@ import { Vector3, Quaternion, Matrix4x4, clamp01, InterpolatorScalar } from '@ze
|
|
|
189
178
|
const blendRatio = this._computeBlendRatio();
|
|
190
179
|
this._updateScaleDependentParameters();
|
|
191
180
|
const rootSlideLimit = this._config.rootSlideLimit < 0 ? -1 : this._config.rootSlideLimit * this._currentSystemScale;
|
|
192
|
-
// Capture current transforms
|
|
193
181
|
const rootPos = this._rootTransform.getWorldPosition();
|
|
194
182
|
const rootRot = this._rootTransform.getWorldRotation();
|
|
195
183
|
const inputLocalRotations = this._getInputLocalRotations();
|
|
@@ -209,7 +197,6 @@ import { Vector3, Quaternion, Matrix4x4, clamp01, InterpolatorScalar } from '@ze
|
|
|
209
197
|
for(let i = 0; i < this._grabbersRW.length; i++){
|
|
210
198
|
this._grabbersRW[i].position = this._grabberTransforms[i].getWorldPosition();
|
|
211
199
|
}
|
|
212
|
-
// Run simulation
|
|
213
200
|
const params = {
|
|
214
201
|
isPaused: this._isPaused,
|
|
215
202
|
stepTime: deltaTime,
|
|
@@ -236,11 +223,9 @@ import { Vector3, Quaternion, Matrix4x4, clamp01, InterpolatorScalar } from '@ze
|
|
|
236
223
|
const result = simulate(params, this._pointsR, this._pointsRW, this._constraints, this._collidersR, this._collidersRW, this._grabbersR, this._grabbersRW, this._movableLimitTargets, this._flatPlanes);
|
|
237
224
|
this._positionsToTransform = result.positionsToTransform;
|
|
238
225
|
this._fakeWaveCounter = result.fakeWaveCounter;
|
|
239
|
-
// Angle limits
|
|
240
226
|
if (this._config.angleLimitConfig.angleLimit >= 0) {
|
|
241
227
|
applyAngleLimits(this._pointsR, this._pointsRW, this._config.angleLimitConfig);
|
|
242
228
|
}
|
|
243
|
-
// Apply results
|
|
244
229
|
const transformRots = this._pointTransforms.map((t)=>t.getWorldRotation());
|
|
245
230
|
const transformLocalRots = inputLocalRotations;
|
|
246
231
|
const sceneParentRots = this._pointTransforms.map((t)=>this._getSceneParentWorldRotation(t));
|
|
@@ -963,14 +948,11 @@ import { Vector3, Quaternion, Matrix4x4, clamp01, InterpolatorScalar } from '@ze
|
|
|
963
948
|
_createPointR(node) {
|
|
964
949
|
const parentIdx = this._parentMap.get(node.index) ?? -1;
|
|
965
950
|
const childIdx = node.children.length > 0 ? node.children[0].index : -1;
|
|
966
|
-
// Capture initial local transform for rotation blending
|
|
967
951
|
const t = this._pointTransforms[node.index];
|
|
968
952
|
const initLocalPos = t.getLocalPosition();
|
|
969
953
|
const initLocalRot = t.getLocalRotation();
|
|
970
954
|
const initLocalScale = t.getLocalScale();
|
|
971
|
-
// BoneAxis: local-space direction to first child (computed in initialize)
|
|
972
955
|
const boneAxis = node.boneAxis ?? new Vector3(0, -1, 0);
|
|
973
|
-
// ParentLength: distance to parent
|
|
974
956
|
let parentLength = 0;
|
|
975
957
|
if (parentIdx !== -1) {
|
|
976
958
|
const pPos = this._pointTransforms[parentIdx].getWorldPosition();
|