@zephyr3d/scene 0.9.26 → 0.10.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/README.md +60 -27
- package/dist/animation/animation_bank.js +634 -0
- package/dist/animation/animation_bank.js.map +1 -0
- package/dist/animation/animation_bank_gpu.js +256 -0
- package/dist/animation/animation_bank_gpu.js.map +1 -0
- package/dist/animation/animationset.js +146 -30
- package/dist/animation/animationset.js.map +1 -1
- package/dist/animation/cloth/gpu_cloth_component.js +406 -0
- package/dist/animation/cloth/gpu_cloth_component.js.map +1 -0
- package/dist/animation/cloth/gpu_cloth_system.js +332 -202
- package/dist/animation/cloth/gpu_cloth_system.js.map +1 -1
- package/dist/animation/gpu_animation_driver.js +289 -0
- package/dist/animation/gpu_animation_driver.js.map +1 -0
- package/dist/animation/joint_dynamics/collision.js +112 -1
- package/dist/animation/joint_dynamics/collision.js.map +1 -1
- package/dist/animation/joint_dynamics/controller.js +6 -0
- package/dist/animation/joint_dynamics/controller.js.map +1 -1
- package/dist/animation/joint_dynamics/joint_dynamics_system.js +11 -0
- package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
- package/dist/animation/joint_dynamics/solver.js +50 -12
- package/dist/animation/joint_dynamics/solver.js.map +1 -1
- package/dist/animation/joint_dynamics/types.js.map +1 -1
- package/dist/animation/skeleton.js +300 -56
- package/dist/animation/skeleton.js.map +1 -1
- package/dist/animation/skin_palette_atlas.js +252 -0
- package/dist/animation/skin_palette_atlas.js.map +1 -0
- package/dist/animation/spring/multi_chain_spring_system.js +298 -38
- package/dist/animation/spring/multi_chain_spring_system.js.map +1 -1
- package/dist/animation/spring/spring_chain.js +2 -0
- package/dist/animation/spring/spring_chain.js.map +1 -1
- package/dist/animation/spring/spring_collider.js +159 -21
- package/dist/animation/spring/spring_collider.js.map +1 -1
- package/dist/animation/spring/spring_particle.js +1 -0
- package/dist/animation/spring/spring_particle.js.map +1 -1
- package/dist/animation/spring/spring_solver.js +173 -0
- package/dist/animation/spring/spring_solver.js.map +1 -0
- package/dist/animation/spring/spring_system.js +249 -24
- package/dist/animation/spring/spring_system.js.map +1 -1
- package/dist/animation/spring_modifier.js +32 -1
- package/dist/animation/spring_modifier.js.map +1 -1
- package/dist/app/app.js +26 -0
- package/dist/app/app.js.map +1 -1
- package/dist/app/engine.js +86 -15
- package/dist/app/engine.js.map +1 -1
- package/dist/app/gamepad.js +191 -0
- package/dist/app/gamepad.js.map +1 -0
- package/dist/app/inputactions.js +271 -0
- package/dist/app/inputactions.js.map +1 -0
- package/dist/app/inputmgr.js +331 -22
- package/dist/app/inputmgr.js.map +1 -1
- package/dist/app/loading.js +138 -0
- package/dist/app/loading.js.map +1 -0
- package/dist/app/pipelinecache.js +209 -0
- package/dist/app/pipelinecache.js.map +1 -0
- package/dist/app/runtimescript.js +25 -0
- package/dist/app/runtimescript.js.map +1 -1
- package/dist/app/scriptingsystem.js +54 -0
- package/dist/app/scriptingsystem.js.map +1 -1
- package/dist/app/scriptregistry.js +7 -2
- package/dist/app/scriptregistry.js.map +1 -1
- package/dist/asset/asset_manifest.js +59 -0
- package/dist/asset/asset_manifest.js.map +1 -0
- package/dist/asset/asset_preload.js +258 -0
- package/dist/asset/asset_preload.js.map +1 -0
- package/dist/asset/assetmanager.js +117 -65
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/loaders/ktx2/basis/LICENSE +201 -0
- package/dist/asset/loaders/ktx2/basis/basis_transcoder.js +2 -0
- package/dist/asset/loaders/ktx2/basis/basis_transcoder.wasm +0 -0
- package/dist/asset/loaders/ktx2/basis_location.js +17 -0
- package/dist/asset/loaders/ktx2/basis_location.js.map +1 -0
- package/dist/asset/loaders/ktx2/ktx2_loader.js +88 -0
- package/dist/asset/loaders/ktx2/ktx2_loader.js.map +1 -0
- package/dist/asset/loaders/ktx2/ktx2_targets.js +118 -0
- package/dist/asset/loaders/ktx2/ktx2_targets.js.map +1 -0
- package/dist/asset/loaders/ktx2/transcoder_pool.js +259 -0
- package/dist/asset/loaders/ktx2/transcoder_pool.js.map +1 -0
- package/dist/asset/mesh_lod_builder.js +104 -0
- package/dist/asset/mesh_lod_builder.js.map +1 -0
- package/dist/asset/mesh_settings.js +111 -0
- package/dist/asset/mesh_settings.js.map +1 -0
- package/dist/asset/meshopt_decoder.js +18 -0
- package/dist/asset/meshopt_decoder.js.map +1 -0
- package/dist/asset/meshopt_simplifier.js +26 -0
- package/dist/asset/meshopt_simplifier.js.map +1 -0
- package/dist/asset/model.js +177 -3
- package/dist/asset/model.js.map +1 -1
- package/dist/asset/texture_settings.js +231 -0
- package/dist/asset/texture_settings.js.map +1 -0
- package/dist/asset/zmsh_binary.js +131 -0
- package/dist/asset/zmsh_binary.js.map +1 -0
- package/dist/asset/zsdf_binary.js +111 -0
- package/dist/asset/zsdf_binary.js.map +1 -0
- package/dist/blitter/bilateralblur.js +1 -2
- package/dist/blitter/bilateralblur.js.map +1 -1
- package/dist/blitter/gaussianblur.js +1 -6
- package/dist/blitter/gaussianblur.js.map +1 -1
- package/dist/camera/base.js +31 -10
- package/dist/camera/base.js.map +1 -1
- package/dist/camera/camera.js +178 -200
- package/dist/camera/camera.js.map +1 -1
- package/dist/camera/follow.js +342 -0
- package/dist/camera/follow.js.map +1 -0
- package/dist/camera/fps.js +9 -7
- package/dist/camera/fps.js.map +1 -1
- package/dist/camera/orbit.js +46 -19
- package/dist/camera/orbit.js.map +1 -1
- package/dist/index.d.ts +30475 -19865
- package/dist/index.js +67 -12
- package/dist/index.js.map +1 -1
- package/dist/material/blinn.js +3 -0
- package/dist/material/blinn.js.map +1 -1
- package/dist/material/eye.js +1 -1
- package/dist/material/eye.js.map +1 -1
- package/dist/material/hair.js +2 -3
- package/dist/material/hair.js.map +1 -1
- package/dist/material/hairstrand.js +235 -235
- package/dist/material/hairstrand.js.map +1 -1
- package/dist/material/lambert.js +4 -1
- package/dist/material/lambert.js.map +1 -1
- package/dist/material/material.js +362 -300
- package/dist/material/material.js.map +1 -1
- package/dist/material/meshmaterial.js +118 -45
- package/dist/material/meshmaterial.js.map +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
- package/dist/material/mixins/lightmodel/lambert.js +1 -1
- package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +34 -61
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +16 -2
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js +2 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
- package/dist/material/mixins/lit.js +223 -83
- package/dist/material/mixins/lit.js.map +1 -1
- package/dist/material/mixins/pbr/common.js +31 -206
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/mtoon.js +1 -1
- package/dist/material/mtoon.js.map +1 -1
- package/dist/material/pbrmr.js +3 -0
- package/dist/material/pbrmr.js.map +1 -1
- package/dist/material/pbrsg.js +3 -0
- package/dist/material/pbrsg.js.map +1 -1
- package/dist/material/sdf_debug.js +78 -0
- package/dist/material/sdf_debug.js.map +1 -0
- package/dist/material/shader/helper.js +733 -190
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/material/shader/terrain_blend.js +204 -43
- package/dist/material/shader/terrain_blend.js.map +1 -1
- package/dist/material/skin.js +331 -297
- package/dist/material/skin.js.map +1 -1
- package/dist/material/skinprofile.js +1058 -0
- package/dist/material/skinprofile.js.map +1 -0
- package/dist/material/sss.js +353 -0
- package/dist/material/sss.js.map +1 -0
- package/dist/material/sss_kernel.js +265 -0
- package/dist/material/sss_kernel.js.map +1 -0
- package/dist/material/sssprofile.js +879 -0
- package/dist/material/sssprofile.js.map +1 -0
- package/dist/material/subsurfaceprofile.js +4 -8
- package/dist/material/subsurfaceprofile.js.map +1 -1
- package/dist/material/terrain-cm.js +464 -188
- package/dist/material/terrain-cm.js.map +1 -1
- package/dist/material/unlit.js +3 -0
- package/dist/material/unlit.js.map +1 -1
- package/dist/material/water.js +2009 -201
- package/dist/material/water.js.map +1 -1
- package/dist/node_modules/meshoptimizer/LICENSE +21 -0
- package/dist/node_modules/meshoptimizer/meshopt_decoder.js +197 -0
- package/dist/node_modules/meshoptimizer/meshopt_decoder.js.map +1 -0
- package/dist/node_modules/meshoptimizer/meshopt_simplifier.js +677 -0
- package/dist/node_modules/meshoptimizer/meshopt_simplifier.js.map +1 -0
- package/dist/physics/character.js +226 -0
- package/dist/physics/character.js.map +1 -0
- package/dist/physics/collider.js +209 -0
- package/dist/physics/collider.js.map +1 -0
- package/dist/physics/events.js +79 -0
- package/dist/physics/events.js.map +1 -0
- package/dist/physics/joint.js +272 -0
- package/dist/physics/joint.js.map +1 -0
- package/dist/physics/node_physics.js +234 -0
- package/dist/physics/node_physics.js.map +1 -0
- package/dist/physics/part.js +91 -0
- package/dist/physics/part.js.map +1 -0
- package/dist/physics/rigid_body.js +379 -0
- package/dist/physics/rigid_body.js.map +1 -0
- package/dist/physics/vehicle.js +335 -0
- package/dist/physics/vehicle.js.map +1 -0
- package/dist/physics/world.js +25 -0
- package/dist/physics/world.js.map +1 -0
- package/dist/posteffect/bloom.js +49 -14
- package/dist/posteffect/bloom.js.map +1 -1
- package/dist/posteffect/motionblur.js +668 -63
- package/dist/posteffect/motionblur.js.map +1 -1
- package/dist/posteffect/posteffect.js +12 -1
- package/dist/posteffect/posteffect.js.map +1 -1
- package/dist/posteffect/postsss.js +572 -0
- package/dist/posteffect/postsss.js.map +1 -0
- package/dist/posteffect/sao.js +48 -50
- package/dist/posteffect/sao.js.map +1 -1
- package/dist/posteffect/skinsss.js +605 -355
- package/dist/posteffect/skinsss.js.map +1 -1
- package/dist/posteffect/ssgi.js +91 -162
- package/dist/posteffect/ssgi.js.map +1 -1
- package/dist/posteffect/ssr.js +3 -11
- package/dist/posteffect/ssr.js.map +1 -1
- package/dist/posteffect/sss.js +34 -15
- package/dist/posteffect/sss.js.map +1 -1
- package/dist/posteffect/taa.js +1 -0
- package/dist/posteffect/taa.js.map +1 -1
- package/dist/render/abuffer_oit.js +40 -39
- package/dist/render/abuffer_oit.js.map +1 -1
- package/dist/render/clipmap.js +328 -62
- package/dist/render/clipmap.js.map +1 -1
- package/dist/render/cluster_light.js +958 -224
- package/dist/render/cluster_light.js.map +1 -1
- package/dist/render/cull_visitor.js +26 -5
- package/dist/render/cull_visitor.js.map +1 -1
- package/dist/render/debug_views.js +37 -0
- package/dist/render/debug_views.js.map +1 -0
- package/dist/render/depthpass.js +5 -1
- package/dist/render/depthpass.js.map +1 -1
- package/dist/render/drawable_mixin.js +53 -6
- package/dist/render/drawable_mixin.js.map +1 -1
- package/dist/render/dualdepthpeeling_oit.js +53 -53
- package/dist/render/dualdepthpeeling_oit.js.map +1 -1
- package/dist/render/envlight.js +196 -113
- package/dist/render/envlight.js.map +1 -1
- package/dist/render/fbm_wavegenerator.js +8 -13
- package/dist/render/fbm_wavegenerator.js.map +1 -1
- package/dist/render/fft_wavegenerator.js +268 -136
- package/dist/render/fft_wavegenerator.js.map +1 -1
- package/dist/render/gerstner_wavegenerator.js +113 -28
- package/dist/render/gerstner_wavegenerator.js.map +1 -1
- package/dist/render/gi/probe_volume.js +1334 -0
- package/dist/render/gi/probe_volume.js.map +1 -0
- package/dist/render/gi/scene_gi.js +282 -0
- package/dist/render/gi/scene_gi.js.map +1 -0
- package/dist/render/gi/voxel_atlas.js +198 -0
- package/dist/render/gi/voxel_atlas.js.map +1 -0
- package/dist/render/gi/voxel_lighting.js +652 -0
- package/dist/render/gi/voxel_lighting.js.map +1 -0
- package/dist/render/gi/voxel_scene.js +642 -0
- package/dist/render/gi/voxel_scene.js.map +1 -0
- package/dist/render/gi/voxelize_pass.js +223 -0
- package/dist/render/gi/voxelize_pass.js.map +1 -0
- package/dist/render/globalbindgroup_allocator.js +3 -2
- package/dist/render/globalbindgroup_allocator.js.map +1 -1
- package/dist/render/gpu_picking.js +9 -36
- package/dist/render/gpu_picking.js.map +1 -1
- package/dist/render/hzb.js +80 -22
- package/dist/render/hzb.js.map +1 -1
- package/dist/render/instance_culling.js +499 -0
- package/dist/render/instance_culling.js.map +1 -0
- package/dist/render/lightpass.js +23 -9
- package/dist/render/lightpass.js.map +1 -1
- package/dist/render/lod.js +46 -0
- package/dist/render/lod.js.map +1 -0
- package/dist/render/oit.js +11 -11
- package/dist/render/oit.js.map +1 -1
- package/dist/render/primitive.js +301 -9
- package/dist/render/primitive.js.map +1 -1
- package/dist/render/primitive_readback.js +209 -0
- package/dist/render/primitive_readback.js.map +1 -0
- package/dist/render/render_queue.js +198 -11
- package/dist/render/render_queue.js.map +1 -1
- package/dist/render/renderer.js +14 -7
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/rendergraph/blackboard.js +15 -1
- package/dist/render/rendergraph/blackboard.js.map +1 -1
- package/dist/render/rendergraph/executor.js +136 -0
- package/dist/render/rendergraph/executor.js.map +1 -1
- package/dist/render/rendergraph/forward_plus_builder.js +585 -59
- package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
- package/dist/render/rendergraph/frame_resource_requirements.js +1 -0
- package/dist/render/rendergraph/frame_resource_requirements.js.map +1 -1
- package/dist/render/rendergraph/history_resources.js +8 -1
- package/dist/render/rendergraph/history_resources.js.map +1 -1
- package/dist/render/rendergraph/scene_render_context.js +31 -2
- package/dist/render/rendergraph/scene_render_context.js.map +1 -1
- package/dist/render/rendergraph/types.js.map +1 -1
- package/dist/render/renderpass.js +28 -5
- package/dist/render/renderpass.js.map +1 -1
- package/dist/render/sdf/box_allocator.js +98 -0
- package/dist/render/sdf/box_allocator.js.map +1 -0
- package/dist/render/sdf/global_sdf.js +865 -0
- package/dist/render/sdf/global_sdf.js.map +1 -0
- package/dist/render/sdf/scene_sdf.js +562 -0
- package/dist/render/sdf/scene_sdf.js.map +1 -0
- package/dist/render/sdf/sdf_atlas.js +227 -0
- package/dist/render/sdf/sdf_atlas.js.map +1 -0
- package/dist/render/sdf/sdf_programs.js +42 -0
- package/dist/render/sdf/sdf_programs.js.map +1 -0
- package/dist/render/sdf/sdf_view.js +199 -0
- package/dist/render/sdf/sdf_view.js.map +1 -0
- package/dist/render/sdf/waterline.js +610 -0
- package/dist/render/sdf/waterline.js.map +1 -0
- package/dist/render/shadow_mask_pass.js +142 -25
- package/dist/render/shadow_mask_pass.js.map +1 -1
- package/dist/render/shore_wave_generator.js +1193 -0
- package/dist/render/shore_wave_generator.js.map +1 -0
- package/dist/render/sky.js +516 -86
- package/dist/render/sky.js.map +1 -1
- package/dist/render/transmission_thickness_pass.js +477 -0
- package/dist/render/transmission_thickness_pass.js.map +1 -0
- package/dist/render/underwater.js +524 -0
- package/dist/render/underwater.js.map +1 -0
- package/dist/render/virtualtexture/virtual_texture.js +1214 -0
- package/dist/render/virtualtexture/virtual_texture.js.map +1 -0
- package/dist/render/volumetric_cloud/cloud_common.js +472 -0
- package/dist/render/volumetric_cloud/cloud_common.js.map +1 -0
- package/dist/render/volumetric_cloud/cloud_noise.js +189 -0
- package/dist/render/volumetric_cloud/cloud_noise.js.map +1 -0
- package/dist/render/volumetric_cloud/debug_view.js +131 -0
- package/dist/render/volumetric_cloud/debug_view.js.map +1 -0
- package/dist/render/volumetric_cloud/resources.js +380 -0
- package/dist/render/volumetric_cloud/resources.js.map +1 -0
- package/dist/render/volumetric_cloud/sky_cache.js +380 -0
- package/dist/render/volumetric_cloud/sky_cache.js.map +1 -0
- package/dist/render/volumetric_cloud/volumetric_cloud.js +318 -0
- package/dist/render/volumetric_cloud/volumetric_cloud.js.map +1 -0
- package/dist/render/water_caustics.js +1195 -0
- package/dist/render/water_caustics.js.map +1 -0
- package/dist/render/water_foam.js +627 -0
- package/dist/render/water_foam.js.map +1 -0
- package/dist/render/water_interaction.js +1795 -0
- package/dist/render/water_interaction.js.map +1 -0
- package/dist/render/weightedblended_oit.js +36 -36
- package/dist/render/weightedblended_oit.js.map +1 -1
- package/dist/scene/basesprite.js +9 -4
- package/dist/scene/basesprite.js.map +1 -1
- package/dist/scene/batchgroup.js +108 -12
- package/dist/scene/batchgroup.js.map +1 -1
- package/dist/scene/environment.js +28 -7
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/foliage.js +1020 -0
- package/dist/scene/foliage.js.map +1 -0
- package/dist/scene/foliage_buckets.js +147 -0
- package/dist/scene/foliage_buckets.js.map +1 -0
- package/dist/scene/foliage_mask.js +358 -0
- package/dist/scene/foliage_mask.js.map +1 -0
- package/dist/scene/hair.js +15 -4
- package/dist/scene/hair.js.map +1 -1
- package/dist/scene/light.js +179 -13
- package/dist/scene/light.js.map +1 -1
- package/dist/scene/mesh.js +327 -45
- package/dist/scene/mesh.js.map +1 -1
- package/dist/scene/meshdrawable.js +6 -0
- package/dist/scene/meshdrawable.js.map +1 -1
- package/dist/scene/msdftext.js +9 -3
- package/dist/scene/msdftext.js.map +1 -1
- package/dist/scene/msdftextsprite.js +9 -3
- package/dist/scene/msdftextsprite.js.map +1 -1
- package/dist/scene/particlesys.js +8 -2
- package/dist/scene/particlesys.js.map +1 -1
- package/dist/scene/physics_settings.js +157 -0
- package/dist/scene/physics_settings.js.map +1 -0
- package/dist/scene/scene.js +190 -44
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/scene_node.js +147 -6
- package/dist/scene/scene_node.js.map +1 -1
- package/dist/scene/terrain-cm/bladegrassmaterial.js +735 -0
- package/dist/scene/terrain-cm/bladegrassmaterial.js.map +1 -0
- package/dist/scene/terrain-cm/grass.js +881 -42
- package/dist/scene/terrain-cm/grass.js.map +1 -1
- package/dist/scene/terrain-cm/grass_gpu.js +929 -0
- package/dist/scene/terrain-cm/grass_gpu.js.map +1 -0
- package/dist/scene/terrain-cm/grassmaterial.js +180 -9
- package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
- package/dist/scene/terrain-cm/terrain-cm.js +465 -36
- package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
- package/dist/scene/terrain-cm/terrain_gi_albedo.js +257 -0
- package/dist/scene/terrain-cm/terrain_gi_albedo.js.map +1 -0
- package/dist/scene/terrain-cm/terrain_rvt.js +395 -0
- package/dist/scene/terrain-cm/terrain_rvt.js.map +1 -0
- package/dist/scene/update_queue.js +54 -0
- package/dist/scene/update_queue.js.map +1 -0
- package/dist/scene/water.js +997 -96
- package/dist/scene/water.js.map +1 -1
- package/dist/scene/water_surface_sampler.js +324 -0
- package/dist/scene/water_surface_sampler.js.map +1 -0
- package/dist/scene/wind.js +317 -0
- package/dist/scene/wind.js.map +1 -0
- package/dist/shaders/atmosphere.js +388 -166
- package/dist/shaders/atmosphere.js.map +1 -1
- package/dist/shaders/fog.js +100 -32
- package/dist/shaders/fog.js.map +1 -1
- package/dist/shaders/gi.js +365 -0
- package/dist/shaders/gi.js.map +1 -0
- package/dist/shaders/ltc_rect.js +202 -0
- package/dist/shaders/ltc_rect.js.map +1 -0
- package/dist/shaders/misc.js +1 -10
- package/dist/shaders/misc.js.map +1 -1
- package/dist/shaders/noise.js +5 -1
- package/dist/shaders/noise.js.map +1 -1
- package/dist/shaders/probes.js +309 -0
- package/dist/shaders/probes.js.map +1 -0
- package/dist/shaders/sdf.js +537 -0
- package/dist/shaders/sdf.js.map +1 -0
- package/dist/shaders/shadow.js +104 -70
- package/dist/shaders/shadow.js.map +1 -1
- package/dist/shaders/skin_brdf.js +243 -0
- package/dist/shaders/skin_brdf.js.map +1 -0
- package/dist/shaders/ssr.js +6 -159
- package/dist/shaders/ssr.js.map +1 -1
- package/dist/shaders/temporal.js +38 -27
- package/dist/shaders/temporal.js.map +1 -1
- package/dist/shaders/water.js +40 -87
- package/dist/shaders/water.js.map +1 -1
- package/dist/shaders/water_medium.js +42 -0
- package/dist/shaders/water_medium.js.map +1 -0
- package/dist/shadow/dom.js +110 -19
- package/dist/shadow/dom.js.map +1 -1
- package/dist/shadow/esm.js +3 -3
- package/dist/shadow/esm.js.map +1 -1
- package/dist/shadow/pcf_opt.js +15 -48
- package/dist/shadow/pcf_opt.js.map +1 -1
- package/dist/shadow/pcf_pd.js +15 -53
- package/dist/shadow/pcf_pd.js.map +1 -1
- package/dist/shadow/pcss.js +34 -9
- package/dist/shadow/pcss.js.map +1 -1
- package/dist/shadow/shadow_impl.js +3 -8
- package/dist/shadow/shadow_impl.js.map +1 -1
- package/dist/shadow/shadow_region.js +87 -49
- package/dist/shadow/shadow_region.js.map +1 -1
- package/dist/shadow/shadowmapper.js +93 -53
- package/dist/shadow/shadowmapper.js.map +1 -1
- package/dist/shadow/ssm.js +18 -72
- package/dist/shadow/ssm.js.map +1 -1
- package/dist/shadow/vsm.js +3 -3
- package/dist/shadow/vsm.js.map +1 -1
- package/dist/shapes/shape.js +44 -1
- package/dist/shapes/shape.js.map +1 -1
- package/dist/utility/buoyancy.js +287 -0
- package/dist/utility/buoyancy.js.map +1 -0
- package/dist/utility/physical.js +10 -1
- package/dist/utility/physical.js.map +1 -1
- package/dist/utility/pmrem.js +17 -43
- package/dist/utility/pmrem.js.map +1 -1
- package/dist/utility/sdf/bake.js +435 -0
- package/dist/utility/sdf/bake.js.map +1 -0
- package/dist/utility/sdf/bvh.js +576 -0
- package/dist/utility/sdf/bvh.js.map +1 -0
- package/dist/utility/serialization/manager.js +36 -6
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +77 -7
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/batch.js +11 -4
- package/dist/utility/serialization/scene/batch.js.map +1 -1
- package/dist/utility/serialization/scene/camera.js +140 -279
- package/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/utility/serialization/scene/cloth.js +25 -0
- package/dist/utility/serialization/scene/cloth.js.map +1 -0
- package/dist/utility/serialization/scene/common.js +14 -6
- package/dist/utility/serialization/scene/common.js.map +1 -1
- package/dist/utility/serialization/scene/foliage.js +821 -0
- package/dist/utility/serialization/scene/foliage.js.map +1 -0
- package/dist/utility/serialization/scene/hair.js +11 -4
- package/dist/utility/serialization/scene/hair.js.map +1 -1
- package/dist/utility/serialization/scene/light.js +115 -7
- package/dist/utility/serialization/scene/light.js.map +1 -1
- package/dist/utility/serialization/scene/material.js +388 -220
- package/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/utility/serialization/scene/mesh.js +69 -4
- package/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +140 -5
- package/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/utility/serialization/scene/node_physics.js +1318 -0
- package/dist/utility/serialization/scene/node_physics.js.map +1 -0
- package/dist/utility/serialization/scene/particle.js +11 -4
- package/dist/utility/serialization/scene/particle.js.map +1 -1
- package/dist/utility/serialization/scene/physics.js +120 -0
- package/dist/utility/serialization/scene/physics.js.map +1 -0
- package/dist/utility/serialization/scene/primitive.js +124 -10
- package/dist/utility/serialization/scene/primitive.js.map +1 -1
- package/dist/utility/serialization/scene/scene.js +1687 -51
- package/dist/utility/serialization/scene/scene.js.map +1 -1
- package/dist/utility/serialization/scene/sprite.js +11 -4
- package/dist/utility/serialization/scene/sprite.js.map +1 -1
- package/dist/utility/serialization/scene/terrain.js +163 -33
- package/dist/utility/serialization/scene/terrain.js.map +1 -1
- package/dist/utility/serialization/scene/text.js +11 -4
- package/dist/utility/serialization/scene/text.js.map +1 -1
- package/dist/utility/serialization/scene/water.js +2473 -114
- package/dist/utility/serialization/scene/water.js.map +1 -1
- package/dist/utility/serialization/types.js.map +1 -1
- package/dist/utility/shprojector.js +97 -109
- package/dist/utility/shprojector.js.map +1 -1
- package/dist/utility/textures/foam.js +170 -0
- package/dist/utility/textures/foam.js.map +1 -0
- package/dist/utility/textures/ggxlut.js +17 -43
- package/dist/utility/textures/ggxlut.js.map +1 -1
- package/dist/utility/textures/ltcdata.js +4 -4
- package/dist/utility/textures/ltcdata.js.map +1 -1
- package/dist/utility/textures/ltclut.js +16 -6
- package/dist/utility/textures/ltclut.js.map +1 -1
- package/dist/utility/unsupported.js +24 -0
- package/dist/utility/unsupported.js.map +1 -0
- package/dist/values.js +13 -1
- package/dist/values.js.map +1 -1
- package/package.json +25 -12
- package/src/asset/loaders/ktx2/basis/LICENSE +201 -0
- package/src/asset/loaders/ktx2/basis/basis_transcoder.js +2 -0
- package/src/asset/loaders/ktx2/basis/basis_transcoder.wasm +0 -0
- package/src/asset/meshoptimizer/LICENSE +21 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pbrsg.js","sources":["../../src/material/pbrsg.ts"],"sourcesContent":["import { MeshMaterial, applyMaterialMixins } from './meshmaterial';\r\nimport { mixinVertexColor } from './mixins/vertexcolor';\r\nimport type { PBFunctionScope } from '@zephyr3d/device';\r\nimport { mixinPBRSpecularGlossness } from './mixins/lightmodel/pbrspecularglossness';\r\nimport { ShaderHelper } from './shader/helper';\r\nimport { MaterialVaryingFlags, RENDER_PASS_TYPE_LIGHT } from '../values';\r\nimport type { Clonable } from '@zephyr3d/base';\r\n\r\n/**\r\n * PBRSpecularGlossinessMaterial class\r\n * @public\r\n */\r\nexport class PBRSpecularGlossinessMaterial\r\n extends applyMaterialMixins(MeshMaterial, mixinPBRSpecularGlossness, mixinVertexColor)\r\n implements Clonable<PBRSpecularGlossinessMaterial>\r\n{\r\n /** @internal */\r\n private static readonly FEATURE_VERTEX_NORMAL = this.defineFeature();\r\n /** @internal */\r\n private static readonly FEATURE_VERTEX_TANGENT = this.defineFeature();\r\n /**\r\n * Creates an instance of PBRSpecularGlossinessMaterial class\r\n */\r\n constructor() {\r\n super();\r\n this.useFeature(PBRSpecularGlossinessMaterial.FEATURE_VERTEX_NORMAL, true);\r\n }\r\n clone() {\r\n const other = new PBRSpecularGlossinessMaterial();\r\n other.copyFrom(this);\r\n return other;\r\n }\r\n copyFrom(other: this) {\r\n super.copyFrom(other);\r\n this.vertexNormal = other.vertexNormal;\r\n this.vertexTangent = other.vertexTangent;\r\n }\r\n /** true if vertex normal attribute presents */\r\n get vertexNormal() {\r\n return this.featureUsed<boolean>(PBRSpecularGlossinessMaterial.FEATURE_VERTEX_NORMAL);\r\n }\r\n set vertexNormal(val) {\r\n this.useFeature(PBRSpecularGlossinessMaterial.FEATURE_VERTEX_NORMAL, !!val);\r\n }\r\n /** true if vertex normal attribute presents */\r\n get vertexTangent() {\r\n return this.featureUsed<boolean>(PBRSpecularGlossinessMaterial.FEATURE_VERTEX_TANGENT);\r\n }\r\n set vertexTangent(val) {\r\n this.useFeature(PBRSpecularGlossinessMaterial.FEATURE_VERTEX_TANGENT, !!val);\r\n }\r\n vertexShader(scope: PBFunctionScope) {\r\n super.vertexShader(scope);\r\n const pb = scope.$builder;\r\n const worldMatrix = ShaderHelper.getWorldMatrix(scope);\r\n scope.$l.oPos = ShaderHelper.resolveVertexPosition(scope);\r\n scope.$outputs.worldPos = pb.mul(worldMatrix, pb.vec4(scope.oPos, 1)).xyz;\r\n scope.$l.csPos = pb.mul(ShaderHelper.getViewProjectionMatrix(scope), pb.vec4(scope.$outputs.worldPos, 1));\r\n ShaderHelper.setClipSpacePosition(scope, scope.csPos);\r\n if (this.transmission) {\r\n scope.$outputs.screenUV = pb.add(pb.mul(pb.div(scope.csPos.xy, scope.csPos.w), 0.5), pb.vec2(0.5));\r\n scope.$outputs.modelScale = pb.vec3(\r\n pb.length(worldMatrix[0].xyz),\r\n pb.length(worldMatrix[1].xyz),\r\n pb.length(worldMatrix[2].xyz)\r\n );\r\n }\r\n if (this.vertexNormal) {\r\n scope.$l.oNorm = ShaderHelper.resolveVertexNormal(scope);\r\n scope.$outputs.wNorm = pb.mul(ShaderHelper.getNormalMatrix(scope), pb.vec4(scope.oNorm, 0)).xyz;\r\n if (this.vertexTangent) {\r\n scope.$l.oTangent = ShaderHelper.resolveVertexTangent(scope);\r\n scope.$outputs.wTangent = pb.mul(\r\n ShaderHelper.getNormalMatrix(scope),\r\n pb.vec4(scope.oTangent.xyz, 0)\r\n ).xyz;\r\n scope.$outputs.wBinormal = pb.mul(\r\n pb.cross(scope.$outputs.wNorm, scope.$outputs.wTangent),\r\n scope.oTangent.w\r\n );\r\n }\r\n }\r\n }\r\n fragmentShader(scope: PBFunctionScope) {\r\n super.fragmentShader(scope);\r\n const pb = scope.$builder;\r\n if (this.needFragmentColorInput()) {\r\n scope.$l.albedo = this.calculateAlbedoColor(scope);\r\n if (this.vertexColor) {\r\n scope.albedo = pb.mul(scope.albedo, this.getVertexColor(scope));\r\n }\r\n if (this.drawContext.renderPass!.type === RENDER_PASS_TYPE_LIGHT) {\r\n scope.$l.normalInfo = this.calculateNormalAndTBN(\r\n scope,\r\n scope.$inputs.worldPos,\r\n scope.$inputs.wNorm,\r\n scope.$inputs.wTangent,\r\n scope.$inputs.wBinormal\r\n );\r\n scope.$l.viewVec = this.calculateViewVector(scope, scope.$inputs.worldPos);\r\n if (\r\n this.drawContext.materialFlags &\r\n (MaterialVaryingFlags.SCENE_STORE_ROUGHNESS | MaterialVaryingFlags.SCENE_STORE_NORMAL)\r\n ) {\r\n scope.$l.outRoughness = pb.vec4();\r\n scope.$l.litColor = this.PBRLight(\r\n scope,\r\n scope.$inputs.worldPos,\r\n scope.normalInfo.normal,\r\n scope.viewVec,\r\n scope.albedo,\r\n scope.normalInfo.TBN,\r\n scope.outRoughness\r\n );\r\n /*\r\n scope.outRoughness = pb.vec4(\r\n pb.add(pb.mul(scope.normalInfo.normal, 0.5), pb.vec3(0.5)),\r\n scope.outRoughness.a\r\n );\r\n */\r\n this.outputFragmentColor(\r\n scope,\r\n scope.$inputs.worldPos,\r\n pb.vec4(scope.litColor, scope.albedo.a),\r\n scope.outRoughness,\r\n pb.vec4(pb.add(pb.mul(scope.normalInfo.normal, 0.5), pb.vec3(0.5)), 1)\r\n );\r\n } else {\r\n scope.$l.litColor = this.PBRLight(\r\n scope,\r\n scope.$inputs.worldPos,\r\n scope.normalInfo.normal,\r\n scope.viewVec,\r\n scope.albedo,\r\n scope.normalInfo.TBN\r\n );\r\n this.outputFragmentColor(scope, scope.$inputs.worldPos, pb.vec4(scope.litColor, scope.albedo.a));\r\n }\r\n } else {\r\n this.outputFragmentColor(scope, scope.$inputs.worldPos, scope.albedo);\r\n }\r\n } else {\r\n this.outputFragmentColor(scope, scope.$inputs.worldPos, null);\r\n }\r\n }\r\n}\r\n"],"names":["PBRSpecularGlossinessMaterial","applyMaterialMixins","MeshMaterial","mixinPBRSpecularGlossness","mixinVertexColor","FEATURE_VERTEX_NORMAL","defineFeature","FEATURE_VERTEX_TANGENT","useFeature","clone","other","copyFrom","vertexNormal","vertexTangent","featureUsed","val","vertexShader","scope","pb","$builder","worldMatrix","ShaderHelper","getWorldMatrix","$l","oPos","resolveVertexPosition","$outputs","worldPos","mul","vec4","xyz","csPos","getViewProjectionMatrix","setClipSpacePosition","transmission","screenUV","add","div","xy","w","vec2","modelScale","vec3","length","oNorm","resolveVertexNormal","wNorm","getNormalMatrix","oTangent","resolveVertexTangent","wTangent","wBinormal","cross","fragmentShader","needFragmentColorInput","albedo","calculateAlbedoColor","vertexColor","getVertexColor","drawContext","renderPass","type","RENDER_PASS_TYPE_LIGHT","normalInfo","calculateNormalAndTBN","$inputs","viewVec","calculateViewVector","materialFlags","MaterialVaryingFlags","SCENE_STORE_ROUGHNESS","SCENE_STORE_NORMAL","outRoughness","litColor","PBRLight","normal","TBN","outputFragmentColor","a"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pbrsg.js","sources":["../../src/material/pbrsg.ts"],"sourcesContent":["import { MeshMaterial, applyMaterialMixins } from './meshmaterial';\r\nimport { mixinVertexColor } from './mixins/vertexcolor';\r\nimport type { PBFunctionScope } from '@zephyr3d/device';\r\nimport { mixinPBRSpecularGlossness } from './mixins/lightmodel/pbrspecularglossness';\r\nimport { ShaderHelper } from './shader/helper';\r\nimport { MaterialVaryingFlags, RENDER_PASS_TYPE_LIGHT } from '../values';\r\nimport type { Clonable } from '@zephyr3d/base';\r\n\r\n/**\r\n * PBRSpecularGlossinessMaterial class\r\n * @public\r\n */\r\nexport class PBRSpecularGlossinessMaterial\r\n extends applyMaterialMixins(MeshMaterial, mixinPBRSpecularGlossness, mixinVertexColor)\r\n implements Clonable<PBRSpecularGlossinessMaterial>\r\n{\r\n /** @internal */\r\n private static readonly FEATURE_VERTEX_NORMAL = this.defineFeature();\r\n /** @internal */\r\n private static readonly FEATURE_VERTEX_TANGENT = this.defineFeature();\r\n /**\r\n * Creates an instance of PBRSpecularGlossinessMaterial class\r\n */\r\n constructor() {\r\n super();\r\n this.useFeature(PBRSpecularGlossinessMaterial.FEATURE_VERTEX_NORMAL, true);\r\n }\r\n clone() {\r\n const other = new PBRSpecularGlossinessMaterial();\r\n other.copyFrom(this);\r\n return other;\r\n }\r\n supportsVoxelization() {\r\n return true;\r\n }\r\n copyFrom(other: this) {\r\n super.copyFrom(other);\r\n this.vertexNormal = other.vertexNormal;\r\n this.vertexTangent = other.vertexTangent;\r\n }\r\n /** true if vertex normal attribute presents */\r\n get vertexNormal() {\r\n return this.featureUsed<boolean>(PBRSpecularGlossinessMaterial.FEATURE_VERTEX_NORMAL);\r\n }\r\n set vertexNormal(val) {\r\n this.useFeature(PBRSpecularGlossinessMaterial.FEATURE_VERTEX_NORMAL, !!val);\r\n }\r\n /** true if vertex normal attribute presents */\r\n get vertexTangent() {\r\n return this.featureUsed<boolean>(PBRSpecularGlossinessMaterial.FEATURE_VERTEX_TANGENT);\r\n }\r\n set vertexTangent(val) {\r\n this.useFeature(PBRSpecularGlossinessMaterial.FEATURE_VERTEX_TANGENT, !!val);\r\n }\r\n vertexShader(scope: PBFunctionScope) {\r\n super.vertexShader(scope);\r\n const pb = scope.$builder;\r\n const worldMatrix = ShaderHelper.getWorldMatrix(scope);\r\n scope.$l.oPos = ShaderHelper.resolveVertexPosition(scope);\r\n scope.$outputs.worldPos = pb.mul(worldMatrix, pb.vec4(scope.oPos, 1)).xyz;\r\n scope.$l.csPos = pb.mul(ShaderHelper.getViewProjectionMatrix(scope), pb.vec4(scope.$outputs.worldPos, 1));\r\n ShaderHelper.setClipSpacePosition(scope, scope.csPos);\r\n if (this.transmission) {\r\n scope.$outputs.screenUV = pb.add(pb.mul(pb.div(scope.csPos.xy, scope.csPos.w), 0.5), pb.vec2(0.5));\r\n scope.$outputs.modelScale = pb.vec3(\r\n pb.length(worldMatrix[0].xyz),\r\n pb.length(worldMatrix[1].xyz),\r\n pb.length(worldMatrix[2].xyz)\r\n );\r\n }\r\n if (this.vertexNormal) {\r\n scope.$l.oNorm = ShaderHelper.resolveVertexNormal(scope);\r\n scope.$outputs.wNorm = pb.mul(ShaderHelper.getNormalMatrix(scope), pb.vec4(scope.oNorm, 0)).xyz;\r\n if (this.vertexTangent) {\r\n scope.$l.oTangent = ShaderHelper.resolveVertexTangent(scope);\r\n scope.$outputs.wTangent = pb.mul(\r\n ShaderHelper.getNormalMatrix(scope),\r\n pb.vec4(scope.oTangent.xyz, 0)\r\n ).xyz;\r\n scope.$outputs.wBinormal = pb.mul(\r\n pb.cross(scope.$outputs.wNorm, scope.$outputs.wTangent),\r\n scope.oTangent.w\r\n );\r\n }\r\n }\r\n }\r\n fragmentShader(scope: PBFunctionScope) {\r\n super.fragmentShader(scope);\r\n const pb = scope.$builder;\r\n if (this.needFragmentColorInput()) {\r\n scope.$l.albedo = this.calculateAlbedoColor(scope);\r\n if (this.vertexColor) {\r\n scope.albedo = pb.mul(scope.albedo, this.getVertexColor(scope));\r\n }\r\n if (this.drawContext.renderPass!.type === RENDER_PASS_TYPE_LIGHT) {\r\n scope.$l.normalInfo = this.calculateNormalAndTBN(\r\n scope,\r\n scope.$inputs.worldPos,\r\n scope.$inputs.wNorm,\r\n scope.$inputs.wTangent,\r\n scope.$inputs.wBinormal\r\n );\r\n scope.$l.viewVec = this.calculateViewVector(scope, scope.$inputs.worldPos);\r\n if (\r\n this.drawContext.materialFlags &\r\n (MaterialVaryingFlags.SCENE_STORE_ROUGHNESS | MaterialVaryingFlags.SCENE_STORE_NORMAL)\r\n ) {\r\n scope.$l.outRoughness = pb.vec4();\r\n scope.$l.litColor = this.PBRLight(\r\n scope,\r\n scope.$inputs.worldPos,\r\n scope.normalInfo.normal,\r\n scope.viewVec,\r\n scope.albedo,\r\n scope.normalInfo.TBN,\r\n scope.outRoughness\r\n );\r\n /*\r\n scope.outRoughness = pb.vec4(\r\n pb.add(pb.mul(scope.normalInfo.normal, 0.5), pb.vec3(0.5)),\r\n scope.outRoughness.a\r\n );\r\n */\r\n this.outputFragmentColor(\r\n scope,\r\n scope.$inputs.worldPos,\r\n pb.vec4(scope.litColor, scope.albedo.a),\r\n scope.outRoughness,\r\n pb.vec4(pb.add(pb.mul(scope.normalInfo.normal, 0.5), pb.vec3(0.5)), 1)\r\n );\r\n } else {\r\n scope.$l.litColor = this.PBRLight(\r\n scope,\r\n scope.$inputs.worldPos,\r\n scope.normalInfo.normal,\r\n scope.viewVec,\r\n scope.albedo,\r\n scope.normalInfo.TBN\r\n );\r\n this.outputFragmentColor(scope, scope.$inputs.worldPos, pb.vec4(scope.litColor, scope.albedo.a));\r\n }\r\n } else {\r\n this.outputFragmentColor(scope, scope.$inputs.worldPos, scope.albedo);\r\n }\r\n } else {\r\n this.outputFragmentColor(scope, scope.$inputs.worldPos, null);\r\n }\r\n }\r\n}\r\n"],"names":["PBRSpecularGlossinessMaterial","applyMaterialMixins","MeshMaterial","mixinPBRSpecularGlossness","mixinVertexColor","FEATURE_VERTEX_NORMAL","defineFeature","FEATURE_VERTEX_TANGENT","useFeature","clone","other","copyFrom","supportsVoxelization","vertexNormal","vertexTangent","featureUsed","val","vertexShader","scope","pb","$builder","worldMatrix","ShaderHelper","getWorldMatrix","$l","oPos","resolveVertexPosition","$outputs","worldPos","mul","vec4","xyz","csPos","getViewProjectionMatrix","setClipSpacePosition","transmission","screenUV","add","div","xy","w","vec2","modelScale","vec3","length","oNorm","resolveVertexNormal","wNorm","getNormalMatrix","oTangent","resolveVertexTangent","wTangent","wBinormal","cross","fragmentShader","needFragmentColorInput","albedo","calculateAlbedoColor","vertexColor","getVertexColor","drawContext","renderPass","type","RENDER_PASS_TYPE_LIGHT","normalInfo","calculateNormalAndTBN","$inputs","viewVec","calculateViewVector","materialFlags","MaterialVaryingFlags","SCENE_STORE_ROUGHNESS","SCENE_STORE_NORMAL","outRoughness","litColor","PBRLight","normal","TBN","outputFragmentColor","a"],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { MeshMaterial } from './meshmaterial.js';
|
|
2
|
+
import { ShaderHelper } from './shader/helper.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Unlit material showing the scene's signed distance field where it is drawn:
|
|
6
|
+
* warm outside geometry, cool inside, isolines every
|
|
7
|
+
* {@link SDFDebugMaterial.isoSpacing} and a white line on the surface. On a
|
|
8
|
+
* horizontal plane it shows a slice of the field; on a mesh it shows the field
|
|
9
|
+
* on that surface. Magenta when the scene has no field for this draw (it is
|
|
10
|
+
* off, or the device is WebGL2).
|
|
11
|
+
*
|
|
12
|
+
* @public
|
|
13
|
+
*/ class SDFDebugMaterial extends MeshMaterial {
|
|
14
|
+
_isoSpacing;
|
|
15
|
+
constructor(){
|
|
16
|
+
super();
|
|
17
|
+
this._isoSpacing = 0.25;
|
|
18
|
+
this.cullMode = 'none';
|
|
19
|
+
}
|
|
20
|
+
/** World distance between isolines. */ get isoSpacing() {
|
|
21
|
+
return this._isoSpacing;
|
|
22
|
+
}
|
|
23
|
+
set isoSpacing(val) {
|
|
24
|
+
val = Math.max(1e-3, val);
|
|
25
|
+
if (val !== this._isoSpacing) {
|
|
26
|
+
this._isoSpacing = val;
|
|
27
|
+
this.uniformChanged();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
vertexShader(scope) {
|
|
31
|
+
super.vertexShader(scope);
|
|
32
|
+
const pb = scope.$builder;
|
|
33
|
+
scope.$l.oPos = ShaderHelper.resolveVertexPosition(scope);
|
|
34
|
+
scope.$outputs.worldPos = pb.mul(ShaderHelper.getWorldMatrix(scope), pb.vec4(scope.oPos, 1)).xyz;
|
|
35
|
+
ShaderHelper.setClipSpacePosition(scope, pb.mul(ShaderHelper.getViewProjectionMatrix(scope), pb.vec4(scope.$outputs.worldPos, 1)));
|
|
36
|
+
}
|
|
37
|
+
fragmentShader(scope) {
|
|
38
|
+
super.fragmentShader(scope);
|
|
39
|
+
const pb = scope.$builder;
|
|
40
|
+
if (!this.needFragmentColorInput()) {
|
|
41
|
+
this.outputFragmentColor(scope, scope.$inputs.worldPos, null);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const hasSDF = ShaderHelper.declareSceneSDF(pb.getGlobalScope(), this.drawContext, 2);
|
|
45
|
+
scope.isoSpacing = pb.float().uniform(2);
|
|
46
|
+
if (!hasSDF) {
|
|
47
|
+
this.outputFragmentColor(scope, scope.$inputs.worldPos, pb.vec4(1, 0, 1, 1));
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
scope.$l.d = ShaderHelper.sampleSceneSDF(scope, scope.$inputs.worldPos);
|
|
51
|
+
// Brighter near the surface, fading out over a few metres
|
|
52
|
+
scope.$l.fade = pb.exp(pb.neg(pb.mul(pb.abs(scope.d), 0.35)));
|
|
53
|
+
scope.$l.base = pb.mix(pb.mix(pb.vec3(0.05, 0.12, 0.35), pb.vec3(0.25, 0.6, 1), scope.fade), pb.mix(pb.vec3(0.3, 0.12, 0.02), pb.vec3(1, 0.62, 0.2), scope.fade), pb.step(0, scope.d));
|
|
54
|
+
// Isolines one pixel wide whatever the zoom, from the screen derivative
|
|
55
|
+
scope.$l.w = pb.max(pb.fwidth(scope.d), 1e-5);
|
|
56
|
+
scope.$l.t = pb.div(scope.d, scope.isoSpacing);
|
|
57
|
+
scope.$l.iso = pb.sub(1, pb.smoothStep(0, pb.div(pb.mul(scope.w, 1.5), scope.isoSpacing), pb.abs(pb.sub(pb.fract(pb.add(scope.t, 0.5)), 0.5))));
|
|
58
|
+
scope.$l.zero = pb.sub(1, pb.smoothStep(0, pb.mul(scope.w, 2.5), pb.abs(scope.d)));
|
|
59
|
+
scope.$l.color = pb.mix(pb.mul(scope.base, pb.sub(1, pb.mul(scope.iso, 0.6))), pb.vec3(1), scope.zero);
|
|
60
|
+
this.outputFragmentColor(scope, scope.$inputs.worldPos, pb.vec4(scope.color, 1));
|
|
61
|
+
}
|
|
62
|
+
applyUniformValues(bindGroup, ctx, pass) {
|
|
63
|
+
super.applyUniformValues(bindGroup, ctx, pass);
|
|
64
|
+
if (this.needFragmentColorInput(ctx)) {
|
|
65
|
+
bindGroup.setValue('isoSpacing', this._isoSpacing);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
applyUniforms(bindGroup, ctx, needUpdate, pass) {
|
|
69
|
+
super.applyUniforms(bindGroup, ctx, needUpdate, pass);
|
|
70
|
+
// Every frame: the clipmap windows and the dynamic instances move with the camera
|
|
71
|
+
if (this.needFragmentColorInput(ctx)) {
|
|
72
|
+
ShaderHelper.applySceneSDF(bindGroup, ctx);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export { SDFDebugMaterial };
|
|
78
|
+
//# sourceMappingURL=sdf_debug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdf_debug.js","sources":["../../src/material/sdf_debug.ts"],"sourcesContent":["import type { BindGroup, PBFunctionScope } from '@zephyr3d/device';\r\nimport { MeshMaterial } from './meshmaterial';\r\nimport { ShaderHelper } from './shader/helper';\r\nimport type { DrawContext } from '../render/drawable';\r\n\r\n/**\r\n * Unlit material showing the scene's signed distance field where it is drawn:\r\n * warm outside geometry, cool inside, isolines every\r\n * {@link SDFDebugMaterial.isoSpacing} and a white line on the surface. On a\r\n * horizontal plane it shows a slice of the field; on a mesh it shows the field\r\n * on that surface. Magenta when the scene has no field for this draw (it is\r\n * off, or the device is WebGL2).\r\n *\r\n * @public\r\n */\r\nexport class SDFDebugMaterial extends MeshMaterial {\r\n private _isoSpacing: number;\r\n constructor() {\r\n super();\r\n this._isoSpacing = 0.25;\r\n this.cullMode = 'none';\r\n }\r\n /** World distance between isolines. */\r\n get isoSpacing() {\r\n return this._isoSpacing;\r\n }\r\n set isoSpacing(val: number) {\r\n val = Math.max(1e-3, val);\r\n if (val !== this._isoSpacing) {\r\n this._isoSpacing = val;\r\n this.uniformChanged();\r\n }\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.$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 const pb = scope.$builder;\r\n if (!this.needFragmentColorInput()) {\r\n this.outputFragmentColor(scope, scope.$inputs.worldPos, null);\r\n return;\r\n }\r\n const hasSDF = ShaderHelper.declareSceneSDF(pb.getGlobalScope(), this.drawContext, 2);\r\n scope.isoSpacing = pb.float().uniform(2);\r\n if (!hasSDF) {\r\n this.outputFragmentColor(scope, scope.$inputs.worldPos, pb.vec4(1, 0, 1, 1));\r\n return;\r\n }\r\n scope.$l.d = ShaderHelper.sampleSceneSDF(scope, scope.$inputs.worldPos);\r\n // Brighter near the surface, fading out over a few metres\r\n scope.$l.fade = pb.exp(pb.neg(pb.mul(pb.abs(scope.d), 0.35)));\r\n scope.$l.base = pb.mix(\r\n pb.mix(pb.vec3(0.05, 0.12, 0.35), pb.vec3(0.25, 0.6, 1), scope.fade),\r\n pb.mix(pb.vec3(0.3, 0.12, 0.02), pb.vec3(1, 0.62, 0.2), scope.fade),\r\n pb.step(0, scope.d)\r\n );\r\n // Isolines one pixel wide whatever the zoom, from the screen derivative\r\n scope.$l.w = pb.max(pb.fwidth(scope.d), 1e-5);\r\n scope.$l.t = pb.div(scope.d, scope.isoSpacing);\r\n scope.$l.iso = pb.sub(\r\n 1,\r\n pb.smoothStep(\r\n 0,\r\n pb.div(pb.mul(scope.w, 1.5), scope.isoSpacing),\r\n pb.abs(pb.sub(pb.fract(pb.add(scope.t, 0.5)), 0.5))\r\n )\r\n );\r\n scope.$l.zero = pb.sub(1, pb.smoothStep(0, pb.mul(scope.w, 2.5), pb.abs(scope.d)));\r\n scope.$l.color = pb.mix(pb.mul(scope.base, pb.sub(1, pb.mul(scope.iso, 0.6))), pb.vec3(1), scope.zero);\r\n this.outputFragmentColor(scope, scope.$inputs.worldPos, pb.vec4(scope.color, 1));\r\n }\r\n applyUniformValues(bindGroup: BindGroup, ctx: DrawContext, pass: number) {\r\n super.applyUniformValues(bindGroup, ctx, pass);\r\n if (this.needFragmentColorInput(ctx)) {\r\n bindGroup.setValue('isoSpacing', this._isoSpacing);\r\n }\r\n }\r\n applyUniforms(bindGroup: BindGroup, ctx: DrawContext, needUpdate: boolean, pass: number) {\r\n super.applyUniforms(bindGroup, ctx, needUpdate, pass);\r\n // Every frame: the clipmap windows and the dynamic instances move with the camera\r\n if (this.needFragmentColorInput(ctx)) {\r\n ShaderHelper.applySceneSDF(bindGroup, ctx);\r\n }\r\n }\r\n}\r\n"],"names":["SDFDebugMaterial","MeshMaterial","_isoSpacing","cullMode","isoSpacing","val","Math","max","uniformChanged","vertexShader","scope","pb","$builder","$l","oPos","ShaderHelper","resolveVertexPosition","$outputs","worldPos","mul","getWorldMatrix","vec4","xyz","setClipSpacePosition","getViewProjectionMatrix","fragmentShader","needFragmentColorInput","outputFragmentColor","$inputs","hasSDF","declareSceneSDF","getGlobalScope","drawContext","float","uniform","d","sampleSceneSDF","fade","exp","neg","abs","base","mix","vec3","step","w","fwidth","t","div","iso","sub","smoothStep","fract","add","zero","color","applyUniformValues","bindGroup","ctx","pass","setValue","applyUniforms","needUpdate","applySceneSDF"],"mappings":"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"}
|