@zephyr3d/scene 0.9.4 → 0.9.6
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/animationmask.js +224 -0
- package/dist/animation/animationmask.js.map +1 -0
- package/dist/animation/animationset.js +268 -67
- package/dist/animation/animationset.js.map +1 -1
- package/dist/animation/animationtrack.js.map +1 -1
- package/dist/animation/eulerrotationtrack.js +3 -0
- package/dist/animation/eulerrotationtrack.js.map +1 -1
- package/dist/animation/fixed_geometry_cache_track.js +7 -0
- package/dist/animation/fixed_geometry_cache_track.js.map +1 -1
- package/dist/animation/ik_modifier.js.map +1 -1
- package/dist/animation/joint_dynamics/collision.js +6 -4
- package/dist/animation/joint_dynamics/collision.js.map +1 -1
- package/dist/animation/joint_dynamics/controller.js +390 -43
- package/dist/animation/joint_dynamics/controller.js.map +1 -1
- package/dist/animation/joint_dynamics/joint_dynamics_system.js +62 -3
- package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
- package/dist/animation/joint_dynamics/solver.js +4 -3
- package/dist/animation/joint_dynamics/solver.js.map +1 -1
- package/dist/animation/joint_dynamics/types.js.map +1 -1
- package/dist/animation/joint_dynamics_modifier.js +2 -0
- package/dist/animation/joint_dynamics_modifier.js.map +1 -1
- package/dist/animation/morphtarget.js +3 -72
- package/dist/animation/morphtarget.js.map +1 -1
- package/dist/animation/morphtrack.js +3 -0
- package/dist/animation/morphtrack.js.map +1 -1
- package/dist/animation/pca_geometry_cache_track.js +3 -0
- package/dist/animation/pca_geometry_cache_track.js.map +1 -1
- package/dist/animation/proptrack.js +3 -0
- package/dist/animation/proptrack.js.map +1 -1
- package/dist/animation/rotationtrack.js +3 -0
- package/dist/animation/rotationtrack.js.map +1 -1
- package/dist/animation/scaletrack.js +3 -0
- package/dist/animation/scaletrack.js.map +1 -1
- package/dist/animation/skeleton.js +254 -79
- package/dist/animation/skeleton.js.map +1 -1
- package/dist/animation/skeleton_modifier.js.map +1 -1
- package/dist/animation/spring_modifier.js.map +1 -1
- package/dist/animation/translationtrack.js +3 -0
- package/dist/animation/translationtrack.js.map +1 -1
- package/dist/app/engine.js +171 -107
- package/dist/app/engine.js.map +1 -1
- package/dist/app/scriptregistry.js +251 -80
- package/dist/app/scriptregistry.js.map +1 -1
- package/dist/asset/assetmanager.js +344 -365
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/loaders/loader.js +1 -6
- package/dist/asset/loaders/loader.js.map +1 -1
- package/dist/asset/loaders/zabc/zabc_loader.js.map +1 -1
- package/dist/asset/model.js +1000 -131
- package/dist/asset/model.js.map +1 -1
- package/dist/avatar/wardrobe.js +474 -0
- package/dist/avatar/wardrobe.js.map +1 -0
- package/dist/index.d.ts +1126 -199
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +6 -3
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/mixins/pbr/common.js +72 -15
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/msdf_text.js +3 -3
- package/dist/material/msdf_text.js.map +1 -1
- package/dist/material/msdf_text_sprite.js +4 -4
- package/dist/material/msdf_text_sprite.js.map +1 -1
- package/dist/material/pbrblueprint.js +102 -102
- package/dist/material/pbrblueprint.js.map +1 -1
- package/dist/render/envlight.js +54 -1
- package/dist/render/envlight.js.map +1 -1
- package/dist/render/sky.js +9 -0
- package/dist/render/sky.js.map +1 -1
- package/dist/scene/batchgroup.js +11 -13
- package/dist/scene/batchgroup.js.map +1 -1
- package/dist/scene/environment.js +15 -2
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/mesh.js +79 -16
- package/dist/scene/mesh.js.map +1 -1
- package/dist/scene/scene.js +1 -0
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/scene_node.js +203 -2
- package/dist/scene/scene_node.js.map +1 -1
- package/dist/text/font/cff_font.js +890 -0
- package/dist/text/font/cff_font.js.map +1 -0
- package/dist/text/font/font_asset.js +17 -3
- package/dist/text/font/font_asset.js.map +1 -1
- package/dist/text/msdf/generator.js.map +1 -1
- package/dist/text/msdf/shape.js +4 -1
- package/dist/text/msdf/shape.js.map +1 -1
- package/dist/text/runtime/msdf_text_atlas_manager.js +4 -1
- package/dist/text/runtime/msdf_text_atlas_manager.js.map +1 -1
- package/dist/utility/blueprint/material/inputs.js +1157 -1154
- package/dist/utility/blueprint/material/inputs.js.map +1 -1
- package/dist/utility/bounding_volume.js.map +1 -1
- package/dist/utility/pmrem.js +34 -8
- package/dist/utility/pmrem.js.map +1 -1
- package/dist/utility/serialization/manager.js +22 -9
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +700 -7
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/mesh.js +64 -4
- package/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +187 -8
- package/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/utility/serialization/types.js.map +1 -1
- package/dist/utility/textures/sheenlut.js +138 -0
- package/dist/utility/textures/sheenlut.js.map +1 -0
- package/package.json +2 -2
- package/dist/animation/ik/ik_chain_builder.js +0 -68
- package/dist/animation/ik/ik_chain_builder.js.map +0 -1
- package/dist/animation/ik/ik_pole_constraint.js +0 -123
- package/dist/animation/ik/ik_pole_constraint.js.map +0 -1
- package/dist/animation/ik/ik_track.js +0 -96
- package/dist/animation/ik/ik_track.js.map +0 -1
- package/dist/animation/ik_postprocessor.js +0 -71
- package/dist/animation/ik_postprocessor.js.map +0 -1
- package/dist/animation/joint_dynamics/math.js +0 -16
- package/dist/animation/joint_dynamics/math.js.map +0 -1
- package/dist/animation/manual_transform_processor.js +0 -156
- package/dist/animation/manual_transform_processor.js.map +0 -1
- package/dist/animation/skeleton_postprocessor.js +0 -50
- package/dist/animation/skeleton_postprocessor.js.map +0 -1
- package/dist/animation/spring2/collision.js +0 -469
- package/dist/animation/spring2/collision.js.map +0 -1
- package/dist/animation/spring2/constraints.js +0 -329
- package/dist/animation/spring2/constraints.js.map +0 -1
- package/dist/animation/spring2/controller.js +0 -434
- package/dist/animation/spring2/controller.js.map +0 -1
- package/dist/animation/spring2/math.js +0 -16
- package/dist/animation/spring2/math.js.map +0 -1
- package/dist/animation/spring2/solver.js +0 -624
- package/dist/animation/spring2/solver.js.map +0 -1
- package/dist/animation/spring2/spring_system.js +0 -118
- package/dist/animation/spring2/spring_system.js.map +0 -1
- package/dist/animation/spring2/types.js +0 -19
- package/dist/animation/spring2/types.js.map +0 -1
- package/dist/animation/spring_postprocessor.js +0 -54
- package/dist/animation/spring_postprocessor.js.map +0 -1
- package/dist/asset/loaders/gltf/gltf_loader.js +0 -1273
- package/dist/asset/loaders/gltf/gltf_loader.js.map +0 -1
- package/dist/asset/loaders/gltf/helpers.js +0 -331
- package/dist/asset/loaders/gltf/helpers.js.map +0 -1
- package/dist/material/sprite3d.js +0 -301
- package/dist/material/sprite3d.js.map +0 -1
- package/dist/material/sprite3d_std.js +0 -116
- package/dist/material/sprite3d_std.js.map +0 -1
- package/dist/material/sprite3dblueprint.js +0 -235
- package/dist/material/sprite3dblueprint.js.map +0 -1
- package/dist/material/sprite_sdf.js +0 -106
- package/dist/material/sprite_sdf.js.map +0 -1
- package/dist/material/terrainmaterial.js +0 -368
- package/dist/material/terrainmaterial.js.map +0 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js +0 -38
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js.map +0 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js +0 -10
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js.map +0 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js +0 -127
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js.map +0 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js +0 -263
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js.map +0 -1
- package/dist/render/deferredlightpass.js +0 -510
- package/dist/render/deferredlightpass.js.map +0 -1
- package/dist/render/deferredshadowlightpass.js +0 -428
- package/dist/render/deferredshadowlightpass.js.map +0 -1
- package/dist/render/gbufferpass.js +0 -50
- package/dist/render/gbufferpass.js.map +0 -1
- package/dist/scene/sdftextsprite.js +0 -322
- package/dist/scene/sdftextsprite.js.map +0 -1
- package/dist/scene/sprite3d.js +0 -18
- package/dist/scene/sprite3d.js.map +0 -1
- package/dist/scene/terrain/grass.js +0 -280
- package/dist/scene/terrain/grass.js.map +0 -1
- package/dist/scene/terrain/heightfield.js +0 -475
- package/dist/scene/terrain/heightfield.js.map +0 -1
- package/dist/scene/terrain/patch.js +0 -532
- package/dist/scene/terrain/patch.js.map +0 -1
- package/dist/scene/terrain/quadtree.js +0 -461
- package/dist/scene/terrain/quadtree.js.map +0 -1
- package/dist/scene/terrain/terrain.js +0 -231
- package/dist/scene/terrain/terrain.js.map +0 -1
- package/dist/src/animation/animation.js +0 -127
- package/dist/src/animation/animation.js.map +0 -1
- package/dist/src/animation/animationset.js +0 -255
- package/dist/src/animation/animationset.js.map +0 -1
- package/dist/src/animation/animationtrack.js +0 -34
- package/dist/src/animation/animationtrack.js.map +0 -1
- package/dist/src/animation/eulerrotationtrack.js +0 -52
- package/dist/src/animation/eulerrotationtrack.js.map +0 -1
- package/dist/src/animation/morphtarget.js +0 -93
- package/dist/src/animation/morphtarget.js.map +0 -1
- package/dist/src/animation/morphtrack.js +0 -70
- package/dist/src/animation/morphtrack.js.map +0 -1
- package/dist/src/animation/proptrack.js +0 -161
- package/dist/src/animation/proptrack.js.map +0 -1
- package/dist/src/animation/rotationtrack.js +0 -51
- package/dist/src/animation/rotationtrack.js.map +0 -1
- package/dist/src/animation/scaletrack.js +0 -50
- package/dist/src/animation/scaletrack.js.map +0 -1
- package/dist/src/animation/skeleton.js +0 -204
- package/dist/src/animation/skeleton.js.map +0 -1
- package/dist/src/animation/translationtrack.js +0 -50
- package/dist/src/animation/translationtrack.js.map +0 -1
- package/dist/src/app/app.js +0 -129
- package/dist/src/app/app.js.map +0 -1
- package/dist/src/app/inputmgr.js +0 -267
- package/dist/src/app/inputmgr.js.map +0 -1
- package/dist/src/asset/assetmanager.js +0 -404
- package/dist/src/asset/assetmanager.js.map +0 -1
- package/dist/src/asset/builtin.js +0 -337
- package/dist/src/asset/builtin.js.map +0 -1
- package/dist/src/asset/loaders/dds/dds.js +0 -470
- package/dist/src/asset/loaders/dds/dds.js.map +0 -1
- package/dist/src/asset/loaders/dds/dds_loader.js +0 -28
- package/dist/src/asset/loaders/dds/dds_loader.js.map +0 -1
- package/dist/src/asset/loaders/gltf/gltf_loader.js +0 -1265
- package/dist/src/asset/loaders/gltf/gltf_loader.js.map +0 -1
- package/dist/src/asset/loaders/gltf/helpers.js +0 -327
- package/dist/src/asset/loaders/gltf/helpers.js.map +0 -1
- package/dist/src/asset/loaders/hdr/hdr.js +0 -180
- package/dist/src/asset/loaders/hdr/hdr.js.map +0 -1
- package/dist/src/asset/loaders/image/tga_Loader.js +0 -116
- package/dist/src/asset/loaders/image/tga_Loader.js.map +0 -1
- package/dist/src/asset/loaders/image/webimage_loader.js +0 -63
- package/dist/src/asset/loaders/image/webimage_loader.js.map +0 -1
- package/dist/src/asset/loaders/loader.js +0 -45
- package/dist/src/asset/loaders/loader.js.map +0 -1
- package/dist/src/asset/model.js +0 -414
- package/dist/src/asset/model.js.map +0 -1
- package/dist/src/blitter/bilateralblur.js +0 -221
- package/dist/src/blitter/bilateralblur.js.map +0 -1
- package/dist/src/blitter/blitter.js +0 -390
- package/dist/src/blitter/blitter.js.map +0 -1
- package/dist/src/blitter/box.js +0 -118
- package/dist/src/blitter/box.js.map +0 -1
- package/dist/src/blitter/copy.js +0 -22
- package/dist/src/blitter/copy.js.map +0 -1
- package/dist/src/blitter/gaussianblur.js +0 -228
- package/dist/src/blitter/gaussianblur.js.map +0 -1
- package/dist/src/camera/base.js +0 -92
- package/dist/src/camera/base.js.map +0 -1
- package/dist/src/camera/camera.js +0 -1005
- package/dist/src/camera/camera.js.map +0 -1
- package/dist/src/camera/fps.js +0 -238
- package/dist/src/camera/fps.js.map +0 -1
- package/dist/src/camera/orbit.js +0 -245
- package/dist/src/camera/orbit.js.map +0 -1
- package/dist/src/camera/orthocamera.js +0 -167
- package/dist/src/camera/orthocamera.js.map +0 -1
- package/dist/src/camera/perspectivecamera.js +0 -141
- package/dist/src/camera/perspectivecamera.js.map +0 -1
- package/dist/src/index.js +0 -120
- package/dist/src/index.js.map +0 -1
- package/dist/src/material/blinn.js +0 -81
- package/dist/src/material/blinn.js.map +0 -1
- package/dist/src/material/grassmaterial.js +0 -113
- package/dist/src/material/grassmaterial.js.map +0 -1
- package/dist/src/material/lambert.js +0 -92
- package/dist/src/material/lambert.js.map +0 -1
- package/dist/src/material/material.js +0 -301
- package/dist/src/material/material.js.map +0 -1
- package/dist/src/material/meshmaterial.js +0 -704
- package/dist/src/material/meshmaterial.js.map +0 -1
- package/dist/src/material/mixins/albedocolor.js +0 -76
- package/dist/src/material/mixins/albedocolor.js.map +0 -1
- package/dist/src/material/mixins/foliage.js +0 -47
- package/dist/src/material/mixins/foliage.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/blinnphong.js +0 -112
- package/dist/src/material/mixins/lightmodel/blinnphong.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/lambert.js +0 -58
- package/dist/src/material/mixins/lightmodel/lambert.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js +0 -178
- package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js +0 -139
- package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js.map +0 -1
- package/dist/src/material/mixins/lit.js +0 -476
- package/dist/src/material/mixins/lit.js.map +0 -1
- package/dist/src/material/mixins/pbr/common.js +0 -918
- package/dist/src/material/mixins/pbr/common.js.map +0 -1
- package/dist/src/material/mixins/texture.js +0 -172
- package/dist/src/material/mixins/texture.js.map +0 -1
- package/dist/src/material/mixins/vertexcolor.js +0 -56
- package/dist/src/material/mixins/vertexcolor.js.map +0 -1
- package/dist/src/material/particle.js +0 -178
- package/dist/src/material/particle.js.map +0 -1
- package/dist/src/material/pbrmr.js +0 -97
- package/dist/src/material/pbrmr.js.map +0 -1
- package/dist/src/material/pbrsg.js +0 -97
- package/dist/src/material/pbrsg.js.map +0 -1
- package/dist/src/material/shader/helper.js +0 -1209
- package/dist/src/material/shader/helper.js.map +0 -1
- package/dist/src/material/terrain-cm.js +0 -606
- package/dist/src/material/terrain-cm.js.map +0 -1
- package/dist/src/material/terrainmaterial.js +0 -375
- package/dist/src/material/terrainmaterial.js.map +0 -1
- package/dist/src/material/unlit.js +0 -41
- package/dist/src/material/unlit.js.map +0 -1
- package/dist/src/material/water.js +0 -417
- package/dist/src/material/water.js.map +0 -1
- package/dist/src/posteffect/bloom.js +0 -361
- package/dist/src/posteffect/bloom.js.map +0 -1
- package/dist/src/posteffect/compositor.js +0 -226
- package/dist/src/posteffect/compositor.js.map +0 -1
- package/dist/src/posteffect/fxaa.js +0 -273
- package/dist/src/posteffect/fxaa.js.map +0 -1
- package/dist/src/posteffect/grayscale.js +0 -69
- package/dist/src/posteffect/grayscale.js.map +0 -1
- package/dist/src/posteffect/motionblur.js +0 -96
- package/dist/src/posteffect/motionblur.js.map +0 -1
- package/dist/src/posteffect/posteffect.js +0 -126
- package/dist/src/posteffect/posteffect.js.map +0 -1
- package/dist/src/posteffect/sao.js +0 -324
- package/dist/src/posteffect/sao.js.map +0 -1
- package/dist/src/posteffect/ssr.js +0 -489
- package/dist/src/posteffect/ssr.js.map +0 -1
- package/dist/src/posteffect/taa.js +0 -172
- package/dist/src/posteffect/taa.js.map +0 -1
- package/dist/src/posteffect/tonemap.js +0 -94
- package/dist/src/posteffect/tonemap.js.map +0 -1
- package/dist/src/render/abuffer_oit.js +0 -361
- package/dist/src/render/abuffer_oit.js.map +0 -1
- package/dist/src/render/clipmap.js +0 -851
- package/dist/src/render/clipmap.js.map +0 -1
- package/dist/src/render/cluster_light.js +0 -333
- package/dist/src/render/cluster_light.js.map +0 -1
- package/dist/src/render/cull_visitor.js +0 -187
- package/dist/src/render/cull_visitor.js.map +0 -1
- package/dist/src/render/depthpass.js +0 -68
- package/dist/src/render/depthpass.js.map +0 -1
- package/dist/src/render/drawable_mixin.js +0 -227
- package/dist/src/render/drawable_mixin.js.map +0 -1
- package/dist/src/render/envlight.js +0 -463
- package/dist/src/render/envlight.js.map +0 -1
- package/dist/src/render/fbm_wavegenerator.js +0 -251
- package/dist/src/render/fbm_wavegenerator.js.map +0 -1
- package/dist/src/render/fft_wavegenerator.js +0 -1006
- package/dist/src/render/fft_wavegenerator.js.map +0 -1
- package/dist/src/render/fullscreenquad.js +0 -38
- package/dist/src/render/fullscreenquad.js.map +0 -1
- package/dist/src/render/gerstner_wavegenerator.js +0 -314
- package/dist/src/render/gerstner_wavegenerator.js.map +0 -1
- package/dist/src/render/globalbindgroup_allocator.js +0 -60
- package/dist/src/render/globalbindgroup_allocator.js.map +0 -1
- package/dist/src/render/hzb.js +0 -273
- package/dist/src/render/hzb.js.map +0 -1
- package/dist/src/render/lightpass.js +0 -172
- package/dist/src/render/lightpass.js.map +0 -1
- package/dist/src/render/objectcolorpass.js +0 -51
- package/dist/src/render/objectcolorpass.js.map +0 -1
- package/dist/src/render/primitive.js +0 -364
- package/dist/src/render/primitive.js.map +0 -1
- package/dist/src/render/render_queue.js +0 -467
- package/dist/src/render/render_queue.js.map +0 -1
- package/dist/src/render/renderbundle_wrapper.js +0 -152
- package/dist/src/render/renderbundle_wrapper.js.map +0 -1
- package/dist/src/render/renderer.js +0 -455
- package/dist/src/render/renderer.js.map +0 -1
- package/dist/src/render/renderpass.js +0 -200
- package/dist/src/render/renderpass.js.map +0 -1
- package/dist/src/render/shadowmap_pass.js +0 -56
- package/dist/src/render/shadowmap_pass.js.map +0 -1
- package/dist/src/render/sky.js +0 -1103
- package/dist/src/render/sky.js.map +0 -1
- package/dist/src/render/weightedblended_oit.js +0 -168
- package/dist/src/render/weightedblended_oit.js.map +0 -1
- package/dist/src/scene/batchgroup.js +0 -162
- package/dist/src/scene/batchgroup.js.map +0 -1
- package/dist/src/scene/environment.js +0 -209
- package/dist/src/scene/environment.js.map +0 -1
- package/dist/src/scene/graph_node.js +0 -72
- package/dist/src/scene/graph_node.js.map +0 -1
- package/dist/src/scene/light.js +0 -416
- package/dist/src/scene/light.js.map +0 -1
- package/dist/src/scene/mesh.js +0 -341
- package/dist/src/scene/mesh.js.map +0 -1
- package/dist/src/scene/octree.js +0 -649
- package/dist/src/scene/octree.js.map +0 -1
- package/dist/src/scene/particlesys.js +0 -738
- package/dist/src/scene/particlesys.js.map +0 -1
- package/dist/src/scene/raycast_visitor.js +0 -103
- package/dist/src/scene/raycast_visitor.js.map +0 -1
- package/dist/src/scene/scene.js +0 -284
- package/dist/src/scene/scene.js.map +0 -1
- package/dist/src/scene/scene_node.js +0 -732
- package/dist/src/scene/scene_node.js.map +0 -1
- package/dist/src/scene/terrain/grass.js +0 -278
- package/dist/src/scene/terrain/grass.js.map +0 -1
- package/dist/src/scene/terrain/heightfield.js +0 -475
- package/dist/src/scene/terrain/heightfield.js.map +0 -1
- package/dist/src/scene/terrain/patch.js +0 -530
- package/dist/src/scene/terrain/patch.js.map +0 -1
- package/dist/src/scene/terrain/quadtree.js +0 -461
- package/dist/src/scene/terrain/quadtree.js.map +0 -1
- package/dist/src/scene/terrain/terrain.js +0 -246
- package/dist/src/scene/terrain/terrain.js.map +0 -1
- package/dist/src/scene/terrain-cm/grass.js +0 -594
- package/dist/src/scene/terrain-cm/grass.js.map +0 -1
- package/dist/src/scene/terrain-cm/grassmaterial.js +0 -159
- package/dist/src/scene/terrain-cm/grassmaterial.js.map +0 -1
- package/dist/src/scene/terrain-cm/terrain-cm.js +0 -538
- package/dist/src/scene/terrain-cm/terrain-cm.js.map +0 -1
- package/dist/src/scene/water.js +0 -374
- package/dist/src/scene/water.js.map +0 -1
- package/dist/src/shaders/atmosphere.js +0 -957
- package/dist/src/shaders/atmosphere.js.map +0 -1
- package/dist/src/shaders/fog.js +0 -112
- package/dist/src/shaders/fog.js.map +0 -1
- package/dist/src/shaders/misc.js +0 -266
- package/dist/src/shaders/misc.js.map +0 -1
- package/dist/src/shaders/noise.js +0 -222
- package/dist/src/shaders/noise.js.map +0 -1
- package/dist/src/shaders/pbr.js +0 -51
- package/dist/src/shaders/pbr.js.map +0 -1
- package/dist/src/shaders/shadow.js +0 -636
- package/dist/src/shaders/shadow.js.map +0 -1
- package/dist/src/shaders/ssr.js +0 -490
- package/dist/src/shaders/ssr.js.map +0 -1
- package/dist/src/shaders/temporal.js +0 -215
- package/dist/src/shaders/temporal.js.map +0 -1
- package/dist/src/shaders/water.js +0 -756
- package/dist/src/shaders/water.js.map +0 -1
- package/dist/src/shadow/esm.js +0 -237
- package/dist/src/shadow/esm.js.map +0 -1
- package/dist/src/shadow/pcf_opt.js +0 -181
- package/dist/src/shadow/pcf_opt.js.map +0 -1
- package/dist/src/shadow/pcf_pd.js +0 -189
- package/dist/src/shadow/pcf_pd.js.map +0 -1
- package/dist/src/shadow/shader.js +0 -37
- package/dist/src/shadow/shader.js.map +0 -1
- package/dist/src/shadow/shadow_impl.js +0 -15
- package/dist/src/shadow/shadow_impl.js.map +0 -1
- package/dist/src/shadow/shadowmapper.js +0 -790
- package/dist/src/shadow/shadowmapper.js.map +0 -1
- package/dist/src/shadow/ssm.js +0 -159
- package/dist/src/shadow/ssm.js.map +0 -1
- package/dist/src/shadow/vsm.js +0 -297
- package/dist/src/shadow/vsm.js.map +0 -1
- package/dist/src/shapes/box.js +0 -386
- package/dist/src/shapes/box.js.map +0 -1
- package/dist/src/shapes/cylinder.js +0 -125
- package/dist/src/shapes/cylinder.js.map +0 -1
- package/dist/src/shapes/plane.js +0 -88
- package/dist/src/shapes/plane.js.map +0 -1
- package/dist/src/shapes/shape.js +0 -87
- package/dist/src/shapes/shape.js.map +0 -1
- package/dist/src/shapes/sphere.js +0 -114
- package/dist/src/shapes/sphere.js.map +0 -1
- package/dist/src/shapes/tetrahedron.js +0 -188
- package/dist/src/shapes/tetrahedron.js.map +0 -1
- package/dist/src/shapes/torus.js +0 -111
- package/dist/src/shapes/torus.js.map +0 -1
- package/dist/src/utility/aabbtree.js +0 -400
- package/dist/src/utility/aabbtree.js.map +0 -1
- package/dist/src/utility/bounding_volume.js +0 -29
- package/dist/src/utility/bounding_volume.js.map +0 -1
- package/dist/src/utility/debug.js +0 -28
- package/dist/src/utility/debug.js.map +0 -1
- package/dist/src/utility/draco/decoder.js +0 -116
- package/dist/src/utility/draco/decoder.js.map +0 -1
- package/dist/src/utility/misc.js +0 -105
- package/dist/src/utility/misc.js.map +0 -1
- package/dist/src/utility/panorama.js +0 -163
- package/dist/src/utility/panorama.js.map +0 -1
- package/dist/src/utility/pmrem.js +0 -354
- package/dist/src/utility/pmrem.js.map +0 -1
- package/dist/src/utility/rendermipmap.js +0 -115
- package/dist/src/utility/rendermipmap.js.map +0 -1
- package/dist/src/utility/serialization/json.js +0 -402
- package/dist/src/utility/serialization/json.js.map +0 -1
- package/dist/src/utility/serialization/manager.js +0 -623
- package/dist/src/utility/serialization/manager.js.map +0 -1
- package/dist/src/utility/serialization/scene/animation.js +0 -248
- package/dist/src/utility/serialization/scene/animation.js.map +0 -1
- package/dist/src/utility/serialization/scene/batch.js +0 -59
- package/dist/src/utility/serialization/scene/batch.js.map +0 -1
- package/dist/src/utility/serialization/scene/camera.js +0 -790
- package/dist/src/utility/serialization/scene/camera.js.map +0 -1
- package/dist/src/utility/serialization/scene/common.js +0 -222
- package/dist/src/utility/serialization/scene/common.js.map +0 -1
- package/dist/src/utility/serialization/scene/light.js +0 -575
- package/dist/src/utility/serialization/scene/light.js.map +0 -1
- package/dist/src/utility/serialization/scene/material.js +0 -1111
- package/dist/src/utility/serialization/scene/material.js.map +0 -1
- package/dist/src/utility/serialization/scene/mesh.js +0 -148
- package/dist/src/utility/serialization/scene/mesh.js.map +0 -1
- package/dist/src/utility/serialization/scene/misc.js +0 -39
- package/dist/src/utility/serialization/scene/misc.js.map +0 -1
- package/dist/src/utility/serialization/scene/node.js +0 -451
- package/dist/src/utility/serialization/scene/node.js.map +0 -1
- package/dist/src/utility/serialization/scene/particle.js +0 -425
- package/dist/src/utility/serialization/scene/particle.js.map +0 -1
- package/dist/src/utility/serialization/scene/primitive.js +0 -692
- package/dist/src/utility/serialization/scene/primitive.js.map +0 -1
- package/dist/src/utility/serialization/scene/scene.js +0 -704
- package/dist/src/utility/serialization/scene/scene.js.map +0 -1
- package/dist/src/utility/serialization/scene/terrain.js +0 -488
- package/dist/src/utility/serialization/scene/terrain.js.map +0 -1
- package/dist/src/utility/serialization/scene/water.js +0 -465
- package/dist/src/utility/serialization/scene/water.js.map +0 -1
- package/dist/src/utility/shprojector.js +0 -297
- package/dist/src/utility/shprojector.js.map +0 -1
- package/dist/src/utility/textures/ggxlut.js +0 -213
- package/dist/src/utility/textures/ggxlut.js.map +0 -1
- package/dist/src/utility/textures/gradientnoise.js +0 -62
- package/dist/src/utility/textures/gradientnoise.js.map +0 -1
- package/dist/src/utility/textures/randomnoise.js +0 -41
- package/dist/src/utility/textures/randomnoise.js.map +0 -1
- package/dist/src/values.js +0 -162
- package/dist/src/values.js.map +0 -1
- package/dist/utility/blueprint/material/common.js +0 -7
- package/dist/utility/blueprint/material/common.js.map +0 -1
- package/dist/utility/serialization/blueprint/constants.js +0 -255
- package/dist/utility/serialization/blueprint/constants.js.map +0 -1
- package/dist/utility/serialization/blueprint/material/constants.js +0 -203
- package/dist/utility/serialization/blueprint/material/constants.js.map +0 -1
- package/dist/utility/serialization/blueprint/material/texture.js +0 -165
- package/dist/utility/serialization/blueprint/material/texture.js.map +0 -1
- package/dist/utility/serialization/scene/cloth_script.js +0 -834
- package/dist/utility/serialization/scene/cloth_script.js.map +0 -1
- package/dist/utility/serialization/scene/spring_script.js +0 -596
- package/dist/utility/serialization/scene/spring_script.js.map +0 -1
|
@@ -125,9 +125,9 @@ import { fetchSampler } from '../utility/misc.js';
|
|
|
125
125
|
scope.zMSDFAtlasSize = pb.vec2().uniform(2);
|
|
126
126
|
scope.zMSDFSmallGlyphThreshold = pb.float().uniform(2);
|
|
127
127
|
scope.zMSDFOutlineWidth = pb.float().uniform(2);
|
|
128
|
-
scope.$l.
|
|
129
|
-
scope.$l.msdf = scope.
|
|
130
|
-
scope.$l.sdf = scope.
|
|
128
|
+
scope.$l.msdfSample = pb.textureSample(scope.zMSDFAtlas, scope.$inputs.zMSDFUV);
|
|
129
|
+
scope.$l.msdf = scope.msdfSample.rgb;
|
|
130
|
+
scope.$l.sdf = scope.msdfSample.a;
|
|
131
131
|
scope.$l.sd = median3(pb, scope.msdf.r, scope.msdf.g, scope.msdf.b);
|
|
132
132
|
scope.$l.unitRange = pb.div(pb.vec2(scope.zMSDFDistanceRange), pb.max(scope.zMSDFAtlasSize, pb.vec2(1)));
|
|
133
133
|
scope.$l.screenTexSize = pb.div(pb.vec2(1), pb.max(pb.fwidth(scope.$inputs.zMSDFUV), pb.vec2(1e-4)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"msdf_text.js","sources":["../../src/material/msdf_text.ts"],"sourcesContent":["import type {\r\n BindGroup,\r\n PBFunctionScope,\r\n PBInsideFunctionScope,\r\n PBShaderExp,\r\n Texture2D\r\n} from '@zephyr3d/device';\r\nimport { DRef, type Clonable, type Immutable, Vector3 } from '@zephyr3d/base';\r\nimport type { DrawContext } from '../render';\r\nimport { MeshMaterial } from './meshmaterial';\r\nimport { ShaderHelper } from './shader/helper';\r\nimport { fetchSampler } from '../utility/misc';\r\n\r\n/**\r\n * Atlas-based MSDF text material.\r\n *\r\n * @public\r\n */\r\nexport class MSDFTextMaterial extends MeshMaterial implements Clonable<MSDFTextMaterial> {\r\n static FEATURE_TEXT_ATLAS = this.defineFeature();\r\n private _atlas: DRef<Texture2D>;\r\n private _textColor: Vector3;\r\n private _outlineColor: Vector3;\r\n private _distanceRange: number;\r\n private _atlasSize: Float32Array<ArrayBuffer>;\r\n private _smallGlyphThreshold: number;\r\n private _outlineWidth: number;\r\n constructor() {\r\n super();\r\n this._atlas = new DRef();\r\n this._textColor = new Vector3(1, 1, 1);\r\n this._outlineColor = new Vector3(0, 0, 0);\r\n this._distanceRange = 6;\r\n this._atlasSize = new Float32Array([1, 1]);\r\n this._smallGlyphThreshold = 18;\r\n this._outlineWidth = 0;\r\n this.cullMode = 'none';\r\n this.blendMode = 'blend';\r\n }\r\n get atlasTexture() {\r\n return this._atlas.get();\r\n }\r\n set atlasTexture(tex) {\r\n tex = tex ?? null;\r\n if (tex !== this._atlas.get()) {\r\n this._atlas.set(tex);\r\n this.useFeature(MSDFTextMaterial.FEATURE_TEXT_ATLAS, !!tex);\r\n this.uniformChanged();\r\n }\r\n }\r\n get textColor(): Immutable<Vector3> {\r\n return this._textColor;\r\n }\r\n set textColor(value: Immutable<Vector3>) {\r\n if (!this._textColor.equalsTo(value)) {\r\n this._textColor.set(value);\r\n this.uniformChanged();\r\n }\r\n }\r\n get outlineColor(): Immutable<Vector3> {\r\n return this._outlineColor;\r\n }\r\n set outlineColor(value: Immutable<Vector3>) {\r\n if (!this._outlineColor.equalsTo(value)) {\r\n this._outlineColor.set(value);\r\n this.uniformChanged();\r\n }\r\n }\r\n get distanceRange() {\r\n return this._distanceRange;\r\n }\r\n set distanceRange(value: number) {\r\n if (this._distanceRange !== value) {\r\n this._distanceRange = value;\r\n this.uniformChanged();\r\n }\r\n }\r\n get smallGlyphThreshold() {\r\n return this._smallGlyphThreshold;\r\n }\r\n set smallGlyphThreshold(value: number) {\r\n if (this._smallGlyphThreshold !== value) {\r\n this._smallGlyphThreshold = value;\r\n this.uniformChanged();\r\n }\r\n }\r\n get outlineWidth() {\r\n return this._outlineWidth;\r\n }\r\n set outlineWidth(value: number) {\r\n value = Math.max(0, value);\r\n if (this._outlineWidth !== value) {\r\n this._outlineWidth = value;\r\n this.uniformChanged();\r\n }\r\n }\r\n clone() {\r\n const other = new MSDFTextMaterial();\r\n other.copyFrom(this);\r\n return other;\r\n }\r\n copyFrom(other: this) {\r\n super.copyFrom(other);\r\n this.atlasTexture = other.atlasTexture;\r\n this.textColor = other.textColor;\r\n this.outlineColor = other.outlineColor;\r\n this.distanceRange = other.distanceRange;\r\n this.smallGlyphThreshold = other.smallGlyphThreshold;\r\n this.outlineWidth = other.outlineWidth;\r\n this._atlasSize[0] = other._atlasSize[0];\r\n this._atlasSize[1] = other._atlasSize[1];\r\n }\r\n vertexShader(scope: PBFunctionScope) {\r\n super.vertexShader(scope);\r\n const pb = scope.$builder;\r\n scope.$l.oPos = ShaderHelper.resolveVertexPosition(scope);\r\n scope.$inputs.zMSDFUV = pb.vec2().attrib('texCoord0');\r\n scope.$outputs.zMSDFUV = scope.$inputs.zMSDFUV;\r\n scope.$outputs.zMSDFLocalPos = scope.oPos.xy;\r\n scope.$outputs.worldPos = pb.mul(ShaderHelper.getWorldMatrix(scope), pb.vec4(scope.oPos, 1)).xyz;\r\n ShaderHelper.setClipSpacePosition(\r\n scope,\r\n pb.mul(ShaderHelper.getViewProjectionMatrix(scope), pb.vec4(scope.$outputs.worldPos, 1))\r\n );\r\n }\r\n fragmentShader(scope: PBFunctionScope) {\r\n super.fragmentShader(scope);\r\n if (this.needFragmentColor()) {\r\n const pb = scope.$builder;\r\n scope.zMSDFAtlas = pb.tex2D().uniform(2);\r\n scope.zMSDFTextColor = pb.vec3().uniform(2);\r\n scope.zMSDFOutlineColor = pb.vec3().uniform(2);\r\n scope.zMSDFDistanceRange = pb.float().uniform(2);\r\n scope.zMSDFAtlasSize = pb.vec2().uniform(2);\r\n scope.zMSDFSmallGlyphThreshold = pb.float().uniform(2);\r\n scope.zMSDFOutlineWidth = pb.float().uniform(2);\r\n scope.$l.sample = pb.textureSample(scope.zMSDFAtlas, scope.$inputs.zMSDFUV);\r\n scope.$l.msdf = scope.sample.rgb;\r\n scope.$l.sdf = scope.sample.a;\r\n scope.$l.sd = median3(pb, scope.msdf.r, scope.msdf.g, scope.msdf.b);\r\n scope.$l.unitRange = pb.div(\r\n pb.vec2(scope.zMSDFDistanceRange),\r\n pb.max(scope.zMSDFAtlasSize, pb.vec2(1))\r\n );\r\n scope.$l.screenTexSize = pb.div(pb.vec2(1), pb.max(pb.fwidth(scope.$inputs.zMSDFUV), pb.vec2(1e-4)));\r\n scope.$l.screenPxRange = pb.max(pb.mul(0.5, pb.dot(scope.unitRange, scope.screenTexSize)), 1);\r\n scope.$l.msdfPxDistance = pb.mul(scope.screenPxRange, pb.sub(scope.sd, 0.5));\r\n scope.$l.sdfPxDistance = pb.mul(scope.screenPxRange, pb.sub(scope.sdf, 0.5));\r\n scope.$l.alphaMsdf = pb.clamp(pb.add(scope.msdfPxDistance, 0.5), 0, 1);\r\n scope.$l.alphaSdf = pb.clamp(pb.add(scope.sdfPxDistance, 0.5), 0, 1);\r\n scope.$l.glyphPixelSpan = pb.min(scope.screenTexSize.x, scope.screenTexSize.y);\r\n scope.$l.useSdf = pb.lessThan(scope.glyphPixelSpan, scope.zMSDFSmallGlyphThreshold);\r\n scope.$l.alpha = pb.mix(scope.alphaMsdf, scope.alphaSdf, pb.float(scope.useSdf));\r\n scope.$l.localUnitsPerPixel = pb.max(\r\n pb.min(pb.fwidth(scope.$inputs.zMSDFLocalPos.x), pb.fwidth(scope.$inputs.zMSDFLocalPos.y)),\r\n 1e-4\r\n );\r\n scope.$l.outlinePxWidth = pb.div(scope.zMSDFOutlineWidth, scope.localUnitsPerPixel);\r\n scope.$l.outlineAlpha = pb.clamp(pb.add(scope.sdfPxDistance, pb.add(0.5, scope.outlinePxWidth)), 0, 1);\r\n scope.$l.outlineMaskRaw = pb.max(pb.sub(scope.outlineAlpha, scope.alpha), 0);\r\n scope.$l.hasOutline = pb.greaterThan(scope.zMSDFOutlineWidth, 1e-4);\r\n scope.$l.outlineMask = pb.mul(scope.outlineMaskRaw, pb.float(scope.hasOutline));\r\n scope.$l.finalAlpha = pb.clamp(pb.add(scope.alpha, scope.outlineMask), 0, 1);\r\n scope.$l.weightedColor = pb.add(\r\n pb.mul(scope.zMSDFTextColor, scope.alpha),\r\n pb.mul(scope.zMSDFOutlineColor, scope.outlineMask)\r\n );\r\n scope.$l.finalColor = pb.div(scope.weightedColor, pb.max(scope.finalAlpha, 1e-4));\r\n this.outputFragmentColor(scope, scope.$inputs.worldPos, pb.vec4(scope.finalColor, scope.finalAlpha));\r\n } else {\r\n this.outputFragmentColor(scope, scope.$inputs.worldPos, null);\r\n }\r\n }\r\n applyUniformValues(bindGroup: BindGroup, ctx: DrawContext, pass: number) {\r\n super.applyUniformValues(bindGroup, ctx, pass);\r\n if (this.needFragmentColor(ctx) && this.atlasTexture) {\r\n bindGroup.setValue('zMSDFTextColor', this._textColor);\r\n bindGroup.setValue('zMSDFOutlineColor', this._outlineColor);\r\n bindGroup.setValue('zMSDFDistanceRange', this._distanceRange);\r\n this._atlasSize[0] = this.atlasTexture.width;\r\n this._atlasSize[1] = this.atlasTexture.height;\r\n bindGroup.setValue('zMSDFAtlasSize', this._atlasSize);\r\n bindGroup.setValue('zMSDFSmallGlyphThreshold', this._smallGlyphThreshold);\r\n bindGroup.setValue('zMSDFOutlineWidth', this._outlineWidth);\r\n bindGroup.setTexture('zMSDFAtlas', this.atlasTexture, fetchSampler('clamp_linear'));\r\n }\r\n }\r\n protected onDispose() {\r\n super.onDispose();\r\n this._atlas.dispose();\r\n }\r\n}\r\n\r\nfunction median3(pb: PBInsideFunctionScope['$builder'], a: PBShaderExp, b: PBShaderExp, c: PBShaderExp) {\r\n return pb.sub(pb.sub(pb.add(a, b, c), pb.min(pb.min(a, b), c)), pb.max(pb.max(a, b), c));\r\n}\r\n"],"names":["MSDFTextMaterial","MeshMaterial","FEATURE_TEXT_ATLAS","defineFeature","_atlas","_textColor","_outlineColor","_distanceRange","_atlasSize","_smallGlyphThreshold","_outlineWidth","DRef","Vector3","Float32Array","cullMode","blendMode","atlasTexture","get","tex","set","useFeature","uniformChanged","textColor","value","equalsTo","outlineColor","distanceRange","smallGlyphThreshold","outlineWidth","Math","max","clone","other","copyFrom","vertexShader","scope","pb","$builder","$l","oPos","ShaderHelper","resolveVertexPosition","$inputs","zMSDFUV","vec2","attrib","$outputs","zMSDFLocalPos","xy","worldPos","mul","getWorldMatrix","vec4","xyz","setClipSpacePosition","getViewProjectionMatrix","fragmentShader","needFragmentColor","zMSDFAtlas","tex2D","uniform","zMSDFTextColor","vec3","zMSDFOutlineColor","zMSDFDistanceRange","float","zMSDFAtlasSize","zMSDFSmallGlyphThreshold","zMSDFOutlineWidth","sample","textureSample","msdf","rgb","sdf","a","sd","median3","r","g","b","unitRange","div","screenTexSize","fwidth","screenPxRange","dot","msdfPxDistance","sub","sdfPxDistance","alphaMsdf","clamp","add","alphaSdf","glyphPixelSpan","min","x","y","useSdf","lessThan","alpha","mix","localUnitsPerPixel","outlinePxWidth","outlineAlpha","outlineMaskRaw","hasOutline","greaterThan","outlineMask","finalAlpha","weightedColor","finalColor","outputFragmentColor","applyUniformValues","bindGroup","ctx","pass","setValue","width","height","setTexture","fetchSampler","onDispose","dispose","c"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"msdf_text.js","sources":["../../src/material/msdf_text.ts"],"sourcesContent":["import type {\r\n BindGroup,\r\n PBFunctionScope,\r\n PBInsideFunctionScope,\r\n PBShaderExp,\r\n Texture2D\r\n} from '@zephyr3d/device';\r\nimport { DRef, type Clonable, type Immutable, Vector3 } from '@zephyr3d/base';\r\nimport type { DrawContext } from '../render';\r\nimport { MeshMaterial } from './meshmaterial';\r\nimport { ShaderHelper } from './shader/helper';\r\nimport { fetchSampler } from '../utility/misc';\r\n\r\n/**\r\n * Atlas-based MSDF text material.\r\n *\r\n * @public\r\n */\r\nexport class MSDFTextMaterial extends MeshMaterial implements Clonable<MSDFTextMaterial> {\r\n static FEATURE_TEXT_ATLAS = this.defineFeature();\r\n private _atlas: DRef<Texture2D>;\r\n private _textColor: Vector3;\r\n private _outlineColor: Vector3;\r\n private _distanceRange: number;\r\n private _atlasSize: Float32Array<ArrayBuffer>;\r\n private _smallGlyphThreshold: number;\r\n private _outlineWidth: number;\r\n constructor() {\r\n super();\r\n this._atlas = new DRef();\r\n this._textColor = new Vector3(1, 1, 1);\r\n this._outlineColor = new Vector3(0, 0, 0);\r\n this._distanceRange = 6;\r\n this._atlasSize = new Float32Array([1, 1]);\r\n this._smallGlyphThreshold = 18;\r\n this._outlineWidth = 0;\r\n this.cullMode = 'none';\r\n this.blendMode = 'blend';\r\n }\r\n get atlasTexture() {\r\n return this._atlas.get();\r\n }\r\n set atlasTexture(tex) {\r\n tex = tex ?? null;\r\n if (tex !== this._atlas.get()) {\r\n this._atlas.set(tex);\r\n this.useFeature(MSDFTextMaterial.FEATURE_TEXT_ATLAS, !!tex);\r\n this.uniformChanged();\r\n }\r\n }\r\n get textColor(): Immutable<Vector3> {\r\n return this._textColor;\r\n }\r\n set textColor(value: Immutable<Vector3>) {\r\n if (!this._textColor.equalsTo(value)) {\r\n this._textColor.set(value);\r\n this.uniformChanged();\r\n }\r\n }\r\n get outlineColor(): Immutable<Vector3> {\r\n return this._outlineColor;\r\n }\r\n set outlineColor(value: Immutable<Vector3>) {\r\n if (!this._outlineColor.equalsTo(value)) {\r\n this._outlineColor.set(value);\r\n this.uniformChanged();\r\n }\r\n }\r\n get distanceRange() {\r\n return this._distanceRange;\r\n }\r\n set distanceRange(value: number) {\r\n if (this._distanceRange !== value) {\r\n this._distanceRange = value;\r\n this.uniformChanged();\r\n }\r\n }\r\n get smallGlyphThreshold() {\r\n return this._smallGlyphThreshold;\r\n }\r\n set smallGlyphThreshold(value: number) {\r\n if (this._smallGlyphThreshold !== value) {\r\n this._smallGlyphThreshold = value;\r\n this.uniformChanged();\r\n }\r\n }\r\n get outlineWidth() {\r\n return this._outlineWidth;\r\n }\r\n set outlineWidth(value: number) {\r\n value = Math.max(0, value);\r\n if (this._outlineWidth !== value) {\r\n this._outlineWidth = value;\r\n this.uniformChanged();\r\n }\r\n }\r\n clone() {\r\n const other = new MSDFTextMaterial();\r\n other.copyFrom(this);\r\n return other;\r\n }\r\n copyFrom(other: this) {\r\n super.copyFrom(other);\r\n this.atlasTexture = other.atlasTexture;\r\n this.textColor = other.textColor;\r\n this.outlineColor = other.outlineColor;\r\n this.distanceRange = other.distanceRange;\r\n this.smallGlyphThreshold = other.smallGlyphThreshold;\r\n this.outlineWidth = other.outlineWidth;\r\n this._atlasSize[0] = other._atlasSize[0];\r\n this._atlasSize[1] = other._atlasSize[1];\r\n }\r\n vertexShader(scope: PBFunctionScope) {\r\n super.vertexShader(scope);\r\n const pb = scope.$builder;\r\n scope.$l.oPos = ShaderHelper.resolveVertexPosition(scope);\r\n scope.$inputs.zMSDFUV = pb.vec2().attrib('texCoord0');\r\n scope.$outputs.zMSDFUV = scope.$inputs.zMSDFUV;\r\n scope.$outputs.zMSDFLocalPos = scope.oPos.xy;\r\n scope.$outputs.worldPos = pb.mul(ShaderHelper.getWorldMatrix(scope), pb.vec4(scope.oPos, 1)).xyz;\r\n ShaderHelper.setClipSpacePosition(\r\n scope,\r\n pb.mul(ShaderHelper.getViewProjectionMatrix(scope), pb.vec4(scope.$outputs.worldPos, 1))\r\n );\r\n }\r\n fragmentShader(scope: PBFunctionScope) {\r\n super.fragmentShader(scope);\r\n if (this.needFragmentColor()) {\r\n const pb = scope.$builder;\r\n scope.zMSDFAtlas = pb.tex2D().uniform(2);\r\n scope.zMSDFTextColor = pb.vec3().uniform(2);\r\n scope.zMSDFOutlineColor = pb.vec3().uniform(2);\r\n scope.zMSDFDistanceRange = pb.float().uniform(2);\r\n scope.zMSDFAtlasSize = pb.vec2().uniform(2);\r\n scope.zMSDFSmallGlyphThreshold = pb.float().uniform(2);\r\n scope.zMSDFOutlineWidth = pb.float().uniform(2);\r\n scope.$l.msdfSample = pb.textureSample(scope.zMSDFAtlas, scope.$inputs.zMSDFUV);\r\n scope.$l.msdf = scope.msdfSample.rgb;\r\n scope.$l.sdf = scope.msdfSample.a;\r\n scope.$l.sd = median3(pb, scope.msdf.r, scope.msdf.g, scope.msdf.b);\r\n scope.$l.unitRange = pb.div(\r\n pb.vec2(scope.zMSDFDistanceRange),\r\n pb.max(scope.zMSDFAtlasSize, pb.vec2(1))\r\n );\r\n scope.$l.screenTexSize = pb.div(pb.vec2(1), pb.max(pb.fwidth(scope.$inputs.zMSDFUV), pb.vec2(1e-4)));\r\n scope.$l.screenPxRange = pb.max(pb.mul(0.5, pb.dot(scope.unitRange, scope.screenTexSize)), 1);\r\n scope.$l.msdfPxDistance = pb.mul(scope.screenPxRange, pb.sub(scope.sd, 0.5));\r\n scope.$l.sdfPxDistance = pb.mul(scope.screenPxRange, pb.sub(scope.sdf, 0.5));\r\n scope.$l.alphaMsdf = pb.clamp(pb.add(scope.msdfPxDistance, 0.5), 0, 1);\r\n scope.$l.alphaSdf = pb.clamp(pb.add(scope.sdfPxDistance, 0.5), 0, 1);\r\n scope.$l.glyphPixelSpan = pb.min(scope.screenTexSize.x, scope.screenTexSize.y);\r\n scope.$l.useSdf = pb.lessThan(scope.glyphPixelSpan, scope.zMSDFSmallGlyphThreshold);\r\n scope.$l.alpha = pb.mix(scope.alphaMsdf, scope.alphaSdf, pb.float(scope.useSdf));\r\n scope.$l.localUnitsPerPixel = pb.max(\r\n pb.min(pb.fwidth(scope.$inputs.zMSDFLocalPos.x), pb.fwidth(scope.$inputs.zMSDFLocalPos.y)),\r\n 1e-4\r\n );\r\n scope.$l.outlinePxWidth = pb.div(scope.zMSDFOutlineWidth, scope.localUnitsPerPixel);\r\n scope.$l.outlineAlpha = pb.clamp(pb.add(scope.sdfPxDistance, pb.add(0.5, scope.outlinePxWidth)), 0, 1);\r\n scope.$l.outlineMaskRaw = pb.max(pb.sub(scope.outlineAlpha, scope.alpha), 0);\r\n scope.$l.hasOutline = pb.greaterThan(scope.zMSDFOutlineWidth, 1e-4);\r\n scope.$l.outlineMask = pb.mul(scope.outlineMaskRaw, pb.float(scope.hasOutline));\r\n scope.$l.finalAlpha = pb.clamp(pb.add(scope.alpha, scope.outlineMask), 0, 1);\r\n scope.$l.weightedColor = pb.add(\r\n pb.mul(scope.zMSDFTextColor, scope.alpha),\r\n pb.mul(scope.zMSDFOutlineColor, scope.outlineMask)\r\n );\r\n scope.$l.finalColor = pb.div(scope.weightedColor, pb.max(scope.finalAlpha, 1e-4));\r\n this.outputFragmentColor(scope, scope.$inputs.worldPos, pb.vec4(scope.finalColor, scope.finalAlpha));\r\n } else {\r\n this.outputFragmentColor(scope, scope.$inputs.worldPos, null);\r\n }\r\n }\r\n applyUniformValues(bindGroup: BindGroup, ctx: DrawContext, pass: number) {\r\n super.applyUniformValues(bindGroup, ctx, pass);\r\n if (this.needFragmentColor(ctx) && this.atlasTexture) {\r\n bindGroup.setValue('zMSDFTextColor', this._textColor);\r\n bindGroup.setValue('zMSDFOutlineColor', this._outlineColor);\r\n bindGroup.setValue('zMSDFDistanceRange', this._distanceRange);\r\n this._atlasSize[0] = this.atlasTexture.width;\r\n this._atlasSize[1] = this.atlasTexture.height;\r\n bindGroup.setValue('zMSDFAtlasSize', this._atlasSize);\r\n bindGroup.setValue('zMSDFSmallGlyphThreshold', this._smallGlyphThreshold);\r\n bindGroup.setValue('zMSDFOutlineWidth', this._outlineWidth);\r\n bindGroup.setTexture('zMSDFAtlas', this.atlasTexture, fetchSampler('clamp_linear'));\r\n }\r\n }\r\n protected onDispose() {\r\n super.onDispose();\r\n this._atlas.dispose();\r\n }\r\n}\r\n\r\nfunction median3(pb: PBInsideFunctionScope['$builder'], a: PBShaderExp, b: PBShaderExp, c: PBShaderExp) {\r\n return pb.sub(pb.sub(pb.add(a, b, c), pb.min(pb.min(a, b), c)), pb.max(pb.max(a, b), c));\r\n}\r\n"],"names":["MSDFTextMaterial","MeshMaterial","FEATURE_TEXT_ATLAS","defineFeature","_atlas","_textColor","_outlineColor","_distanceRange","_atlasSize","_smallGlyphThreshold","_outlineWidth","DRef","Vector3","Float32Array","cullMode","blendMode","atlasTexture","get","tex","set","useFeature","uniformChanged","textColor","value","equalsTo","outlineColor","distanceRange","smallGlyphThreshold","outlineWidth","Math","max","clone","other","copyFrom","vertexShader","scope","pb","$builder","$l","oPos","ShaderHelper","resolveVertexPosition","$inputs","zMSDFUV","vec2","attrib","$outputs","zMSDFLocalPos","xy","worldPos","mul","getWorldMatrix","vec4","xyz","setClipSpacePosition","getViewProjectionMatrix","fragmentShader","needFragmentColor","zMSDFAtlas","tex2D","uniform","zMSDFTextColor","vec3","zMSDFOutlineColor","zMSDFDistanceRange","float","zMSDFAtlasSize","zMSDFSmallGlyphThreshold","zMSDFOutlineWidth","msdfSample","textureSample","msdf","rgb","sdf","a","sd","median3","r","g","b","unitRange","div","screenTexSize","fwidth","screenPxRange","dot","msdfPxDistance","sub","sdfPxDistance","alphaMsdf","clamp","add","alphaSdf","glyphPixelSpan","min","x","y","useSdf","lessThan","alpha","mix","localUnitsPerPixel","outlinePxWidth","outlineAlpha","outlineMaskRaw","hasOutline","greaterThan","outlineMask","finalAlpha","weightedColor","finalColor","outputFragmentColor","applyUniformValues","bindGroup","ctx","pass","setValue","width","height","setTexture","fetchSampler","onDispose","dispose","c"],"mappings":";;;;;AAaA;;;;IAKO,MAAMA,gBAAyBC,SAAAA,YAAAA,CAAAA;AACpC,IAAA,OAAOC,kBAAqB,GAAA,IAAI,CAACC,aAAa,EAAG;IACzCC,MAAwB;IACxBC,UAAoB;IACpBC,aAAuB;IACvBC,cAAuB;IACvBC,UAAsC;IACtCC,oBAA6B;IAC7BC,aAAsB;IAC9B,WAAc,EAAA;QACZ,KAAK,EAAA;QACL,IAAI,CAACN,MAAM,GAAG,IAAIO,IAAAA,EAAAA;AAClB,QAAA,IAAI,CAACN,UAAU,GAAG,IAAIO,OAAAA,CAAQ,GAAG,CAAG,EAAA,CAAA,CAAA;AACpC,QAAA,IAAI,CAACN,aAAa,GAAG,IAAIM,OAAAA,CAAQ,GAAG,CAAG,EAAA,CAAA,CAAA;QACvC,IAAI,CAACL,cAAc,GAAG,CAAA;AACtB,QAAA,IAAI,CAACC,UAAU,GAAG,IAAIK,YAAa,CAAA;AAAC,YAAA,CAAA;AAAG,YAAA;AAAE,SAAA,CAAA;QACzC,IAAI,CAACJ,oBAAoB,GAAG,EAAA;QAC5B,IAAI,CAACC,aAAa,GAAG,CAAA;QACrB,IAAI,CAACI,QAAQ,GAAG,MAAA;QAChB,IAAI,CAACC,SAAS,GAAG,OAAA;AACnB;AACA,IAAA,IAAIC,YAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAACZ,MAAM,CAACa,GAAG,EAAA;AACxB;IACA,IAAID,YAAAA,CAAaE,GAAG,EAAE;AACpBA,QAAAA,GAAAA,GAAMA,GAAO,IAAA,IAAA;AACb,QAAA,IAAIA,QAAQ,IAAI,CAACd,MAAM,CAACa,GAAG,EAAI,EAAA;AAC7B,YAAA,IAAI,CAACb,MAAM,CAACe,GAAG,CAACD,GAAAA,CAAAA;AAChB,YAAA,IAAI,CAACE,UAAU,CAACpB,iBAAiBE,kBAAkB,EAAE,CAAC,CAACgB,GAAAA,CAAAA;AACvD,YAAA,IAAI,CAACG,cAAc,EAAA;AACrB;AACF;AACA,IAAA,IAAIC,SAAgC,GAAA;QAClC,OAAO,IAAI,CAACjB,UAAU;AACxB;IACA,IAAIiB,SAAAA,CAAUC,KAAyB,EAAE;AACvC,QAAA,IAAI,CAAC,IAAI,CAAClB,UAAU,CAACmB,QAAQ,CAACD,KAAQ,CAAA,EAAA;AACpC,YAAA,IAAI,CAAClB,UAAU,CAACc,GAAG,CAACI,KAAAA,CAAAA;AACpB,YAAA,IAAI,CAACF,cAAc,EAAA;AACrB;AACF;AACA,IAAA,IAAII,YAAmC,GAAA;QACrC,OAAO,IAAI,CAACnB,aAAa;AAC3B;IACA,IAAImB,YAAAA,CAAaF,KAAyB,EAAE;AAC1C,QAAA,IAAI,CAAC,IAAI,CAACjB,aAAa,CAACkB,QAAQ,CAACD,KAAQ,CAAA,EAAA;AACvC,YAAA,IAAI,CAACjB,aAAa,CAACa,GAAG,CAACI,KAAAA,CAAAA;AACvB,YAAA,IAAI,CAACF,cAAc,EAAA;AACrB;AACF;AACA,IAAA,IAAIK,aAAgB,GAAA;QAClB,OAAO,IAAI,CAACnB,cAAc;AAC5B;IACA,IAAImB,aAAAA,CAAcH,KAAa,EAAE;AAC/B,QAAA,IAAI,IAAI,CAAChB,cAAc,KAAKgB,KAAO,EAAA;YACjC,IAAI,CAAChB,cAAc,GAAGgB,KAAAA;AACtB,YAAA,IAAI,CAACF,cAAc,EAAA;AACrB;AACF;AACA,IAAA,IAAIM,mBAAsB,GAAA;QACxB,OAAO,IAAI,CAAClB,oBAAoB;AAClC;IACA,IAAIkB,mBAAAA,CAAoBJ,KAAa,EAAE;AACrC,QAAA,IAAI,IAAI,CAACd,oBAAoB,KAAKc,KAAO,EAAA;YACvC,IAAI,CAACd,oBAAoB,GAAGc,KAAAA;AAC5B,YAAA,IAAI,CAACF,cAAc,EAAA;AACrB;AACF;AACA,IAAA,IAAIO,YAAe,GAAA;QACjB,OAAO,IAAI,CAAClB,aAAa;AAC3B;IACA,IAAIkB,YAAAA,CAAaL,KAAa,EAAE;QAC9BA,KAAQM,GAAAA,IAAAA,CAAKC,GAAG,CAAC,CAAGP,EAAAA,KAAAA,CAAAA;AACpB,QAAA,IAAI,IAAI,CAACb,aAAa,KAAKa,KAAO,EAAA;YAChC,IAAI,CAACb,aAAa,GAAGa,KAAAA;AACrB,YAAA,IAAI,CAACF,cAAc,EAAA;AACrB;AACF;IACAU,KAAQ,GAAA;AACN,QAAA,MAAMC,QAAQ,IAAIhC,gBAAAA,EAAAA;QAClBgC,KAAMC,CAAAA,QAAQ,CAAC,IAAI,CAAA;QACnB,OAAOD,KAAAA;AACT;AACAC,IAAAA,QAAAA,CAASD,KAAW,EAAE;AACpB,QAAA,KAAK,CAACC,QAASD,CAAAA,KAAAA,CAAAA;AACf,QAAA,IAAI,CAAChB,YAAY,GAAGgB,KAAAA,CAAMhB,YAAY;AACtC,QAAA,IAAI,CAACM,SAAS,GAAGU,KAAAA,CAAMV,SAAS;AAChC,QAAA,IAAI,CAACG,YAAY,GAAGO,KAAAA,CAAMP,YAAY;AACtC,QAAA,IAAI,CAACC,aAAa,GAAGM,KAAAA,CAAMN,aAAa;AACxC,QAAA,IAAI,CAACC,mBAAmB,GAAGK,KAAAA,CAAML,mBAAmB;AACpD,QAAA,IAAI,CAACC,YAAY,GAAGI,KAAAA,CAAMJ,YAAY;QACtC,IAAI,CAACpB,UAAU,CAAC,CAAA,CAAE,GAAGwB,KAAMxB,CAAAA,UAAU,CAAC,CAAE,CAAA;QACxC,IAAI,CAACA,UAAU,CAAC,CAAA,CAAE,GAAGwB,KAAMxB,CAAAA,UAAU,CAAC,CAAE,CAAA;AAC1C;AACA0B,IAAAA,YAAAA,CAAaC,KAAsB,EAAE;AACnC,QAAA,KAAK,CAACD,YAAaC,CAAAA,KAAAA,CAAAA;QACnB,MAAMC,EAAAA,GAAKD,MAAME,QAAQ;AACzBF,QAAAA,KAAAA,CAAMG,EAAE,CAACC,IAAI,GAAGC,YAAAA,CAAaC,qBAAqB,CAACN,KAAAA,CAAAA;QACnDA,KAAMO,CAAAA,OAAO,CAACC,OAAO,GAAGP,GAAGQ,IAAI,EAAA,CAAGC,MAAM,CAAC,WAAA,CAAA;AACzCV,QAAAA,KAAAA,CAAMW,QAAQ,CAACH,OAAO,GAAGR,KAAMO,CAAAA,OAAO,CAACC,OAAO;AAC9CR,QAAAA,KAAAA,CAAMW,QAAQ,CAACC,aAAa,GAAGZ,KAAMI,CAAAA,IAAI,CAACS,EAAE;AAC5Cb,QAAAA,KAAAA,CAAMW,QAAQ,CAACG,QAAQ,GAAGb,EAAGc,CAAAA,GAAG,CAACV,YAAaW,CAAAA,cAAc,CAAChB,KAAAA,CAAAA,EAAQC,GAAGgB,IAAI,CAACjB,MAAMI,IAAI,EAAE,IAAIc,GAAG;AAChGb,QAAAA,YAAAA,CAAac,oBAAoB,CAC/BnB,KAAAA,EACAC,EAAGc,CAAAA,GAAG,CAACV,YAAae,CAAAA,uBAAuB,CAACpB,KAAAA,CAAAA,EAAQC,GAAGgB,IAAI,CAACjB,MAAMW,QAAQ,CAACG,QAAQ,EAAE,CAAA,CAAA,CAAA,CAAA;AAEzF;AACAO,IAAAA,cAAAA,CAAerB,KAAsB,EAAE;AACrC,QAAA,KAAK,CAACqB,cAAerB,CAAAA,KAAAA,CAAAA;QACrB,IAAI,IAAI,CAACsB,iBAAiB,EAAI,EAAA;YAC5B,MAAMrB,EAAAA,GAAKD,MAAME,QAAQ;AACzBF,YAAAA,KAAAA,CAAMuB,UAAU,GAAGtB,EAAAA,CAAGuB,KAAK,EAAA,CAAGC,OAAO,CAAC,CAAA,CAAA;AACtCzB,YAAAA,KAAAA,CAAM0B,cAAc,GAAGzB,EAAAA,CAAG0B,IAAI,EAAA,CAAGF,OAAO,CAAC,CAAA,CAAA;AACzCzB,YAAAA,KAAAA,CAAM4B,iBAAiB,GAAG3B,EAAAA,CAAG0B,IAAI,EAAA,CAAGF,OAAO,CAAC,CAAA,CAAA;AAC5CzB,YAAAA,KAAAA,CAAM6B,kBAAkB,GAAG5B,EAAAA,CAAG6B,KAAK,EAAA,CAAGL,OAAO,CAAC,CAAA,CAAA;AAC9CzB,YAAAA,KAAAA,CAAM+B,cAAc,GAAG9B,EAAAA,CAAGQ,IAAI,EAAA,CAAGgB,OAAO,CAAC,CAAA,CAAA;AACzCzB,YAAAA,KAAAA,CAAMgC,wBAAwB,GAAG/B,EAAAA,CAAG6B,KAAK,EAAA,CAAGL,OAAO,CAAC,CAAA,CAAA;AACpDzB,YAAAA,KAAAA,CAAMiC,iBAAiB,GAAGhC,EAAAA,CAAG6B,KAAK,EAAA,CAAGL,OAAO,CAAC,CAAA,CAAA;AAC7CzB,YAAAA,KAAAA,CAAMG,EAAE,CAAC+B,UAAU,GAAGjC,EAAGkC,CAAAA,aAAa,CAACnC,KAAAA,CAAMuB,UAAU,EAAEvB,KAAMO,CAAAA,OAAO,CAACC,OAAO,CAAA;AAC9ER,YAAAA,KAAAA,CAAMG,EAAE,CAACiC,IAAI,GAAGpC,KAAMkC,CAAAA,UAAU,CAACG,GAAG;AACpCrC,YAAAA,KAAAA,CAAMG,EAAE,CAACmC,GAAG,GAAGtC,KAAMkC,CAAAA,UAAU,CAACK,CAAC;AACjCvC,YAAAA,KAAAA,CAAMG,EAAE,CAACqC,EAAE,GAAGC,OAAQxC,CAAAA,EAAAA,EAAID,MAAMoC,IAAI,CAACM,CAAC,EAAE1C,KAAAA,CAAMoC,IAAI,CAACO,CAAC,EAAE3C,KAAMoC,CAAAA,IAAI,CAACQ,CAAC,CAAA;YAClE5C,KAAMG,CAAAA,EAAE,CAAC0C,SAAS,GAAG5C,GAAG6C,GAAG,CACzB7C,GAAGQ,IAAI,CAACT,MAAM6B,kBAAkB,CAAA,EAChC5B,GAAGN,GAAG,CAACK,MAAM+B,cAAc,EAAE9B,EAAGQ,CAAAA,IAAI,CAAC,CAAA,CAAA,CAAA,CAAA;YAEvCT,KAAMG,CAAAA,EAAE,CAAC4C,aAAa,GAAG9C,EAAAA,CAAG6C,GAAG,CAAC7C,EAAAA,CAAGQ,IAAI,CAAC,CAAIR,CAAAA,EAAAA,EAAAA,CAAGN,GAAG,CAACM,EAAAA,CAAG+C,MAAM,CAAChD,KAAMO,CAAAA,OAAO,CAACC,OAAO,CAAA,EAAGP,EAAGQ,CAAAA,IAAI,CAAC,IAAA,CAAA,CAAA,CAAA;AAC7FT,YAAAA,KAAAA,CAAMG,EAAE,CAAC8C,aAAa,GAAGhD,EAAGN,CAAAA,GAAG,CAACM,EAAGc,CAAAA,GAAG,CAAC,GAAKd,EAAAA,EAAAA,CAAGiD,GAAG,CAAClD,KAAAA,CAAM6C,SAAS,EAAE7C,KAAAA,CAAM+C,aAAa,CAAI,CAAA,EAAA,CAAA,CAAA;AAC3F/C,YAAAA,KAAAA,CAAMG,EAAE,CAACgD,cAAc,GAAGlD,GAAGc,GAAG,CAACf,KAAMiD,CAAAA,aAAa,EAAEhD,EAAGmD,CAAAA,GAAG,CAACpD,KAAAA,CAAMwC,EAAE,EAAE,GAAA,CAAA,CAAA;AACvExC,YAAAA,KAAAA,CAAMG,EAAE,CAACkD,aAAa,GAAGpD,GAAGc,GAAG,CAACf,KAAMiD,CAAAA,aAAa,EAAEhD,EAAGmD,CAAAA,GAAG,CAACpD,KAAAA,CAAMsC,GAAG,EAAE,GAAA,CAAA,CAAA;AACvEtC,YAAAA,KAAAA,CAAMG,EAAE,CAACmD,SAAS,GAAGrD,GAAGsD,KAAK,CAACtD,EAAGuD,CAAAA,GAAG,CAACxD,KAAAA,CAAMmD,cAAc,EAAE,MAAM,CAAG,EAAA,CAAA,CAAA;AACpEnD,YAAAA,KAAAA,CAAMG,EAAE,CAACsD,QAAQ,GAAGxD,GAAGsD,KAAK,CAACtD,EAAGuD,CAAAA,GAAG,CAACxD,KAAAA,CAAMqD,aAAa,EAAE,MAAM,CAAG,EAAA,CAAA,CAAA;AAClErD,YAAAA,KAAAA,CAAMG,EAAE,CAACuD,cAAc,GAAGzD,GAAG0D,GAAG,CAAC3D,KAAM+C,CAAAA,aAAa,CAACa,CAAC,EAAE5D,KAAM+C,CAAAA,aAAa,CAACc,CAAC,CAAA;YAC7E7D,KAAMG,CAAAA,EAAE,CAAC2D,MAAM,GAAG7D,EAAAA,CAAG8D,QAAQ,CAAC/D,KAAM0D,CAAAA,cAAc,EAAE1D,KAAAA,CAAMgC,wBAAwB,CAAA;AAClFhC,YAAAA,KAAAA,CAAMG,EAAE,CAAC6D,KAAK,GAAG/D,EAAAA,CAAGgE,GAAG,CAACjE,KAAAA,CAAMsD,SAAS,EAAEtD,MAAMyD,QAAQ,EAAExD,GAAG6B,KAAK,CAAC9B,MAAM8D,MAAM,CAAA,CAAA;AAC9E9D,YAAAA,KAAAA,CAAMG,EAAE,CAAC+D,kBAAkB,GAAGjE,EAAGN,CAAAA,GAAG,CAClCM,EAAAA,CAAG0D,GAAG,CAAC1D,EAAG+C,CAAAA,MAAM,CAAChD,KAAAA,CAAMO,OAAO,CAACK,aAAa,CAACgD,CAAC,CAAA,EAAG3D,EAAG+C,CAAAA,MAAM,CAAChD,KAAAA,CAAMO,OAAO,CAACK,aAAa,CAACiD,CAAC,CACxF,CAAA,EAAA,IAAA,CAAA;YAEF7D,KAAMG,CAAAA,EAAE,CAACgE,cAAc,GAAGlE,EAAAA,CAAG6C,GAAG,CAAC9C,KAAMiC,CAAAA,iBAAiB,EAAEjC,KAAAA,CAAMkE,kBAAkB,CAAA;YAClFlE,KAAMG,CAAAA,EAAE,CAACiE,YAAY,GAAGnE,GAAGsD,KAAK,CAACtD,GAAGuD,GAAG,CAACxD,MAAMqD,aAAa,EAAEpD,GAAGuD,GAAG,CAAC,KAAKxD,KAAMmE,CAAAA,cAAc,IAAI,CAAG,EAAA,CAAA,CAAA;AACpGnE,YAAAA,KAAAA,CAAMG,EAAE,CAACkE,cAAc,GAAGpE,GAAGN,GAAG,CAACM,EAAGmD,CAAAA,GAAG,CAACpD,KAAMoE,CAAAA,YAAY,EAAEpE,KAAAA,CAAMgE,KAAK,CAAG,EAAA,CAAA,CAAA;YAC1EhE,KAAMG,CAAAA,EAAE,CAACmE,UAAU,GAAGrE,GAAGsE,WAAW,CAACvE,KAAMiC,CAAAA,iBAAiB,EAAE,IAAA,CAAA;AAC9DjC,YAAAA,KAAAA,CAAMG,EAAE,CAACqE,WAAW,GAAGvE,GAAGc,GAAG,CAACf,KAAMqE,CAAAA,cAAc,EAAEpE,EAAAA,CAAG6B,KAAK,CAAC9B,MAAMsE,UAAU,CAAA,CAAA;AAC7EtE,YAAAA,KAAAA,CAAMG,EAAE,CAACsE,UAAU,GAAGxE,EAAAA,CAAGsD,KAAK,CAACtD,EAAAA,CAAGuD,GAAG,CAACxD,MAAMgE,KAAK,EAAEhE,KAAMwE,CAAAA,WAAW,GAAG,CAAG,EAAA,CAAA,CAAA;YAC1ExE,KAAMG,CAAAA,EAAE,CAACuE,aAAa,GAAGzE,GAAGuD,GAAG,CAC7BvD,EAAGc,CAAAA,GAAG,CAACf,KAAAA,CAAM0B,cAAc,EAAE1B,KAAAA,CAAMgE,KAAK,CAAA,EACxC/D,EAAGc,CAAAA,GAAG,CAACf,KAAM4B,CAAAA,iBAAiB,EAAE5B,KAAAA,CAAMwE,WAAW,CAAA,CAAA;AAEnDxE,YAAAA,KAAAA,CAAMG,EAAE,CAACwE,UAAU,GAAG1E,GAAG6C,GAAG,CAAC9C,KAAM0E,CAAAA,aAAa,EAAEzE,EAAGN,CAAAA,GAAG,CAACK,KAAAA,CAAMyE,UAAU,EAAE,IAAA,CAAA,CAAA;AAC3E,YAAA,IAAI,CAACG,mBAAmB,CAAC5E,KAAOA,EAAAA,KAAAA,CAAMO,OAAO,CAACO,QAAQ,EAAEb,EAAAA,CAAGgB,IAAI,CAACjB,KAAAA,CAAM2E,UAAU,EAAE3E,MAAMyE,UAAU,CAAA,CAAA;SAC7F,MAAA;YACL,IAAI,CAACG,mBAAmB,CAAC5E,KAAAA,EAAOA,MAAMO,OAAO,CAACO,QAAQ,EAAE,IAAA,CAAA;AAC1D;AACF;AACA+D,IAAAA,kBAAAA,CAAmBC,SAAoB,EAAEC,GAAgB,EAAEC,IAAY,EAAE;QACvE,KAAK,CAACH,kBAAmBC,CAAAA,SAAAA,EAAWC,GAAKC,EAAAA,IAAAA,CAAAA;QACzC,IAAI,IAAI,CAAC1D,iBAAiB,CAACyD,QAAQ,IAAI,CAAClG,YAAY,EAAE;AACpDiG,YAAAA,SAAAA,CAAUG,QAAQ,CAAC,gBAAkB,EAAA,IAAI,CAAC/G,UAAU,CAAA;AACpD4G,YAAAA,SAAAA,CAAUG,QAAQ,CAAC,mBAAqB,EAAA,IAAI,CAAC9G,aAAa,CAAA;AAC1D2G,YAAAA,SAAAA,CAAUG,QAAQ,CAAC,oBAAsB,EAAA,IAAI,CAAC7G,cAAc,CAAA;YAC5D,IAAI,CAACC,UAAU,CAAC,CAAA,CAAE,GAAG,IAAI,CAACQ,YAAY,CAACqG,KAAK;YAC5C,IAAI,CAAC7G,UAAU,CAAC,CAAA,CAAE,GAAG,IAAI,CAACQ,YAAY,CAACsG,MAAM;AAC7CL,YAAAA,SAAAA,CAAUG,QAAQ,CAAC,gBAAkB,EAAA,IAAI,CAAC5G,UAAU,CAAA;AACpDyG,YAAAA,SAAAA,CAAUG,QAAQ,CAAC,0BAA4B,EAAA,IAAI,CAAC3G,oBAAoB,CAAA;AACxEwG,YAAAA,SAAAA,CAAUG,QAAQ,CAAC,mBAAqB,EAAA,IAAI,CAAC1G,aAAa,CAAA;AAC1DuG,YAAAA,SAAAA,CAAUM,UAAU,CAAC,YAAA,EAAc,IAAI,CAACvG,YAAY,EAAEwG,YAAa,CAAA,cAAA,CAAA,CAAA;AACrE;AACF;IACUC,SAAY,GAAA;AACpB,QAAA,KAAK,CAACA,SAAAA,EAAAA;QACN,IAAI,CAACrH,MAAM,CAACsH,OAAO,EAAA;AACrB;AACF;AAEA,SAAS9C,QAAQxC,EAAqC,EAAEsC,CAAc,EAAEK,CAAc,EAAE4C,CAAc,EAAA;AACpG,IAAA,OAAOvF,EAAGmD,CAAAA,GAAG,CAACnD,EAAAA,CAAGmD,GAAG,CAACnD,EAAGuD,CAAAA,GAAG,CAACjB,CAAAA,EAAGK,CAAG4C,EAAAA,CAAAA,CAAAA,EAAIvF,EAAG0D,CAAAA,GAAG,CAAC1D,EAAAA,CAAG0D,GAAG,CAACpB,CAAGK,EAAAA,CAAAA,CAAAA,EAAI4C,CAAKvF,CAAAA,CAAAA,EAAAA,EAAAA,CAAGN,GAAG,CAACM,EAAGN,CAAAA,GAAG,CAAC4C,CAAAA,EAAGK,CAAI4C,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AACvF;;;;"}
|
|
@@ -2,10 +2,10 @@ import { ShaderHelper } from './shader/helper.js';
|
|
|
2
2
|
import { MeshMaterial } from './meshmaterial.js';
|
|
3
3
|
import { MSDFTextMaterial } from './msdf_text.js';
|
|
4
4
|
|
|
5
|
-
/**
|
|
6
|
-
* Billboard MSDF text material.
|
|
7
|
-
*
|
|
8
|
-
* @public
|
|
5
|
+
/**
|
|
6
|
+
* Billboard MSDF text material.
|
|
7
|
+
*
|
|
8
|
+
* @public
|
|
9
9
|
*/ class MSDFTextSpriteMaterial extends MSDFTextMaterial {
|
|
10
10
|
_rotation;
|
|
11
11
|
constructor(){
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"msdf_text_sprite.js","sources":["../../src/material/msdf_text_sprite.ts"],"sourcesContent":["import type { BindGroup, PBFunctionScope } from '@zephyr3d/device';\nimport type { Clonable } from '@zephyr3d/base';\nimport { ShaderHelper } from './shader/helper';\nimport { MeshMaterial } from './meshmaterial';\nimport { MSDFTextMaterial } from './msdf_text';\nimport type { DrawContext } from '../render';\n\n/**\n * Billboard MSDF text material.\n *\n * @public\n */\nexport class MSDFTextSpriteMaterial extends MSDFTextMaterial implements Clonable<MSDFTextSpriteMaterial> {\n private _rotation: number;\n constructor() {\n super();\n this._rotation = 0;\n }\n get rotation() {\n return this._rotation;\n }\n set rotation(value: number) {\n if (this._rotation !== value) {\n this._rotation = value;\n this.uniformChanged();\n }\n }\n clone() {\n const other = new MSDFTextSpriteMaterial();\n other.copyFrom(this);\n return other;\n }\n copyFrom(other: this) {\n super.copyFrom(other);\n this.rotation = other.rotation;\n }\n vertexShader(scope: PBFunctionScope) {\n MeshMaterial.prototype.vertexShader.call(this, scope);\n const pb = scope.$builder;\n scope.$l.oPos = ShaderHelper.resolveVertexPosition(scope);\n scope.$inputs.zMSDFUV = pb.vec2().attrib('texCoord0');\n scope.$outputs.zMSDFUV = scope.$inputs.zMSDFUV;\n scope.$outputs.zMSDFLocalPos = scope.oPos.xy;\n scope.zMSDFSpriteRotation = pb.float().uniform(2);\n scope.$l.worldPos = ShaderHelper.getWorldMatrix(scope)[3].xyz;\n scope.$l.scaleX = pb.sqrt(\n pb.dot(ShaderHelper.getWorldMatrix(scope)[0].xyz, ShaderHelper.getWorldMatrix(scope)[0].xyz)\n );\n scope.$l.scaleY = pb.sqrt(\n pb.dot(ShaderHelper.getWorldMatrix(scope)[1].xyz, ShaderHelper.getWorldMatrix(scope)[1].xyz)\n );\n scope.$l.localPos = scope.oPos.xy;\n const viewMatrix = ShaderHelper.getViewMatrix(scope);\n scope.$l.forward = pb.vec3(viewMatrix[0].z, viewMatrix[1].z, viewMatrix[2].z);\n scope.$l.axis = scope.$choice(\n pb.lessThan(pb.abs(scope.forward.y), 0.999),\n pb.vec3(0, 1, 0),\n pb.vec3(1, 0, 0)\n );\n scope.$l.right = pb.normalize(pb.cross(scope.axis, scope.forward));\n scope.$l.up = pb.normalize(pb.cross(scope.forward, scope.right));\n scope.$l.c = pb.cos(scope.zMSDFSpriteRotation);\n scope.$l.s = pb.sin(scope.zMSDFSpriteRotation);\n scope.$l.rightRot = pb.add(pb.mul(scope.up, scope.s), pb.mul(scope.right, scope.c));\n scope.$l.upRot = pb.sub(pb.mul(scope.up, scope.c), pb.mul(scope.right, scope.s));\n scope.$outputs.worldPos = pb.add(\n scope.worldPos,\n pb.mul(scope.rightRot, pb.mul(scope.localPos.x, scope.scaleX)),\n pb.mul(scope.upRot, pb.mul(scope.localPos.y, scope.scaleY))\n );\n ShaderHelper.setClipSpacePosition(\n scope,\n pb.mul(ShaderHelper.getViewProjectionMatrix(scope), pb.vec4(scope.$outputs.worldPos, 1))\n );\n }\n applyUniformValues(bindGroup: BindGroup, ctx: DrawContext, pass: number) {\n super.applyUniformValues(bindGroup, ctx, pass);\n bindGroup.setValue('zMSDFSpriteRotation', this._rotation);\n }\n}\n"],"names":["MSDFTextSpriteMaterial","MSDFTextMaterial","_rotation","rotation","value","uniformChanged","clone","other","copyFrom","vertexShader","scope","MeshMaterial","prototype","call","pb","$builder","$l","oPos","ShaderHelper","resolveVertexPosition","$inputs","zMSDFUV","vec2","attrib","$outputs","zMSDFLocalPos","xy","zMSDFSpriteRotation","float","uniform","worldPos","getWorldMatrix","xyz","scaleX","sqrt","dot","scaleY","localPos","viewMatrix","getViewMatrix","forward","vec3","z","axis","$choice","lessThan","abs","y","right","normalize","cross","up","c","cos","s","sin","rightRot","add","mul","upRot","sub","x","setClipSpacePosition","getViewProjectionMatrix","vec4","applyUniformValues","bindGroup","ctx","pass","setValue"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"msdf_text_sprite.js","sources":["../../src/material/msdf_text_sprite.ts"],"sourcesContent":["import type { BindGroup, PBFunctionScope } from '@zephyr3d/device';\r\nimport type { Clonable } from '@zephyr3d/base';\r\nimport { ShaderHelper } from './shader/helper';\r\nimport { MeshMaterial } from './meshmaterial';\r\nimport { MSDFTextMaterial } from './msdf_text';\r\nimport type { DrawContext } from '../render';\r\n\r\n/**\r\n * Billboard MSDF text material.\r\n *\r\n * @public\r\n */\r\nexport class MSDFTextSpriteMaterial extends MSDFTextMaterial implements Clonable<MSDFTextSpriteMaterial> {\r\n private _rotation: number;\r\n constructor() {\r\n super();\r\n this._rotation = 0;\r\n }\r\n get rotation() {\r\n return this._rotation;\r\n }\r\n set rotation(value: number) {\r\n if (this._rotation !== value) {\r\n this._rotation = value;\r\n this.uniformChanged();\r\n }\r\n }\r\n clone() {\r\n const other = new MSDFTextSpriteMaterial();\r\n other.copyFrom(this);\r\n return other;\r\n }\r\n copyFrom(other: this) {\r\n super.copyFrom(other);\r\n this.rotation = other.rotation;\r\n }\r\n vertexShader(scope: PBFunctionScope) {\r\n MeshMaterial.prototype.vertexShader.call(this, scope);\r\n const pb = scope.$builder;\r\n scope.$l.oPos = ShaderHelper.resolveVertexPosition(scope);\r\n scope.$inputs.zMSDFUV = pb.vec2().attrib('texCoord0');\r\n scope.$outputs.zMSDFUV = scope.$inputs.zMSDFUV;\r\n scope.$outputs.zMSDFLocalPos = scope.oPos.xy;\r\n scope.zMSDFSpriteRotation = pb.float().uniform(2);\r\n scope.$l.worldPos = ShaderHelper.getWorldMatrix(scope)[3].xyz;\r\n scope.$l.scaleX = pb.sqrt(\r\n pb.dot(ShaderHelper.getWorldMatrix(scope)[0].xyz, ShaderHelper.getWorldMatrix(scope)[0].xyz)\r\n );\r\n scope.$l.scaleY = pb.sqrt(\r\n pb.dot(ShaderHelper.getWorldMatrix(scope)[1].xyz, ShaderHelper.getWorldMatrix(scope)[1].xyz)\r\n );\r\n scope.$l.localPos = scope.oPos.xy;\r\n const viewMatrix = ShaderHelper.getViewMatrix(scope);\r\n scope.$l.forward = pb.vec3(viewMatrix[0].z, viewMatrix[1].z, viewMatrix[2].z);\r\n scope.$l.axis = scope.$choice(\r\n pb.lessThan(pb.abs(scope.forward.y), 0.999),\r\n pb.vec3(0, 1, 0),\r\n pb.vec3(1, 0, 0)\r\n );\r\n scope.$l.right = pb.normalize(pb.cross(scope.axis, scope.forward));\r\n scope.$l.up = pb.normalize(pb.cross(scope.forward, scope.right));\r\n scope.$l.c = pb.cos(scope.zMSDFSpriteRotation);\r\n scope.$l.s = pb.sin(scope.zMSDFSpriteRotation);\r\n scope.$l.rightRot = pb.add(pb.mul(scope.up, scope.s), pb.mul(scope.right, scope.c));\r\n scope.$l.upRot = pb.sub(pb.mul(scope.up, scope.c), pb.mul(scope.right, scope.s));\r\n scope.$outputs.worldPos = pb.add(\r\n scope.worldPos,\r\n pb.mul(scope.rightRot, pb.mul(scope.localPos.x, scope.scaleX)),\r\n pb.mul(scope.upRot, pb.mul(scope.localPos.y, scope.scaleY))\r\n );\r\n ShaderHelper.setClipSpacePosition(\r\n scope,\r\n pb.mul(ShaderHelper.getViewProjectionMatrix(scope), pb.vec4(scope.$outputs.worldPos, 1))\r\n );\r\n }\r\n applyUniformValues(bindGroup: BindGroup, ctx: DrawContext, pass: number) {\r\n super.applyUniformValues(bindGroup, ctx, pass);\r\n bindGroup.setValue('zMSDFSpriteRotation', this._rotation);\r\n }\r\n}\r\n"],"names":["MSDFTextSpriteMaterial","MSDFTextMaterial","_rotation","rotation","value","uniformChanged","clone","other","copyFrom","vertexShader","scope","MeshMaterial","prototype","call","pb","$builder","$l","oPos","ShaderHelper","resolveVertexPosition","$inputs","zMSDFUV","vec2","attrib","$outputs","zMSDFLocalPos","xy","zMSDFSpriteRotation","float","uniform","worldPos","getWorldMatrix","xyz","scaleX","sqrt","dot","scaleY","localPos","viewMatrix","getViewMatrix","forward","vec3","z","axis","$choice","lessThan","abs","y","right","normalize","cross","up","c","cos","s","sin","rightRot","add","mul","upRot","sub","x","setClipSpacePosition","getViewProjectionMatrix","vec4","applyUniformValues","bindGroup","ctx","pass","setValue"],"mappings":"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"}
|
|
@@ -12,24 +12,24 @@ const PBR_REFLECTION_MODE = {
|
|
|
12
12
|
anisotropic: 2,
|
|
13
13
|
glint: 3
|
|
14
14
|
};
|
|
15
|
-
/**
|
|
16
|
-
* Physically-based rendering material driven by blueprint graphs.
|
|
17
|
-
*
|
|
18
|
-
* @remarks
|
|
19
|
-
* This material extends {@link MeshMaterial} with PBR behavior via
|
|
20
|
-
* {@link mixinPBRBluePrint}, and uses {@link MaterialBlueprintIR}
|
|
21
|
-
* graphs for both vertex and fragment stages.
|
|
22
|
-
*
|
|
23
|
-
* - The **vertex blueprint IR** (`vertexIR`) controls vertex
|
|
24
|
-
* transformations and per-vertex data.
|
|
25
|
-
* - The **fragment blueprint IR** (`fragmentIR`) produces inputs
|
|
26
|
-
* for the PBR shading model (albedo, roughness, metalness, etc.).
|
|
27
|
-
*
|
|
28
|
-
* Uniform values and textures for the blueprints are provided via
|
|
29
|
-
* {@link PBRBluePrintMaterial.uniformValues} and
|
|
30
|
-
* {@link PBRBluePrintMaterial.uniformTextures}.
|
|
31
|
-
*
|
|
32
|
-
* @public
|
|
15
|
+
/**
|
|
16
|
+
* Physically-based rendering material driven by blueprint graphs.
|
|
17
|
+
*
|
|
18
|
+
* @remarks
|
|
19
|
+
* This material extends {@link MeshMaterial} with PBR behavior via
|
|
20
|
+
* {@link mixinPBRBluePrint}, and uses {@link MaterialBlueprintIR}
|
|
21
|
+
* graphs for both vertex and fragment stages.
|
|
22
|
+
*
|
|
23
|
+
* - The **vertex blueprint IR** (`vertexIR`) controls vertex
|
|
24
|
+
* transformations and per-vertex data.
|
|
25
|
+
* - The **fragment blueprint IR** (`fragmentIR`) produces inputs
|
|
26
|
+
* for the PBR shading model (albedo, roughness, metalness, etc.).
|
|
27
|
+
*
|
|
28
|
+
* Uniform values and textures for the blueprints are provided via
|
|
29
|
+
* {@link PBRBluePrintMaterial.uniformValues} and
|
|
30
|
+
* {@link PBRBluePrintMaterial.uniformTextures}.
|
|
31
|
+
*
|
|
32
|
+
* @public
|
|
33
33
|
*/ class PBRBluePrintMaterial extends applyMaterialMixins(MeshMaterial, mixinPBRBluePrint) {
|
|
34
34
|
/** @internal */ static FEATURE_VERTEX_COLOR = this.defineFeature();
|
|
35
35
|
/** @internal */ static FEATURE_VERTEX_UV = this.defineFeature();
|
|
@@ -46,15 +46,15 @@ const PBR_REFLECTION_MODE = {
|
|
|
46
46
|
/** @internal */ _anisotropy;
|
|
47
47
|
/** @internal */ _anisotropyDirection;
|
|
48
48
|
/** @internal */ _anisotropyDirectionScaleBias;
|
|
49
|
-
/**
|
|
50
|
-
* Creates a new {@link PBRBluePrintMaterial} instance.
|
|
51
|
-
*
|
|
52
|
-
* @param irFrag - Optional fragment blueprint IR. If omitted, a default
|
|
53
|
-
* IR containing a single {@link PBRBlockNode} is created.
|
|
54
|
-
* @param irVertex - Optional vertex blueprint IR. If omitted, a default
|
|
55
|
-
* IR containing a single {@link VertexBlockNode} is created.
|
|
56
|
-
* @param uniformValues - Optional initial list of uniform value descriptors.
|
|
57
|
-
* @param uniformTextures - Optional initial list of texture uniform descriptors.
|
|
49
|
+
/**
|
|
50
|
+
* Creates a new {@link PBRBluePrintMaterial} instance.
|
|
51
|
+
*
|
|
52
|
+
* @param irFrag - Optional fragment blueprint IR. If omitted, a default
|
|
53
|
+
* IR containing a single {@link PBRBlockNode} is created.
|
|
54
|
+
* @param irVertex - Optional vertex blueprint IR. If omitted, a default
|
|
55
|
+
* IR containing a single {@link VertexBlockNode} is created.
|
|
56
|
+
* @param uniformValues - Optional initial list of uniform value descriptors.
|
|
57
|
+
* @param uniformTextures - Optional initial list of texture uniform descriptors.
|
|
58
58
|
*/ constructor(irFrag, irVertex, uniformValues, uniformTextures){
|
|
59
59
|
super();
|
|
60
60
|
this._irFrag = irFrag ?? new MaterialBlueprintIR({
|
|
@@ -206,8 +206,8 @@ const PBR_REFLECTION_MODE = {
|
|
|
206
206
|
this.uniformChanged();
|
|
207
207
|
}
|
|
208
208
|
}
|
|
209
|
-
/**
|
|
210
|
-
* Gets the fragment blueprint IR.
|
|
209
|
+
/**
|
|
210
|
+
* Gets the fragment blueprint IR.
|
|
211
211
|
*/ get fragmentIR() {
|
|
212
212
|
return this._irFrag;
|
|
213
213
|
}
|
|
@@ -218,8 +218,8 @@ const PBR_REFLECTION_MODE = {
|
|
|
218
218
|
this.optionChanged(true);
|
|
219
219
|
}
|
|
220
220
|
}
|
|
221
|
-
/**
|
|
222
|
-
* Gets the vertex blueprint IR.
|
|
221
|
+
/**
|
|
222
|
+
* Gets the vertex blueprint IR.
|
|
223
223
|
*/ get vertexIR() {
|
|
224
224
|
return this._irVertex;
|
|
225
225
|
}
|
|
@@ -232,8 +232,8 @@ const PBR_REFLECTION_MODE = {
|
|
|
232
232
|
this.optionChanged(true);
|
|
233
233
|
}
|
|
234
234
|
}
|
|
235
|
-
/**
|
|
236
|
-
* Gets the list of uniform value descriptors used by the blueprints.
|
|
235
|
+
/**
|
|
236
|
+
* Gets the list of uniform value descriptors used by the blueprints.
|
|
237
237
|
*/ get uniformValues() {
|
|
238
238
|
return this._uniformValues;
|
|
239
239
|
}
|
|
@@ -243,8 +243,8 @@ const PBR_REFLECTION_MODE = {
|
|
|
243
243
|
}));
|
|
244
244
|
this.uniformChanged();
|
|
245
245
|
}
|
|
246
|
-
/**
|
|
247
|
-
* Gets the list of texture uniform descriptors used by the blueprints.
|
|
246
|
+
/**
|
|
247
|
+
* Gets the list of texture uniform descriptors used by the blueprints.
|
|
248
248
|
*/ get uniformTextures() {
|
|
249
249
|
return this._uniformTextures;
|
|
250
250
|
}
|
|
@@ -273,15 +273,15 @@ const PBR_REFLECTION_MODE = {
|
|
|
273
273
|
this.uniformChanged();
|
|
274
274
|
}
|
|
275
275
|
}
|
|
276
|
-
/**
|
|
277
|
-
* Creates a deep copy of this material.
|
|
278
|
-
*
|
|
279
|
-
* @remarks
|
|
280
|
-
* The clone shares the same vertex/fragment IR references and copies
|
|
281
|
-
* the current blueprint uniform descriptors, then calls `copyFrom`
|
|
282
|
-
* to copy base-class and mixin state.
|
|
283
|
-
*
|
|
284
|
-
* @returns A new {@link PBRBluePrintMaterial} instance.
|
|
276
|
+
/**
|
|
277
|
+
* Creates a deep copy of this material.
|
|
278
|
+
*
|
|
279
|
+
* @remarks
|
|
280
|
+
* The clone shares the same vertex/fragment IR references and copies
|
|
281
|
+
* the current blueprint uniform descriptors, then calls `copyFrom`
|
|
282
|
+
* to copy base-class and mixin state.
|
|
283
|
+
*
|
|
284
|
+
* @returns A new {@link PBRBluePrintMaterial} instance.
|
|
285
285
|
*/ clone() {
|
|
286
286
|
const other = new PBRBluePrintMaterial(this._irFrag, this._irVertex, this._uniformValues, this._uniformTextures);
|
|
287
287
|
other.copyFrom(this);
|
|
@@ -299,10 +299,10 @@ const PBR_REFLECTION_MODE = {
|
|
|
299
299
|
this.anisotropyDirection = other.anisotropyDirection;
|
|
300
300
|
this.anisotropyDirectionScaleBias = other.anisotropyDirectionScaleBias;
|
|
301
301
|
}
|
|
302
|
-
/**
|
|
303
|
-
* Builds the vertex shader for this PBR blueprint material.
|
|
304
|
-
*
|
|
305
|
-
* @param scope - The current vertex shader function scope.
|
|
302
|
+
/**
|
|
303
|
+
* Builds the vertex shader for this PBR blueprint material.
|
|
304
|
+
*
|
|
305
|
+
* @param scope - The current vertex shader function scope.
|
|
306
306
|
*/ vertexShader(scope) {
|
|
307
307
|
super.vertexShader(scope);
|
|
308
308
|
const pb = scope.$builder;
|
|
@@ -349,10 +349,10 @@ const PBR_REFLECTION_MODE = {
|
|
|
349
349
|
}
|
|
350
350
|
}
|
|
351
351
|
}
|
|
352
|
-
/**
|
|
353
|
-
* Builds the fragment shader for this PBR blueprint material.
|
|
354
|
-
*
|
|
355
|
-
* @param scope - The current fragment shader function scope.
|
|
352
|
+
/**
|
|
353
|
+
* Builds the fragment shader for this PBR blueprint material.
|
|
354
|
+
*
|
|
355
|
+
* @param scope - The current fragment shader function scope.
|
|
356
356
|
*/ fragmentShader(scope) {
|
|
357
357
|
super.fragmentShader(scope);
|
|
358
358
|
const pb = scope.$builder;
|
|
@@ -400,17 +400,17 @@ const PBR_REFLECTION_MODE = {
|
|
|
400
400
|
this.outputFragmentColor(scope, scope.$inputs.worldPos, null);
|
|
401
401
|
}
|
|
402
402
|
}
|
|
403
|
-
/**
|
|
404
|
-
* Applies runtime uniform values and textures to the given bind group.
|
|
405
|
-
*
|
|
406
|
-
* @remarks
|
|
407
|
-
* - Calls the base implementation first to bind standard mesh/PBR uniforms.
|
|
408
|
-
* - If fragment color is needed for the current context, all blueprint
|
|
409
|
-
* scalar/vector uniform values and textures are then bound by name.
|
|
410
|
-
*
|
|
411
|
-
* @param bindGroup - The bind group to which material resources are bound.
|
|
412
|
-
* @param ctx - The current draw context.
|
|
413
|
-
* @param pass - Index of the active render pass.
|
|
403
|
+
/**
|
|
404
|
+
* Applies runtime uniform values and textures to the given bind group.
|
|
405
|
+
*
|
|
406
|
+
* @remarks
|
|
407
|
+
* - Calls the base implementation first to bind standard mesh/PBR uniforms.
|
|
408
|
+
* - If fragment color is needed for the current context, all blueprint
|
|
409
|
+
* scalar/vector uniform values and textures are then bound by name.
|
|
410
|
+
*
|
|
411
|
+
* @param bindGroup - The bind group to which material resources are bound.
|
|
412
|
+
* @param ctx - The current draw context.
|
|
413
|
+
* @param pass - Index of the active render pass.
|
|
414
414
|
*/ applyUniformValues(bindGroup, ctx, pass) {
|
|
415
415
|
super.applyUniformValues(bindGroup, ctx, pass);
|
|
416
416
|
if (this.needFragmentColor(ctx)) {
|
|
@@ -436,60 +436,60 @@ const PBR_REFLECTION_MODE = {
|
|
|
436
436
|
}
|
|
437
437
|
}
|
|
438
438
|
}
|
|
439
|
-
/**
|
|
440
|
-
* Creates a unique hash string used for program caching.
|
|
441
|
-
*
|
|
442
|
-
* @remarks
|
|
443
|
-
* The hash includes:
|
|
444
|
-
* - The base material hash (`super._createHash()`).
|
|
445
|
-
* - The fragment IR hash.
|
|
446
|
-
* - The vertex IR hash.
|
|
447
|
-
*
|
|
448
|
-
* Different blueprint graphs will therefore produce different programs.
|
|
449
|
-
*
|
|
450
|
-
* @returns A hash string that uniquely identifies this material configuration.
|
|
439
|
+
/**
|
|
440
|
+
* Creates a unique hash string used for program caching.
|
|
441
|
+
*
|
|
442
|
+
* @remarks
|
|
443
|
+
* The hash includes:
|
|
444
|
+
* - The base material hash (`super._createHash()`).
|
|
445
|
+
* - The fragment IR hash.
|
|
446
|
+
* - The vertex IR hash.
|
|
447
|
+
*
|
|
448
|
+
* Different blueprint graphs will therefore produce different programs.
|
|
449
|
+
*
|
|
450
|
+
* @returns A hash string that uniquely identifies this material configuration.
|
|
451
451
|
*/ _createHash() {
|
|
452
452
|
return `${super._createHash()}:${this._irFrag.hash}:${this._irVertex.hash}`;
|
|
453
453
|
}
|
|
454
|
-
/**
|
|
455
|
-
* Creates the GPU program for this blueprint PBR material.
|
|
456
|
-
*
|
|
457
|
-
* @remarks
|
|
458
|
-
* This calls the base implementation and returns its result.
|
|
459
|
-
* Commented-out `console.log` lines are provided for debugging the
|
|
460
|
-
* generated vertex and fragment shader sources.
|
|
461
|
-
*
|
|
462
|
-
* @param ctx - The current draw context.
|
|
463
|
-
* @param pass - Index of the active render pass.
|
|
464
|
-
* @returns The created GPU program.
|
|
454
|
+
/**
|
|
455
|
+
* Creates the GPU program for this blueprint PBR material.
|
|
456
|
+
*
|
|
457
|
+
* @remarks
|
|
458
|
+
* This calls the base implementation and returns its result.
|
|
459
|
+
* Commented-out `console.log` lines are provided for debugging the
|
|
460
|
+
* generated vertex and fragment shader sources.
|
|
461
|
+
*
|
|
462
|
+
* @param ctx - The current draw context.
|
|
463
|
+
* @param pass - Index of the active render pass.
|
|
464
|
+
* @returns The created GPU program.
|
|
465
465
|
*/ createProgram(ctx, pass) {
|
|
466
466
|
const program = super.createProgram(ctx, pass);
|
|
467
467
|
//console.log(program.getShaderSource('vertex'));
|
|
468
468
|
//console.log(program.getShaderSource('fragment'));
|
|
469
469
|
return program;
|
|
470
470
|
}
|
|
471
|
-
/**
|
|
472
|
-
* Disposes resources associated with this material.
|
|
473
|
-
*
|
|
474
|
-
* @remarks
|
|
475
|
-
* - Calls the base `onDispose` to clean up inherited resources.
|
|
476
|
-
* - Disposes all `finalTexture` references from the blueprint
|
|
477
|
-
* texture uniform descriptors.
|
|
478
|
-
*
|
|
479
|
-
* This method is intended to be called by the engine's resource
|
|
480
|
-
* management system rather than directly by user code.
|
|
471
|
+
/**
|
|
472
|
+
* Disposes resources associated with this material.
|
|
473
|
+
*
|
|
474
|
+
* @remarks
|
|
475
|
+
* - Calls the base `onDispose` to clean up inherited resources.
|
|
476
|
+
* - Disposes all `finalTexture` references from the blueprint
|
|
477
|
+
* texture uniform descriptors.
|
|
478
|
+
*
|
|
479
|
+
* This method is intended to be called by the engine's resource
|
|
480
|
+
* management system rather than directly by user code.
|
|
481
481
|
*/ onDispose() {
|
|
482
482
|
super.onDispose();
|
|
483
483
|
for (const u of this._uniformTextures){
|
|
484
484
|
u.finalTexture.dispose();
|
|
485
485
|
}
|
|
486
486
|
}
|
|
487
|
-
/**
|
|
488
|
-
* Retrieves a named output expression from a blueprint output list.
|
|
489
|
-
*
|
|
490
|
-
* @param outputs - The list of outputs generated by a blueprint graph.
|
|
491
|
-
* @param name - The desired output name (e.g. `"Position"`, `"Color"`, `"UV"`).
|
|
492
|
-
* @returns The expression associated with the given name, or `undefined` if not found.
|
|
487
|
+
/**
|
|
488
|
+
* Retrieves a named output expression from a blueprint output list.
|
|
489
|
+
*
|
|
490
|
+
* @param outputs - The list of outputs generated by a blueprint graph.
|
|
491
|
+
* @param name - The desired output name (e.g. `"Position"`, `"Color"`, `"UV"`).
|
|
492
|
+
* @returns The expression associated with the given name, or `undefined` if not found.
|
|
493
493
|
*/ getOutput(outputs, name) {
|
|
494
494
|
return outputs.find((output)=>output.name === name)?.exp;
|
|
495
495
|
}
|