@zephyr3d/scene 0.7.0 → 0.8.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.
- package/dist/animation/animation.js +4 -33
- package/dist/animation/animation.js.map +1 -1
- package/dist/animation/animationset.js +24 -11
- package/dist/animation/animationset.js.map +1 -1
- package/dist/animation/animationtrack.js +1 -0
- package/dist/animation/animationtrack.js.map +1 -1
- package/dist/animation/eulerrotationtrack.js +0 -1
- package/dist/animation/eulerrotationtrack.js.map +1 -1
- package/dist/animation/ik/ccd_solver.js +372 -0
- package/dist/animation/ik/ccd_solver.js.map +1 -0
- package/dist/animation/ik/fabrik_solver.js +399 -0
- package/dist/animation/ik/fabrik_solver.js.map +1 -0
- package/dist/animation/ik/ik_angle_constraint.js +181 -0
- package/dist/animation/ik/ik_angle_constraint.js.map +1 -0
- package/dist/animation/ik/ik_chain.js +163 -0
- package/dist/animation/ik/ik_chain.js.map +1 -0
- package/dist/animation/ik/ik_chain_builder.js +68 -0
- package/dist/animation/ik/ik_chain_builder.js.map +1 -0
- package/dist/animation/ik/ik_constraint.js +25 -0
- package/dist/animation/ik/ik_constraint.js.map +1 -0
- package/dist/animation/ik/ik_pole_constraint.js +123 -0
- package/dist/animation/ik/ik_pole_constraint.js.map +1 -0
- package/dist/animation/ik/ik_solver.js +48 -0
- package/dist/animation/ik/ik_solver.js.map +1 -0
- package/dist/animation/ik/ik_track.js +96 -0
- package/dist/animation/ik/ik_track.js.map +1 -0
- package/dist/animation/ik/ik_utils.js +270 -0
- package/dist/animation/ik/ik_utils.js.map +1 -0
- package/dist/animation/ik/two_bone_ik_solver.js +332 -0
- package/dist/animation/ik/two_bone_ik_solver.js.map +1 -0
- package/dist/animation/ik_modifier.js +61 -0
- package/dist/animation/ik_modifier.js.map +1 -0
- package/dist/animation/ik_postprocessor.js +71 -0
- package/dist/animation/ik_postprocessor.js.map +1 -0
- package/dist/animation/manual_transform_processor.js +156 -0
- package/dist/animation/manual_transform_processor.js.map +1 -0
- package/dist/animation/morphtarget.js +7 -1
- package/dist/animation/morphtarget.js.map +1 -1
- package/dist/animation/morphtrack.js +3 -3
- package/dist/animation/morphtrack.js.map +1 -1
- package/dist/animation/proptrack.js +37 -41
- package/dist/animation/proptrack.js.map +1 -1
- package/dist/animation/rotationtrack.js +0 -1
- package/dist/animation/rotationtrack.js.map +1 -1
- package/dist/animation/scaletrack.js +0 -1
- package/dist/animation/scaletrack.js.map +1 -1
- package/dist/animation/skeleton.js +57 -60
- package/dist/animation/skeleton.js.map +1 -1
- package/dist/animation/skeleton_modifier.js +38 -0
- package/dist/animation/skeleton_modifier.js.map +1 -0
- package/dist/animation/skeleton_postprocessor.js +50 -0
- package/dist/animation/skeleton_postprocessor.js.map +1 -0
- package/dist/animation/spring/multi_chain_spring_system.js +503 -0
- package/dist/animation/spring/multi_chain_spring_system.js.map +1 -0
- package/dist/animation/spring/spring_chain.js +103 -0
- package/dist/animation/spring/spring_chain.js.map +1 -0
- package/dist/animation/spring/spring_collider.js +247 -0
- package/dist/animation/spring/spring_collider.js.map +1 -0
- package/dist/animation/spring/spring_constraint.js +21 -0
- package/dist/animation/spring/spring_constraint.js.map +1 -0
- package/dist/animation/spring/spring_particle.js +20 -0
- package/dist/animation/spring/spring_particle.js.map +1 -0
- package/dist/animation/spring/spring_system.js +526 -0
- package/dist/animation/spring/spring_system.js.map +1 -0
- package/dist/animation/spring_modifier.js +45 -0
- package/dist/animation/spring_modifier.js.map +1 -0
- package/dist/animation/spring_postprocessor.js +54 -0
- package/dist/animation/spring_postprocessor.js.map +1 -0
- package/dist/animation/translationtrack.js +0 -1
- package/dist/animation/translationtrack.js.map +1 -1
- package/dist/app/api.js +13 -4
- package/dist/app/api.js.map +1 -1
- package/dist/app/app.js +13 -1
- package/dist/app/app.js.map +1 -1
- package/dist/app/engine.js +33 -45
- package/dist/app/engine.js.map +1 -1
- package/dist/app/inputmgr.js.map +1 -1
- package/dist/app/runtimescript.js.map +1 -1
- package/dist/app/screen.js +318 -0
- package/dist/app/screen.js.map +1 -0
- package/dist/app/scriptingsystem.js +10 -6
- package/dist/app/scriptingsystem.js.map +1 -1
- package/dist/app/scriptregistry.js +11 -22
- package/dist/app/scriptregistry.js.map +1 -1
- package/dist/asset/assetmanager.js +79 -58
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/builtin.js +5 -5
- package/dist/asset/builtin.js.map +1 -1
- package/dist/asset/loaders/dds/dds.js +6 -2
- package/dist/asset/loaders/dds/dds.js.map +1 -1
- package/dist/asset/loaders/dds/dds_loader.js +1 -1
- package/dist/asset/loaders/dds/dds_loader.js.map +1 -1
- package/dist/asset/loaders/gltf/gltf_loader.js +14 -6
- package/dist/asset/loaders/gltf/gltf_loader.js.map +1 -1
- package/dist/asset/loaders/gltf/helpers.js +6 -2
- package/dist/asset/loaders/gltf/helpers.js.map +1 -1
- package/dist/asset/loaders/hdr/hdr.js +22 -15
- package/dist/asset/loaders/hdr/hdr.js.map +1 -1
- package/dist/asset/loaders/image/tga_Loader.js +2 -1
- package/dist/asset/loaders/image/tga_Loader.js.map +1 -1
- package/dist/asset/loaders/image/webimage_loader.js.map +1 -1
- package/dist/asset/loaders/loader.js +2 -2
- package/dist/asset/loaders/loader.js.map +1 -1
- package/dist/asset/model.js +9 -5
- package/dist/asset/model.js.map +1 -1
- package/dist/blitter/bilateralblur.js.map +1 -1
- package/dist/blitter/blitter.js +9 -11
- package/dist/blitter/blitter.js.map +1 -1
- package/dist/blitter/box.js +0 -1
- package/dist/blitter/box.js.map +1 -1
- package/dist/blitter/copy.js.map +1 -1
- package/dist/blitter/gaussianblur.js.map +1 -1
- package/dist/camera/base.js +1 -3
- package/dist/camera/base.js.map +1 -1
- package/dist/camera/camera.js +121 -37
- package/dist/camera/camera.js.map +1 -1
- package/dist/camera/fps.js +19 -17
- package/dist/camera/fps.js.map +1 -1
- package/dist/camera/orbit.js +45 -43
- package/dist/camera/orbit.js.map +1 -1
- package/dist/camera/orthocamera.js +27 -21
- package/dist/camera/orthocamera.js.map +1 -1
- package/dist/camera/perspectivecamera.js +28 -19
- package/dist/camera/perspectivecamera.js.map +1 -1
- package/dist/index.d.ts +15802 -15577
- package/dist/index.js +33 -11
- package/dist/index.js.map +1 -1
- package/dist/material/blinn.js.map +1 -1
- package/dist/material/grassmaterial.js.map +1 -1
- package/dist/material/lambert.js.map +1 -1
- package/dist/material/material.js +11 -5
- package/dist/material/material.js.map +1 -1
- package/dist/material/meshmaterial.js +10 -9
- package/dist/material/meshmaterial.js.map +1 -1
- package/dist/material/mixins/albedocolor.js.map +1 -1
- package/dist/material/mixins/foliage.js.map +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js +66 -4
- package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
- package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +7 -0
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
- package/dist/material/mixins/lit.js +3 -3
- package/dist/material/mixins/lit.js.map +1 -1
- package/dist/material/mixins/pbr/brdf.js.map +1 -1
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/mixins/texture.js +3 -0
- package/dist/material/mixins/texture.js.map +1 -1
- package/dist/material/mixins/vertexcolor.js.map +1 -1
- package/dist/material/particle.js.map +1 -1
- package/dist/material/pbrblueprint.js +180 -22
- package/dist/material/pbrblueprint.js.map +1 -1
- package/dist/material/pbrmr.js.map +1 -1
- package/dist/material/pbrsg.js.map +1 -1
- package/dist/material/shader/helper.js +41 -56
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/material/sprite.js +301 -0
- package/dist/material/sprite.js.map +1 -0
- package/dist/material/sprite3d.js +301 -0
- package/dist/material/sprite3d.js.map +1 -0
- package/dist/material/sprite3d_std.js +116 -0
- package/dist/material/sprite3d_std.js.map +1 -0
- package/dist/material/sprite3dblueprint.js +235 -0
- package/dist/material/sprite3dblueprint.js.map +1 -0
- package/dist/material/sprite_std.js +116 -0
- package/dist/material/sprite_std.js.map +1 -0
- package/dist/material/spriteblueprint.js +235 -0
- package/dist/material/spriteblueprint.js.map +1 -0
- package/dist/material/terrain-cm.js +0 -1
- package/dist/material/terrain-cm.js.map +1 -1
- package/dist/material/unlit.js.map +1 -1
- package/dist/material/water.js.map +1 -1
- package/dist/posteffect/bloom.js.map +1 -1
- package/dist/posteffect/compositor.js.map +1 -1
- package/dist/posteffect/fxaa.js.map +1 -1
- package/dist/posteffect/grayscale.js.map +1 -1
- package/dist/posteffect/motionblur.js.map +1 -1
- package/dist/posteffect/posteffect.js.map +1 -1
- package/dist/posteffect/sao.js.map +1 -1
- package/dist/posteffect/ssr.js +7 -5
- package/dist/posteffect/ssr.js.map +1 -1
- package/dist/posteffect/taa.js.map +1 -1
- package/dist/posteffect/tonemap.js.map +1 -1
- package/dist/render/abuffer_oit.js +8 -6
- package/dist/render/abuffer_oit.js.map +1 -1
- package/dist/render/clipmap.js +0 -10
- package/dist/render/clipmap.js.map +1 -1
- package/dist/render/cluster_light.js +4 -4
- package/dist/render/cluster_light.js.map +1 -1
- package/dist/render/cull_visitor.js +15 -17
- package/dist/render/cull_visitor.js.map +1 -1
- package/dist/render/depthpass.js +3 -4
- package/dist/render/depthpass.js.map +1 -1
- package/dist/render/drawable.js +15 -0
- package/dist/render/drawable.js.map +1 -0
- package/dist/render/drawable_mixin.js +8 -4
- package/dist/render/drawable_mixin.js.map +1 -1
- package/dist/render/envlight.js.map +1 -1
- package/dist/render/fbm_wavegenerator.js +3 -1
- package/dist/render/fbm_wavegenerator.js.map +1 -1
- package/dist/render/fft_wavegenerator.js +67 -64
- package/dist/render/fft_wavegenerator.js.map +1 -1
- package/dist/render/fullscreenquad.js.map +1 -1
- package/dist/render/gerstner_wavegenerator.js +3 -1
- package/dist/render/gerstner_wavegenerator.js.map +1 -1
- package/dist/render/globalbindgroup_allocator.js +3 -1
- package/dist/render/globalbindgroup_allocator.js.map +1 -1
- package/dist/render/hzb.js +1 -2
- package/dist/render/hzb.js.map +1 -1
- package/dist/render/lightpass.js +13 -13
- package/dist/render/lightpass.js.map +1 -1
- package/dist/render/objectcolorpass.js +4 -7
- package/dist/render/objectcolorpass.js.map +1 -1
- package/dist/render/primitive.js +4 -5
- package/dist/render/primitive.js.map +1 -1
- package/dist/render/render_queue.js +10 -5
- package/dist/render/render_queue.js.map +1 -1
- package/dist/render/renderer.js +16 -22
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/renderpass.js +27 -52
- package/dist/render/renderpass.js.map +1 -1
- package/dist/render/rendertarget.js +5 -0
- package/dist/render/rendertarget.js.map +1 -0
- package/dist/render/screenrendertarget.js +56 -0
- package/dist/render/screenrendertarget.js.map +1 -0
- package/dist/render/shadowmap_pass.js +4 -5
- package/dist/render/shadowmap_pass.js.map +1 -1
- package/dist/render/sky.js +16 -14
- package/dist/render/sky.js.map +1 -1
- package/dist/render/weightedblended_oit.js.map +1 -1
- package/dist/scene/basesprite.js +296 -0
- package/dist/scene/basesprite.js.map +1 -0
- package/dist/scene/batchgroup.js +4 -2
- package/dist/scene/batchgroup.js.map +1 -1
- package/dist/scene/environment.js +9 -10
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/graph_node.js.map +1 -1
- package/dist/scene/light.js +22 -4
- package/dist/scene/light.js.map +1 -1
- package/dist/scene/mesh.js +96 -26
- package/dist/scene/mesh.js.map +1 -1
- package/dist/scene/octree.js.map +1 -1
- package/dist/scene/particlesys.js +25 -22
- package/dist/scene/particlesys.js.map +1 -1
- package/dist/scene/raycast_visitor.js +0 -16
- package/dist/scene/raycast_visitor.js.map +1 -1
- package/dist/scene/scene.js +7 -4
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/scene_node.js +20 -35
- package/dist/scene/scene_node.js.map +1 -1
- package/dist/scene/sprite.js +18 -0
- package/dist/scene/sprite.js.map +1 -0
- package/dist/scene/sprite3d.js +18 -0
- package/dist/scene/sprite3d.js.map +1 -0
- package/dist/scene/terrain-cm/grass.js +5 -4
- package/dist/scene/terrain-cm/grass.js.map +1 -1
- package/dist/scene/terrain-cm/grassmaterial.js +3 -1
- package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
- package/dist/scene/terrain-cm/terrain-cm.js +65 -48
- package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
- package/dist/scene/water.js +35 -30
- package/dist/scene/water.js.map +1 -1
- package/dist/shaders/atmosphere.js +17 -29
- package/dist/shaders/atmosphere.js.map +1 -1
- package/dist/shaders/fog.js.map +1 -1
- package/dist/shaders/misc.js.map +1 -1
- package/dist/shaders/noise.js.map +1 -1
- package/dist/shaders/pbr.js.map +1 -1
- package/dist/shaders/shadow.js.map +1 -1
- package/dist/shaders/ssr.js.map +1 -1
- package/dist/shaders/temporal.js.map +1 -1
- package/dist/shaders/water.js.map +1 -1
- package/dist/shadow/esm.js +1 -1
- package/dist/shadow/esm.js.map +1 -1
- package/dist/shadow/pcf_opt.js.map +1 -1
- package/dist/shadow/pcf_pd.js.map +1 -1
- package/dist/shadow/shader.js +3 -1
- package/dist/shadow/shader.js.map +1 -1
- package/dist/shadow/shadow_impl.js.map +1 -1
- package/dist/shadow/shadowmapper.js +6 -18
- package/dist/shadow/shadowmapper.js.map +1 -1
- package/dist/shadow/ssm.js.map +1 -1
- package/dist/shadow/vsm.js.map +1 -1
- package/dist/shapes/box.js +9 -3
- package/dist/shapes/box.js.map +1 -1
- package/dist/shapes/cylinder.js +2 -2
- package/dist/shapes/cylinder.js.map +1 -1
- package/dist/shapes/plane.js +2 -2
- package/dist/shapes/plane.js.map +1 -1
- package/dist/shapes/shape.js +2 -1
- package/dist/shapes/shape.js.map +1 -1
- package/dist/shapes/sphere.js +2 -2
- package/dist/shapes/sphere.js.map +1 -1
- package/dist/shapes/tetrahedron.js +5 -6
- package/dist/shapes/tetrahedron.js.map +1 -1
- package/dist/shapes/torus.js +2 -2
- package/dist/shapes/torus.js.map +1 -1
- package/dist/utility/aabbtree.js +1 -1
- package/dist/utility/aabbtree.js.map +1 -1
- package/dist/utility/blueprint/common/constants.js +578 -104
- package/dist/utility/blueprint/common/constants.js.map +1 -1
- package/dist/utility/blueprint/common/math.js +471 -9
- package/dist/utility/blueprint/common/math.js.map +1 -1
- package/dist/utility/blueprint/common.js +1 -1
- package/dist/utility/blueprint/common.js.map +1 -1
- package/dist/utility/blueprint/material/func.js +9 -5
- package/dist/utility/blueprint/material/func.js.map +1 -1
- package/dist/utility/blueprint/material/inputs.js.map +1 -1
- package/dist/utility/blueprint/material/ir.js +288 -80
- package/dist/utility/blueprint/material/ir.js.map +1 -1
- package/dist/utility/blueprint/material/pbr.js +92 -4
- package/dist/utility/blueprint/material/pbr.js.map +1 -1
- package/dist/utility/blueprint/material/texture.js +62 -45
- package/dist/utility/blueprint/material/texture.js.map +1 -1
- package/dist/utility/blueprint/node.js +28 -1
- package/dist/utility/blueprint/node.js.map +1 -1
- package/dist/utility/bounding_volume.js.map +1 -1
- package/dist/utility/debug.js.map +1 -1
- package/dist/utility/draco/decoder.js.map +1 -1
- package/dist/utility/misc.js +1 -1
- package/dist/utility/misc.js.map +1 -1
- package/dist/utility/panorama.js.map +1 -1
- package/dist/utility/pmrem.js.map +1 -1
- package/dist/utility/rendermipmap.js.map +1 -1
- package/dist/utility/serialization/json.js +19 -15
- package/dist/utility/serialization/json.js.map +1 -1
- package/dist/utility/serialization/manager.js +89 -22
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +44 -41
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/batch.js +4 -3
- package/dist/utility/serialization/scene/batch.js.map +1 -1
- package/dist/utility/serialization/scene/camera.js +97 -9
- package/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/utility/serialization/scene/common.js +102 -28
- package/dist/utility/serialization/scene/common.js.map +1 -1
- package/dist/utility/serialization/scene/light.js +14 -12
- package/dist/utility/serialization/scene/light.js.map +1 -1
- package/dist/utility/serialization/scene/material.js +216 -26
- package/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/utility/serialization/scene/mesh.js +71 -100
- package/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/misc.js +3 -2
- package/dist/utility/serialization/scene/misc.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +42 -9
- package/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/utility/serialization/scene/particle.js +7 -5
- package/dist/utility/serialization/scene/particle.js.map +1 -1
- package/dist/utility/serialization/scene/primitive.js +18 -15
- package/dist/utility/serialization/scene/primitive.js.map +1 -1
- package/dist/utility/serialization/scene/scene.js +3 -2
- package/dist/utility/serialization/scene/scene.js.map +1 -1
- package/dist/utility/serialization/scene/sprite.js +164 -0
- package/dist/utility/serialization/scene/sprite.js.map +1 -0
- package/dist/utility/serialization/scene/terrain.js +8 -6
- package/dist/utility/serialization/scene/terrain.js.map +1 -1
- package/dist/utility/serialization/scene/water.js +11 -9
- package/dist/utility/serialization/scene/water.js.map +1 -1
- package/dist/utility/serialization/types.js +6 -0
- package/dist/utility/serialization/types.js.map +1 -0
- package/dist/utility/shprojector.js.map +1 -1
- package/dist/utility/textures/ggxlut.js.map +1 -1
- package/dist/utility/textures/gradientnoise.js.map +1 -1
- package/dist/utility/textures/randomnoise.js.map +1 -1
- package/dist/values.js +14 -14
- package/dist/values.js.map +1 -1
- package/package.json +80 -80
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { DRef, Vector4 } from '@zephyr3d/base';
|
|
2
|
+
import { SpriteBlockNode } from '../utility/blueprint/material/pbr.js';
|
|
3
|
+
import { MaterialBlueprintIR } from '../utility/blueprint/material/ir.js';
|
|
4
|
+
import { SpriteMaterial } from './sprite.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Sprite material driven by a blueprint graph.
|
|
8
|
+
*
|
|
9
|
+
* @remarks
|
|
10
|
+
* This material extends {@link SpriteMaterial} and uses a
|
|
11
|
+
* {@link MaterialBlueprintIR} fragment graph to compute the final
|
|
12
|
+
* sprite color. All fragment shading logic is defined in the
|
|
13
|
+
* blueprint instead of being hard-coded in the material.
|
|
14
|
+
*
|
|
15
|
+
* @public
|
|
16
|
+
*/ class SpriteBlueprintMaterial extends SpriteMaterial {
|
|
17
|
+
/** @internal */ _irFrag;
|
|
18
|
+
/** @internal */ _uniformValues;
|
|
19
|
+
/** @internal */ _uniformTextures;
|
|
20
|
+
/**
|
|
21
|
+
* Creates a new {@link SpriteBlueprintMaterial} instance.
|
|
22
|
+
*
|
|
23
|
+
* @param irFrag - Optional fragment blueprint IR. If omitted, a default
|
|
24
|
+
* IR containing a single {@link SpriteBlockNode} is created.
|
|
25
|
+
* @param uniformValues - Optional initial list of uniform value descriptors.
|
|
26
|
+
* @param uniformTextures - Optional initial list of texture uniform descriptors.
|
|
27
|
+
*/ constructor(irFrag, uniformValues, uniformTextures){
|
|
28
|
+
super();
|
|
29
|
+
this._irFrag = irFrag ?? new MaterialBlueprintIR({
|
|
30
|
+
nodeMap: {
|
|
31
|
+
'1': new SpriteBlockNode()
|
|
32
|
+
},
|
|
33
|
+
roots: [
|
|
34
|
+
1
|
|
35
|
+
],
|
|
36
|
+
order: [
|
|
37
|
+
1
|
|
38
|
+
],
|
|
39
|
+
graph: {
|
|
40
|
+
incoming: {},
|
|
41
|
+
outgoing: {}
|
|
42
|
+
}
|
|
43
|
+
}, '', {
|
|
44
|
+
nodes: [
|
|
45
|
+
{
|
|
46
|
+
id: 1,
|
|
47
|
+
title: '',
|
|
48
|
+
locked: true,
|
|
49
|
+
node: {
|
|
50
|
+
ClassName: 'SpriteBlockNode',
|
|
51
|
+
Object: ''
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
links: []
|
|
56
|
+
});
|
|
57
|
+
this._uniformValues = uniformValues ?? [];
|
|
58
|
+
this._uniformTextures = uniformTextures ?? [];
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Gets the fragment blueprint IR used to generate the fragment shader.
|
|
62
|
+
*/ get fragmentIR() {
|
|
63
|
+
return this._irFrag;
|
|
64
|
+
}
|
|
65
|
+
set fragmentIR(ir) {
|
|
66
|
+
if (ir && ir !== this._irFrag) {
|
|
67
|
+
this._irFrag = ir;
|
|
68
|
+
this.clearCache();
|
|
69
|
+
this.optionChanged(true);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Gets the list of uniform value descriptors used by the blueprint.
|
|
74
|
+
*/ get uniformValues() {
|
|
75
|
+
return this._uniformValues;
|
|
76
|
+
}
|
|
77
|
+
set uniformValues(val) {
|
|
78
|
+
this._uniformValues = (val ?? []).map((v)=>({
|
|
79
|
+
...v
|
|
80
|
+
}));
|
|
81
|
+
this.uniformChanged();
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Gets the list of texture uniform descriptors used by the blueprint.
|
|
85
|
+
*/ get uniformTextures() {
|
|
86
|
+
return this._uniformTextures;
|
|
87
|
+
}
|
|
88
|
+
set uniformTextures(val) {
|
|
89
|
+
val = val ?? [];
|
|
90
|
+
if (val !== this._uniformTextures) {
|
|
91
|
+
const newUniforms = val.map((v)=>({
|
|
92
|
+
finalTexture: new DRef(v.finalTexture.get()),
|
|
93
|
+
finalSampler: v.finalSampler,
|
|
94
|
+
name: v.name,
|
|
95
|
+
params: v.params?.clone() ?? Vector4.zero(),
|
|
96
|
+
texture: v.texture,
|
|
97
|
+
type: v.type,
|
|
98
|
+
sRGB: v.sRGB,
|
|
99
|
+
wrapS: v.wrapS,
|
|
100
|
+
wrapT: v.wrapT,
|
|
101
|
+
inFragmentShader: v.inFragmentShader,
|
|
102
|
+
inVertexShader: v.inVertexShader,
|
|
103
|
+
minFilter: v.minFilter,
|
|
104
|
+
magFilter: v.magFilter,
|
|
105
|
+
mipFilter: v.mipFilter
|
|
106
|
+
}));
|
|
107
|
+
for (const u of this._uniformTextures){
|
|
108
|
+
u.finalTexture.dispose();
|
|
109
|
+
}
|
|
110
|
+
this._uniformTextures = newUniforms;
|
|
111
|
+
this.uniformChanged();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Creates a deep copy of this blueprint material.
|
|
116
|
+
*
|
|
117
|
+
* @remarks
|
|
118
|
+
* The clone shares the same fragment IR reference and copies the
|
|
119
|
+
* current uniform descriptors, then calls {@link SpriteMaterial.copyFrom}
|
|
120
|
+
* to copy base-class state.
|
|
121
|
+
*
|
|
122
|
+
* @returns A new {@link SpriteBlueprintMaterial} instance.
|
|
123
|
+
*/ clone() {
|
|
124
|
+
const other = new SpriteBlueprintMaterial(this._irFrag, this._uniformValues, this._uniformTextures);
|
|
125
|
+
other.copyFrom(this);
|
|
126
|
+
return other;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Applies runtime uniform values and textures to the given bind group.
|
|
130
|
+
*
|
|
131
|
+
* @remarks
|
|
132
|
+
* - Calls the base implementation to bind sprite-related uniforms first.
|
|
133
|
+
* - If fragment color is needed for the current context, all blueprint
|
|
134
|
+
* uniform values and textures are then bound by name:
|
|
135
|
+
* - `uniformValues` via `bindGroup.setValue`.
|
|
136
|
+
* - `uniformTextures` via `bindGroup.setTexture`.
|
|
137
|
+
*
|
|
138
|
+
* @param bindGroup - The bind group to bind material resources to.
|
|
139
|
+
* @param ctx - The current draw context.
|
|
140
|
+
* @param pass - Index of the active render pass.
|
|
141
|
+
*/ applyUniformValues(bindGroup, ctx, pass) {
|
|
142
|
+
super.applyUniformValues(bindGroup, ctx, pass);
|
|
143
|
+
if (this.needFragmentColor(ctx)) {
|
|
144
|
+
for (const u of this._uniformValues){
|
|
145
|
+
bindGroup.setValue(u.name, u.finalValue);
|
|
146
|
+
}
|
|
147
|
+
for (const u of this._uniformTextures){
|
|
148
|
+
bindGroup.setTexture(u.name, u.finalTexture.get(), u.finalSampler);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Computes the fragment color by invoking the blueprint-generated function.
|
|
154
|
+
*
|
|
155
|
+
* @remarks
|
|
156
|
+
* - A helper function `zCalcSpriteColor(zWorldPos, zVertexUV)` is declared
|
|
157
|
+
* on the shader builder using the current fragment IR.
|
|
158
|
+
* - The blueprint IR is asked to create its node network via
|
|
159
|
+
* {@link MaterialBlueprintIR.create}, and the output named `"Color"`
|
|
160
|
+
* is used as the return value.
|
|
161
|
+
* - The resulting function is invoked with the current world position and
|
|
162
|
+
* UV coordinates for each fragment.
|
|
163
|
+
*
|
|
164
|
+
* @param scope - The current fragment shader function scope.
|
|
165
|
+
* @returns A shader expression representing the final fragment color.
|
|
166
|
+
*/ calcFragmentColor(scope) {
|
|
167
|
+
const pb = scope.$builder;
|
|
168
|
+
const that = this;
|
|
169
|
+
pb.func('zCalcSpriteColor', [
|
|
170
|
+
pb.vec3('zWorldPos'),
|
|
171
|
+
pb.vec2('zVertexUV')
|
|
172
|
+
], function() {
|
|
173
|
+
const outputs = that._irFrag.create(pb);
|
|
174
|
+
this.$return(that.getOutput(outputs, 'Color'));
|
|
175
|
+
});
|
|
176
|
+
return scope.zCalcSpriteColor(scope.$inputs.zWorldPos, scope.$inputs.zVertexUV);
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Creates a unique hash string used for program caching.
|
|
180
|
+
*
|
|
181
|
+
* @remarks
|
|
182
|
+
* The hash includes the base {@link SpriteMaterial} hash and the
|
|
183
|
+
* fragment IR hash, so that different blueprints will produce
|
|
184
|
+
* different shader programs.
|
|
185
|
+
*
|
|
186
|
+
* @returns A hash string that identifies this material configuration.
|
|
187
|
+
*/ _createHash() {
|
|
188
|
+
return `${super._createHash()}:${this._irFrag.hash}`;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Creates the GPU program for this material.
|
|
192
|
+
*
|
|
193
|
+
* @remarks
|
|
194
|
+
* This simply delegates to the base implementation and returns its result.
|
|
195
|
+
* Commented-out logging lines are available for debugging the generated
|
|
196
|
+
* vertex and fragment shader sources.
|
|
197
|
+
*
|
|
198
|
+
* @param ctx - The current draw context.
|
|
199
|
+
* @param pass - Index of the active material pass.
|
|
200
|
+
* @returns The created GPU program.
|
|
201
|
+
*/ createProgram(ctx, pass) {
|
|
202
|
+
const program = super.createProgram(ctx, pass);
|
|
203
|
+
//console.log(program.getShaderSource('vertex'));
|
|
204
|
+
//console.log(program.getShaderSource('fragment'));
|
|
205
|
+
return program;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Disposes resources associated with this material.
|
|
209
|
+
*
|
|
210
|
+
* @remarks
|
|
211
|
+
* - Calls the base `onDispose` to clean up inherited resources.
|
|
212
|
+
* - Disposes all `finalTexture` references from the blueprint texture
|
|
213
|
+
* uniform descriptors.
|
|
214
|
+
*
|
|
215
|
+
* This method is intended to be called by the engine's resource management
|
|
216
|
+
* system rather than directly from user code.
|
|
217
|
+
*/ onDispose() {
|
|
218
|
+
super.onDispose();
|
|
219
|
+
for (const u of this._uniformTextures){
|
|
220
|
+
u.finalTexture.dispose();
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Retrieves a named output expression from a blueprint output list.
|
|
225
|
+
*
|
|
226
|
+
* @param outputs - List of outputs generated by the blueprint graph.
|
|
227
|
+
* @param name - Name of the output to look for (e.g. `"Color"`).
|
|
228
|
+
* @returns The matching output expression, or `undefined` if not found.
|
|
229
|
+
*/ getOutput(outputs, name) {
|
|
230
|
+
return outputs.find((output)=>output.name === name)?.exp;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
export { SpriteBlueprintMaterial };
|
|
235
|
+
//# sourceMappingURL=spriteblueprint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spriteblueprint.js","sources":["../../src/material/spriteblueprint.ts"],"sourcesContent":["import { DRef, Vector4 } from '@zephyr3d/base';\r\nimport { type BluePrintUniformTexture, type BluePrintUniformValue } from '../utility/blueprint/material/ir';\r\nimport { SpriteBlockNode } from '../utility/blueprint/material/pbr';\r\nimport { MaterialBlueprintIR } from '../utility/blueprint/material/ir';\r\nimport { SpriteMaterial } from './sprite';\r\nimport type { BindGroup, PBInsideFunctionScope, PBShaderExp } from '@zephyr3d/device';\r\nimport type { DrawContext } from '../render';\r\n\r\n/**\r\n * Sprite material driven by a blueprint graph.\r\n *\r\n * @remarks\r\n * This material extends {@link SpriteMaterial} and uses a\r\n * {@link MaterialBlueprintIR} fragment graph to compute the final\r\n * sprite color. All fragment shading logic is defined in the\r\n * blueprint instead of being hard-coded in the material.\r\n *\r\n * @public\r\n */\r\nexport class SpriteBlueprintMaterial extends SpriteMaterial {\r\n /** @internal */\r\n private _irFrag: MaterialBlueprintIR;\r\n /** @internal */\r\n private _uniformValues: BluePrintUniformValue[];\r\n /** @internal */\r\n private _uniformTextures: BluePrintUniformTexture[];\r\n /**\r\n * Creates a new {@link SpriteBlueprintMaterial} instance.\r\n *\r\n * @param irFrag - Optional fragment blueprint IR. If omitted, a default\r\n * IR containing a single {@link SpriteBlockNode} is created.\r\n * @param uniformValues - Optional initial list of uniform value descriptors.\r\n * @param uniformTextures - Optional initial list of texture uniform descriptors.\r\n */\r\n constructor(\r\n irFrag?: MaterialBlueprintIR,\r\n uniformValues?: BluePrintUniformValue[],\r\n uniformTextures?: BluePrintUniformTexture[]\r\n ) {\r\n super();\r\n this._irFrag =\r\n irFrag ??\r\n new MaterialBlueprintIR(\r\n {\r\n nodeMap: { '1': new SpriteBlockNode() },\r\n roots: [1],\r\n order: [1],\r\n graph: { incoming: {}, outgoing: {} }\r\n },\r\n '',\r\n {\r\n nodes: [{ id: 1, title: '', locked: true, node: { ClassName: 'SpriteBlockNode', Object: '' } }],\r\n links: []\r\n }\r\n );\r\n this._uniformValues = uniformValues ?? [];\r\n this._uniformTextures = uniformTextures ?? [];\r\n }\r\n /**\r\n * Gets the fragment blueprint IR used to generate the fragment shader.\r\n */\r\n get fragmentIR() {\r\n return this._irFrag;\r\n }\r\n set fragmentIR(ir: MaterialBlueprintIR) {\r\n if (ir && ir !== this._irFrag) {\r\n this._irFrag = ir;\r\n this.clearCache();\r\n this.optionChanged(true);\r\n }\r\n }\r\n /**\r\n * Gets the list of uniform value descriptors used by the blueprint.\r\n */\r\n get uniformValues() {\r\n return this._uniformValues;\r\n }\r\n set uniformValues(val: BluePrintUniformValue[]) {\r\n this._uniformValues = (val ?? []).map((v) => ({ ...v }));\r\n this.uniformChanged();\r\n }\r\n /**\r\n * Gets the list of texture uniform descriptors used by the blueprint.\r\n */\r\n get uniformTextures() {\r\n return this._uniformTextures;\r\n }\r\n set uniformTextures(val: BluePrintUniformTexture[]) {\r\n val = val ?? [];\r\n if (val !== this._uniformTextures) {\r\n const newUniforms = val.map((v) => ({\r\n finalTexture: new DRef(v.finalTexture!.get()),\r\n finalSampler: v.finalSampler,\r\n name: v.name,\r\n params: v.params?.clone() ?? Vector4.zero(),\r\n texture: v.texture,\r\n type: v.type,\r\n sRGB: v.sRGB,\r\n wrapS: v.wrapS,\r\n wrapT: v.wrapT,\r\n inFragmentShader: v.inFragmentShader,\r\n inVertexShader: v.inVertexShader,\r\n minFilter: v.minFilter,\r\n magFilter: v.magFilter,\r\n mipFilter: v.mipFilter\r\n }));\r\n for (const u of this._uniformTextures) {\r\n u.finalTexture!.dispose();\r\n }\r\n this._uniformTextures = newUniforms;\r\n this.uniformChanged();\r\n }\r\n }\r\n /**\r\n * Creates a deep copy of this blueprint material.\r\n *\r\n * @remarks\r\n * The clone shares the same fragment IR reference and copies the\r\n * current uniform descriptors, then calls {@link SpriteMaterial.copyFrom}\r\n * to copy base-class state.\r\n *\r\n * @returns A new {@link SpriteBlueprintMaterial} instance.\r\n */\r\n clone() {\r\n const other = new SpriteBlueprintMaterial(this._irFrag, this._uniformValues, this._uniformTextures);\r\n other.copyFrom(this);\r\n return other;\r\n }\r\n /**\r\n * Applies runtime uniform values and textures to the given bind group.\r\n *\r\n * @remarks\r\n * - Calls the base implementation to bind sprite-related uniforms first.\r\n * - If fragment color is needed for the current context, all blueprint\r\n * uniform values and textures are then bound by name:\r\n * - `uniformValues` via `bindGroup.setValue`.\r\n * - `uniformTextures` via `bindGroup.setTexture`.\r\n *\r\n * @param bindGroup - The bind group to bind material resources to.\r\n * @param ctx - The current draw context.\r\n * @param pass - Index of the active render pass.\r\n */\r\n applyUniformValues(bindGroup: BindGroup, ctx: DrawContext, pass: number) {\r\n super.applyUniformValues(bindGroup, ctx, pass);\r\n if (this.needFragmentColor(ctx)) {\r\n for (const u of this._uniformValues) {\r\n bindGroup.setValue(u.name, u.finalValue!);\r\n }\r\n for (const u of this._uniformTextures) {\r\n bindGroup.setTexture(u.name, u.finalTexture!.get()!, u.finalSampler);\r\n }\r\n }\r\n }\r\n /**\r\n * Computes the fragment color by invoking the blueprint-generated function.\r\n *\r\n * @remarks\r\n * - A helper function `zCalcSpriteColor(zWorldPos, zVertexUV)` is declared\r\n * on the shader builder using the current fragment IR.\r\n * - The blueprint IR is asked to create its node network via\r\n * {@link MaterialBlueprintIR.create}, and the output named `\"Color\"`\r\n * is used as the return value.\r\n * - The resulting function is invoked with the current world position and\r\n * UV coordinates for each fragment.\r\n *\r\n * @param scope - The current fragment shader function scope.\r\n * @returns A shader expression representing the final fragment color.\r\n */\r\n protected calcFragmentColor(scope: PBInsideFunctionScope) {\r\n const pb = scope.$builder;\r\n const that = this;\r\n pb.func('zCalcSpriteColor', [pb.vec3('zWorldPos'), pb.vec2('zVertexUV')], function () {\r\n const outputs = that._irFrag.create(pb)!;\r\n this.$return(that.getOutput(outputs, 'Color') as PBShaderExp);\r\n });\r\n return scope.zCalcSpriteColor(scope.$inputs.zWorldPos, scope.$inputs.zVertexUV) as PBShaderExp;\r\n }\r\n /**\r\n * Creates a unique hash string used for program caching.\r\n *\r\n * @remarks\r\n * The hash includes the base {@link SpriteMaterial} hash and the\r\n * fragment IR hash, so that different blueprints will produce\r\n * different shader programs.\r\n *\r\n * @returns A hash string that identifies this material configuration.\r\n */\r\n protected _createHash() {\r\n return `${super._createHash()}:${this._irFrag.hash}`;\r\n }\r\n /**\r\n * Creates the GPU program for this material.\r\n *\r\n * @remarks\r\n * This simply delegates to the base implementation and returns its result.\r\n * Commented-out logging lines are available for debugging the generated\r\n * vertex and fragment shader sources.\r\n *\r\n * @param ctx - The current draw context.\r\n * @param pass - Index of the active material pass.\r\n * @returns The created GPU program.\r\n */\r\n protected createProgram(ctx: DrawContext, pass: number) {\r\n const program = super.createProgram(ctx, pass);\r\n //console.log(program.getShaderSource('vertex'));\r\n //console.log(program.getShaderSource('fragment'));\r\n return program;\r\n }\r\n /**\r\n * Disposes resources associated with this material.\r\n *\r\n * @remarks\r\n * - Calls the base `onDispose` to clean up inherited resources.\r\n * - Disposes all `finalTexture` references from the blueprint texture\r\n * uniform descriptors.\r\n *\r\n * This method is intended to be called by the engine's resource management\r\n * system rather than directly from user code.\r\n */\r\n protected onDispose() {\r\n super.onDispose();\r\n for (const u of this._uniformTextures) {\r\n u.finalTexture!.dispose();\r\n }\r\n }\r\n /**\r\n * Retrieves a named output expression from a blueprint output list.\r\n *\r\n * @param outputs - List of outputs generated by the blueprint graph.\r\n * @param name - Name of the output to look for (e.g. `\"Color\"`).\r\n * @returns The matching output expression, or `undefined` if not found.\r\n */\r\n private getOutput(\r\n outputs: {\r\n name: string;\r\n exp: number | boolean | PBShaderExp;\r\n }[],\r\n name: string\r\n ) {\r\n return outputs.find((output) => output.name === name)?.exp;\r\n }\r\n}\r\n"],"names":["SpriteBlueprintMaterial","SpriteMaterial","irFrag","uniformValues","uniformTextures","_irFrag","MaterialBlueprintIR","nodeMap","SpriteBlockNode","roots","order","graph","incoming","outgoing","nodes","id","title","locked","node","ClassName","Object","links","_uniformValues","_uniformTextures","fragmentIR","ir","clearCache","optionChanged","val","map","v","uniformChanged","newUniforms","finalTexture","DRef","get","finalSampler","name","params","clone","Vector4","zero","texture","type","sRGB","wrapS","wrapT","inFragmentShader","inVertexShader","minFilter","magFilter","mipFilter","u","dispose","other","copyFrom","applyUniformValues","bindGroup","ctx","pass","needFragmentColor","setValue","finalValue","setTexture","calcFragmentColor","scope","pb","$builder","that","func","vec3","vec2","outputs","create","$return","getOutput","zCalcSpriteColor","$inputs","zWorldPos","zVertexUV","_createHash","hash","createProgram","program","onDispose","find","output","exp"],"mappings":"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"}
|