@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":"fbm_wavegenerator.js","sources":["../../src/render/fbm_wavegenerator.ts"],"sourcesContent":["import type { AABB, Immutable } from '@zephyr3d/base';\r\nimport { Disposable, Vector2 } from '@zephyr3d/base';\r\nimport type { WaveGenerator } from './wavegenerator';\r\nimport type { BindGroup, PBGlobalScope, PBInsideFunctionScope, PBShaderExp } from '@zephyr3d/device';\r\nimport { valueNoise } from '../shaders';\r\nimport { ShaderHelper } from '../material';\r\n\r\nconst MAX_NUM_OCTAVES = 16;\r\n\r\n/**\r\n * FBM wave generator.\r\n * @public\r\n */\r\nexport class FBMWaveGenerator extends Disposable implements WaveGenerator {\r\n private _version: number;\r\n private readonly _windVelocity: Vector2;\r\n private _numOctaves: number;\r\n private _amplitude: number;\r\n private _frequency: number;\r\n private readonly _lacunarity: number;\r\n private readonly _gain: number;\r\n /**\r\n * Creates a new Gerstner wave generator.\r\n */\r\n constructor() {\r\n super();\r\n this._version = 0;\r\n this._numOctaves = 4;\r\n this._windVelocity = new Vector2(0.1, 0);\r\n this._amplitude = 0.3;\r\n this._frequency = 3;\r\n this._lacunarity = 1.83;\r\n this._gain = 0.57;\r\n }\r\n clone() {\r\n const other = new FBMWaveGenerator();\r\n other.numOctaves = this.numOctaves;\r\n other.wind = this.wind;\r\n other.amplitude = this.amplitude;\r\n other.frequency = this.frequency;\r\n return other as this;\r\n }\r\n get version() {\r\n return this._version;\r\n }\r\n /** Number of octaves */\r\n get numOctaves() {\r\n return this._numOctaves;\r\n }\r\n set numOctaves(val) {\r\n if (val !== this.numOctaves) {\r\n this._numOctaves = val;\r\n this._version++;\r\n }\r\n }\r\n /** Wave amplitude */\r\n get amplitude() {\r\n return this._amplitude;\r\n }\r\n set amplitude(val) {\r\n if (val !== this._amplitude) {\r\n this._amplitude = val;\r\n this._version++;\r\n }\r\n }\r\n /** Wave frequency */\r\n get frequency() {\r\n return this._frequency;\r\n }\r\n set frequency(val) {\r\n if (val !== this._frequency) {\r\n this._frequency = val;\r\n this._version++;\r\n }\r\n }\r\n /** Wind velocity */\r\n get wind(): Immutable<Vector2> {\r\n return this._windVelocity;\r\n }\r\n set wind(val: Immutable<Vector2>) {\r\n if (!val.equalsTo(this._windVelocity)) {\r\n this._windVelocity.set(val);\r\n this._version++;\r\n }\r\n }\r\n /** @internal */\r\n private calcWaveNormal(\r\n scope: PBInsideFunctionScope,\r\n worldPos: PBShaderExp,\r\n time: PBShaderExp,\r\n windVelocity: PBShaderExp,\r\n amplitude: PBShaderExp,\r\n frequency: PBShaderExp,\r\n gain: PBShaderExp,\r\n lacunarity: PBShaderExp,\r\n numOctaves: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const funcName = 'calcWaveNormal';\r\n const that = this;\r\n pb.func(\r\n funcName,\r\n [\r\n pb.vec2('worldPos'),\r\n pb.float('time'),\r\n pb.vec2('windVelocity'),\r\n pb.float('amplitude'),\r\n pb.float('frequency'),\r\n pb.float('gain'),\r\n pb.float('lacunarity'),\r\n pb.int('numOctaves')\r\n ],\r\n function () {\r\n this.$l.epsilon = pb.float(0.1);\r\n this.$l.hr = that.calcWaveHeight(\r\n this,\r\n pb.add(this.worldPos, pb.vec2(this.epsilon, 0)),\r\n this.windVelocity,\r\n this.amplitude,\r\n this.frequency,\r\n this.gain,\r\n this.lacunarity,\r\n this.numOctaves\r\n );\r\n this.$l.hl = that.calcWaveHeight(\r\n this,\r\n pb.sub(this.worldPos, pb.vec2(this.epsilon, 0)),\r\n this.windVelocity,\r\n this.amplitude,\r\n this.frequency,\r\n this.gain,\r\n this.lacunarity,\r\n this.numOctaves\r\n );\r\n this.$l.hu = that.calcWaveHeight(\r\n this,\r\n pb.add(this.worldPos, pb.vec2(0, this.epsilon)),\r\n this.windVelocity,\r\n this.amplitude,\r\n this.frequency,\r\n this.gain,\r\n this.lacunarity,\r\n this.numOctaves\r\n );\r\n this.$l.hd = that.calcWaveHeight(\r\n this,\r\n pb.sub(this.worldPos, pb.vec2(0, this.epsilon)),\r\n this.windVelocity,\r\n this.amplitude,\r\n this.frequency,\r\n this.gain,\r\n this.lacunarity,\r\n this.numOctaves\r\n );\r\n this.$l.dHdx = pb.div(pb.sub(this.hr, this.hl), pb.mul(this.epsilon, 2));\r\n this.$l.dHdz = pb.div(pb.sub(this.hu, this.hd), pb.mul(this.epsilon, 2));\r\n this.$l.normal = pb.normalize(pb.vec3(pb.neg(this.dHdx), 1, pb.neg(this.dHdz)));\r\n this.$return(this.normal);\r\n }\r\n );\r\n return scope[funcName](\r\n worldPos,\r\n time,\r\n windVelocity,\r\n amplitude,\r\n frequency,\r\n gain,\r\n lacunarity,\r\n numOctaves\r\n ) as PBShaderExp;\r\n }\r\n /** @internal */\r\n private calcWaveHeight(\r\n scope: PBInsideFunctionScope,\r\n worldPos: PBShaderExp,\r\n windVelocity: PBShaderExp,\r\n amplitude: PBShaderExp,\r\n frequency: PBShaderExp,\r\n gain: PBShaderExp,\r\n lacunarity: PBShaderExp,\r\n numOctaves: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const funcName = 'calcWaveHeight';\r\n const that = this;\r\n pb.func(\r\n funcName,\r\n [\r\n pb.vec2('worldPos'),\r\n pb.vec2('windVelocity'),\r\n pb.float('amplitude'),\r\n pb.float('frequency'),\r\n pb.float('gain'),\r\n pb.float('lacunarity'),\r\n pb.int('numOctaves')\r\n ],\r\n function () {\r\n this.$l.windOffset = pb.mul(this.windVelocity, ShaderHelper.getElapsedTime(this));\r\n this.$l.height = that.fbm(\r\n this,\r\n pb.add(pb.mul(this.worldPos, 0.01), this.windOffset),\r\n this.frequency,\r\n this.gain,\r\n this.lacunarity,\r\n this.numOctaves\r\n );\r\n this.height = pb.add(\r\n this.height,\r\n pb.mul(\r\n 0.3,\r\n that.fbm(\r\n this,\r\n pb.add(pb.mul(this.worldPos, 0.05), pb.mul(this.windOffset, 1.5)),\r\n this.frequency,\r\n this.gain,\r\n this.lacunarity,\r\n this.numOctaves\r\n )\r\n )\r\n );\r\n this.height = pb.add(\r\n this.height,\r\n pb.mul(\r\n 0.1,\r\n that.fbm(\r\n this,\r\n pb.add(pb.mul(this.worldPos, 0.1), pb.mul(this.windOffset, 2)),\r\n this.frequency,\r\n this.gain,\r\n this.lacunarity,\r\n this.numOctaves\r\n )\r\n )\r\n );\r\n this.$return(pb.mul(this.height, this.amplitude));\r\n }\r\n );\r\n return scope[funcName](\r\n worldPos,\r\n windVelocity,\r\n amplitude,\r\n frequency,\r\n gain,\r\n lacunarity,\r\n numOctaves\r\n ) as PBShaderExp;\r\n }\r\n /** @internal */\r\n private fbm(\r\n scope: PBInsideFunctionScope,\r\n st: PBShaderExp,\r\n frequency: PBShaderExp,\r\n gain: PBShaderExp,\r\n lacunarity: PBShaderExp,\r\n numOctaves: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const funcName = 'FBM';\r\n pb.func(\r\n funcName,\r\n [pb.vec2('st'), pb.float('frequency'), pb.float('gain'), pb.float('lacunarity'), pb.int('numOctaves')],\r\n function () {\r\n this.$l.m2 = pb.mat2(0.8, 0.6, -0.6, 0.8);\r\n this.$l.p = this.st; //pb.mul(this.st, 0.05);\r\n this.$l.a = pb.float(0);\r\n this.$l.b = pb.float(1);\r\n this.$l.c = pb.float(0);\r\n this.$for(\r\n pb.int('i'),\r\n 0,\r\n pb.getDevice().type === 'webgl' ? MAX_NUM_OCTAVES : this.numOctaves,\r\n function () {\r\n if (pb.getDevice().type === 'webgl') {\r\n this.$if(pb.greaterThanEqual(this.i, this.numOctaves), function () {\r\n this.$break();\r\n });\r\n }\r\n this.$l.n = pb.sub(valueNoise(this, this.p), 0.5);\r\n this.a = pb.add(this.a, pb.mul(this.n, this.b));\r\n this.c = pb.add(this.c, this.b);\r\n this.b = pb.mul(this.b, this.gain);\r\n this.p = pb.mul(this.m2, this.p, this.frequency);\r\n }\r\n );\r\n this.$return(pb.div(this.a, this.c));\r\n }\r\n );\r\n return scope[funcName](st, frequency, gain, lacunarity, numOctaves) as PBShaderExp;\r\n }\r\n /** {@inheritDoc WaveGenerator.update} */\r\n update() {}\r\n /** {@inheritDoc WaveGenerator.needUpdate} */\r\n needUpdate() {\r\n return false;\r\n }\r\n /** {@inheritDoc WaveGenerator.calcClipmapTileAABB} */\r\n calcClipmapTileAABB(minX: number, maxX: number, minZ: number, maxZ: number, y: number, outAABB: AABB) {\r\n const maxHeight = 1.5 * this._amplitude;\r\n outAABB.minPoint.setXYZ(minX, y - maxHeight, minZ);\r\n outAABB.maxPoint.setXYZ(maxX, y + maxHeight, maxZ);\r\n }\r\n /** {@inheritDoc WaveGenerator.calcFragmentNormal} */\r\n calcFragmentNormal(scope: PBInsideFunctionScope, xz: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const that = this;\r\n pb.func('calcFragmentNormal', [pb.vec2('xz')], function () {\r\n this.$l.normal = that.calcWaveNormal(\r\n this,\r\n this.xz,\r\n ShaderHelper.getElapsedTime(this),\r\n this.windVelocity,\r\n this.waveAmplitude,\r\n this.waveFrequency,\r\n this.waveGain,\r\n this.waveLacunarity,\r\n this.numOctaves\r\n );\r\n this.$return(this.normal);\r\n });\r\n return scope.calcFragmentNormal(xz) as PBShaderExp;\r\n }\r\n /** {@inheritDoc WaveGenerator.calcFragmentNormalAndFoam} */\r\n calcFragmentNormalAndFoam(scope: PBInsideFunctionScope, xz: PBShaderExp) {\r\n return scope.$builder.vec4(this.calcFragmentNormal(scope, xz), 0);\r\n }\r\n /** {@inheritDoc WaveGenerator.setupUniforms} */\r\n setupUniforms(scope: PBGlobalScope, uniformGroup: number) {\r\n const pb = scope.$builder;\r\n scope.numOctaves = pb.int().uniform(uniformGroup);\r\n scope.windVelocity = pb.vec2().uniform(uniformGroup);\r\n scope.waveAmplitude = pb.float().uniform(uniformGroup);\r\n scope.waveFrequency = pb.float().uniform(uniformGroup);\r\n scope.waveGain = pb.float().uniform(uniformGroup);\r\n scope.waveLacunarity = pb.float().uniform(uniformGroup);\r\n }\r\n /** @internal */\r\n private calcNormalAndPos(\r\n scope: PBInsideFunctionScope,\r\n inPos: PBShaderExp,\r\n outPos: PBShaderExp,\r\n outNormal: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const that = this;\r\n pb.func(\r\n 'calcPositionAndNormal',\r\n [pb.vec3('inPos'), pb.vec3('outPos').out(), pb.vec3('outNormal').out()],\r\n function () {\r\n this.outNormal = that.calcWaveNormal(\r\n this,\r\n this.inPos.xz,\r\n ShaderHelper.getElapsedTime(this),\r\n this.windVelocity,\r\n this.waveAmplitude,\r\n this.waveFrequency,\r\n this.waveGain,\r\n this.waveLacunarity,\r\n this.numOctaves\r\n );\r\n this.$l.h = that.calcWaveHeight(\r\n this,\r\n this.inPos.xz,\r\n this.windVelocity,\r\n this.waveAmplitude,\r\n this.waveFrequency,\r\n this.waveGain,\r\n this.waveLacunarity,\r\n this.numOctaves\r\n );\r\n this.outPos = pb.add(this.inPos, pb.vec3(0, this.h, 0));\r\n }\r\n );\r\n scope.calcPositionAndNormal(inPos, outPos, outNormal);\r\n }\r\n /** {@inheritDoc WaveGenerator.calcVertexPositionAndNormal} */\r\n calcVertexPositionAndNormal(\r\n scope: PBInsideFunctionScope,\r\n inPos: PBShaderExp,\r\n outPos: PBShaderExp,\r\n outNormal: PBShaderExp\r\n ) {\r\n this.calcNormalAndPos(scope, inPos, outPos, outNormal);\r\n }\r\n /** {@inheritDoc WaveGenerator.applyWaterBindGroup} */\r\n applyWaterBindGroup(bindGroup: BindGroup) {\r\n bindGroup.setValue('numOctaves', this._numOctaves);\r\n bindGroup.setValue('windVelocity', this._windVelocity);\r\n bindGroup.setValue('waveAmplitude', this._amplitude);\r\n bindGroup.setValue('waveFrequency', this._frequency);\r\n bindGroup.setValue('waveGain', this._gain);\r\n bindGroup.setValue('waveLacunarity', this._lacunarity);\r\n }\r\n /** {@inheritDoc WaveGenerator.isOk} */\r\n isOk() {\r\n return true;\r\n }\r\n /** {@inheritDoc WaveGenerator.getHash} */\r\n getHash() {\r\n return 'FBMWaveGenerator';\r\n }\r\n}\r\n"],"names":["MAX_NUM_OCTAVES","FBMWaveGenerator","Disposable","_version","_windVelocity","_numOctaves","_amplitude","_frequency","_lacunarity","_gain","Vector2","clone","other","numOctaves","wind","amplitude","frequency","version","val","equalsTo","set","scope","worldPos","time","windVelocity","gain","lacunarity","pb","$builder","funcName","that","func","vec2","float","int","$l","epsilon","hr","calcWaveHeight","add","hl","sub","hu","hd","dHdx","div","mul","dHdz","normal","normalize","vec3","neg","$return","windOffset","ShaderHelper","getElapsedTime","height","fbm","st","m2","mat2","p","a","b","c","$for","getDevice","type","$if","greaterThanEqual","i","$break","n","valueNoise","update","needUpdate","calcClipmapTileAABB","minX","maxX","minZ","maxZ","y","outAABB","maxHeight","minPoint","setXYZ","maxPoint","calcFragmentNormal","xz","calcWaveNormal","waveAmplitude","waveFrequency","waveGain","waveLacunarity","calcFragmentNormalAndFoam","vec4","setupUniforms","uniformGroup","uniform","calcNormalAndPos","inPos","outPos","outNormal","out","h","calcPositionAndNormal","calcVertexPositionAndNormal","applyWaterBindGroup","bindGroup","setValue","isOk","getHash"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fbm_wavegenerator.js","sources":["../../src/render/fbm_wavegenerator.ts"],"sourcesContent":["import type { AABB, Immutable } from '@zephyr3d/base';\r\nimport { Disposable, Vector2 } from '@zephyr3d/base';\r\nimport type { WaveGenerator } from './wavegenerator';\r\nimport type { BindGroup, PBGlobalScope, PBInsideFunctionScope, PBShaderExp } from '@zephyr3d/device';\r\nimport { valueNoise } from '../shaders';\r\nimport { ShaderHelper } from '../material';\r\n\r\n/**\r\n * FBM wave generator.\r\n * @public\r\n */\r\nexport class FBMWaveGenerator extends Disposable implements WaveGenerator {\r\n private _version: number;\r\n private readonly _windVelocity: Vector2;\r\n private _numOctaves: number;\r\n private _amplitude: number;\r\n private _frequency: number;\r\n private readonly _lacunarity: number;\r\n private readonly _gain: number;\r\n /**\r\n * Creates a new FBM wave generator.\r\n */\r\n constructor() {\r\n super();\r\n this._version = 0;\r\n this._numOctaves = 4;\r\n this._windVelocity = new Vector2(0.1, 0);\r\n this._amplitude = 0.3;\r\n this._frequency = 3;\r\n this._lacunarity = 1.83;\r\n this._gain = 0.57;\r\n }\r\n clone() {\r\n const other = new FBMWaveGenerator();\r\n other.numOctaves = this.numOctaves;\r\n other.wind = this.wind;\r\n other.amplitude = this.amplitude;\r\n other.frequency = this.frequency;\r\n return other as this;\r\n }\r\n get version() {\r\n return this._version;\r\n }\r\n /** Number of octaves */\r\n get numOctaves() {\r\n return this._numOctaves;\r\n }\r\n set numOctaves(val) {\r\n if (val !== this.numOctaves) {\r\n this._numOctaves = val;\r\n this._version++;\r\n }\r\n }\r\n /** Wave amplitude */\r\n get amplitude() {\r\n return this._amplitude;\r\n }\r\n set amplitude(val) {\r\n if (val !== this._amplitude) {\r\n this._amplitude = val;\r\n this._version++;\r\n }\r\n }\r\n /** Wave frequency */\r\n get frequency() {\r\n return this._frequency;\r\n }\r\n set frequency(val) {\r\n if (val !== this._frequency) {\r\n this._frequency = val;\r\n this._version++;\r\n }\r\n }\r\n /** Wind velocity */\r\n get wind(): Immutable<Vector2> {\r\n return this._windVelocity;\r\n }\r\n set wind(val: Immutable<Vector2>) {\r\n if (!val.equalsTo(this._windVelocity)) {\r\n this._windVelocity.set(val);\r\n this._version++;\r\n }\r\n }\r\n /** @internal */\r\n private calcWaveNormal(\r\n scope: PBInsideFunctionScope,\r\n worldPos: PBShaderExp,\r\n time: PBShaderExp,\r\n windVelocity: PBShaderExp,\r\n amplitude: PBShaderExp,\r\n frequency: PBShaderExp,\r\n gain: PBShaderExp,\r\n lacunarity: PBShaderExp,\r\n numOctaves: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const funcName = 'calcWaveNormal';\r\n const that = this;\r\n pb.func(\r\n funcName,\r\n [\r\n pb.vec2('worldPos'),\r\n pb.float('time'),\r\n pb.vec2('windVelocity'),\r\n pb.float('amplitude'),\r\n pb.float('frequency'),\r\n pb.float('gain'),\r\n pb.float('lacunarity'),\r\n pb.int('numOctaves')\r\n ],\r\n function () {\r\n this.$l.epsilon = pb.float(0.1);\r\n this.$l.hr = that.calcWaveHeight(\r\n this,\r\n pb.add(this.worldPos, pb.vec2(this.epsilon, 0)),\r\n this.windVelocity,\r\n this.amplitude,\r\n this.frequency,\r\n this.gain,\r\n this.lacunarity,\r\n this.numOctaves\r\n );\r\n this.$l.hl = that.calcWaveHeight(\r\n this,\r\n pb.sub(this.worldPos, pb.vec2(this.epsilon, 0)),\r\n this.windVelocity,\r\n this.amplitude,\r\n this.frequency,\r\n this.gain,\r\n this.lacunarity,\r\n this.numOctaves\r\n );\r\n this.$l.hu = that.calcWaveHeight(\r\n this,\r\n pb.add(this.worldPos, pb.vec2(0, this.epsilon)),\r\n this.windVelocity,\r\n this.amplitude,\r\n this.frequency,\r\n this.gain,\r\n this.lacunarity,\r\n this.numOctaves\r\n );\r\n this.$l.hd = that.calcWaveHeight(\r\n this,\r\n pb.sub(this.worldPos, pb.vec2(0, this.epsilon)),\r\n this.windVelocity,\r\n this.amplitude,\r\n this.frequency,\r\n this.gain,\r\n this.lacunarity,\r\n this.numOctaves\r\n );\r\n this.$l.dHdx = pb.div(pb.sub(this.hr, this.hl), pb.mul(this.epsilon, 2));\r\n this.$l.dHdz = pb.div(pb.sub(this.hu, this.hd), pb.mul(this.epsilon, 2));\r\n this.$l.normal = pb.normalize(pb.vec3(pb.neg(this.dHdx), 1, pb.neg(this.dHdz)));\r\n this.$return(this.normal);\r\n }\r\n );\r\n return scope[funcName](\r\n worldPos,\r\n time,\r\n windVelocity,\r\n amplitude,\r\n frequency,\r\n gain,\r\n lacunarity,\r\n numOctaves\r\n ) as PBShaderExp;\r\n }\r\n /** @internal */\r\n private calcWaveHeight(\r\n scope: PBInsideFunctionScope,\r\n worldPos: PBShaderExp,\r\n windVelocity: PBShaderExp,\r\n amplitude: PBShaderExp,\r\n frequency: PBShaderExp,\r\n gain: PBShaderExp,\r\n lacunarity: PBShaderExp,\r\n numOctaves: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const funcName = 'calcWaveHeight';\r\n const that = this;\r\n pb.func(\r\n funcName,\r\n [\r\n pb.vec2('worldPos'),\r\n pb.vec2('windVelocity'),\r\n pb.float('amplitude'),\r\n pb.float('frequency'),\r\n pb.float('gain'),\r\n pb.float('lacunarity'),\r\n pb.int('numOctaves')\r\n ],\r\n function () {\r\n this.$l.windOffset = pb.mul(this.windVelocity, ShaderHelper.getElapsedTime(this));\r\n this.$l.height = that.fbm(\r\n this,\r\n pb.add(pb.mul(this.worldPos, 0.01), this.windOffset),\r\n this.frequency,\r\n this.gain,\r\n this.lacunarity,\r\n this.numOctaves\r\n );\r\n this.height = pb.add(\r\n this.height,\r\n pb.mul(\r\n 0.3,\r\n that.fbm(\r\n this,\r\n pb.add(pb.mul(this.worldPos, 0.05), pb.mul(this.windOffset, 1.5)),\r\n this.frequency,\r\n this.gain,\r\n this.lacunarity,\r\n this.numOctaves\r\n )\r\n )\r\n );\r\n this.height = pb.add(\r\n this.height,\r\n pb.mul(\r\n 0.1,\r\n that.fbm(\r\n this,\r\n pb.add(pb.mul(this.worldPos, 0.1), pb.mul(this.windOffset, 2)),\r\n this.frequency,\r\n this.gain,\r\n this.lacunarity,\r\n this.numOctaves\r\n )\r\n )\r\n );\r\n this.$return(pb.mul(this.height, this.amplitude));\r\n }\r\n );\r\n return scope[funcName](\r\n worldPos,\r\n windVelocity,\r\n amplitude,\r\n frequency,\r\n gain,\r\n lacunarity,\r\n numOctaves\r\n ) as PBShaderExp;\r\n }\r\n /** @internal */\r\n private fbm(\r\n scope: PBInsideFunctionScope,\r\n st: PBShaderExp,\r\n frequency: PBShaderExp,\r\n gain: PBShaderExp,\r\n lacunarity: PBShaderExp,\r\n numOctaves: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const funcName = 'FBM';\r\n pb.func(\r\n funcName,\r\n [pb.vec2('st'), pb.float('frequency'), pb.float('gain'), pb.float('lacunarity'), pb.int('numOctaves')],\r\n function () {\r\n this.$l.m2 = pb.mat2(0.8, 0.6, -0.6, 0.8);\r\n this.$l.p = this.st; //pb.mul(this.st, 0.05);\r\n this.$l.a = pb.float(0);\r\n this.$l.b = pb.float(1);\r\n this.$l.c = pb.float(0);\r\n this.$for(pb.int('i'), 0, this.numOctaves, function () {\r\n this.$l.n = pb.sub(valueNoise(this, this.p), 0.5);\r\n this.a = pb.add(this.a, pb.mul(this.n, this.b));\r\n this.c = pb.add(this.c, this.b);\r\n this.b = pb.mul(this.b, this.gain);\r\n this.p = pb.mul(this.m2, this.p, this.frequency);\r\n });\r\n this.$return(pb.div(this.a, this.c));\r\n }\r\n );\r\n return scope[funcName](st, frequency, gain, lacunarity, numOctaves) as PBShaderExp;\r\n }\r\n /** {@inheritDoc WaveGenerator.update} */\r\n update() {}\r\n /** {@inheritDoc WaveGenerator.needUpdate} */\r\n needUpdate() {\r\n return false;\r\n }\r\n /** {@inheritDoc WaveGenerator.calcClipmapTileAABB} */\r\n calcClipmapTileAABB(minX: number, maxX: number, minZ: number, maxZ: number, y: number, outAABB: AABB) {\r\n const maxHeight = 1.5 * this._amplitude;\r\n outAABB.minPoint.setXYZ(minX, y - maxHeight, minZ);\r\n outAABB.maxPoint.setXYZ(maxX, y + maxHeight, maxZ);\r\n }\r\n /** {@inheritDoc WaveGenerator.calcFragmentNormal} */\r\n calcFragmentNormal(scope: PBInsideFunctionScope, xz: PBShaderExp, _vertexNormal: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const that = this;\r\n pb.func('calcFragmentNormal', [pb.vec2('xz')], function () {\r\n this.$l.normal = that.calcWaveNormal(\r\n this,\r\n this.xz,\r\n ShaderHelper.getElapsedTime(this),\r\n this.windVelocity,\r\n this.waveAmplitude,\r\n this.waveFrequency,\r\n this.waveGain,\r\n this.waveLacunarity,\r\n this.numOctaves\r\n );\r\n this.$return(this.normal);\r\n });\r\n return scope.calcFragmentNormal(xz) as PBShaderExp;\r\n }\r\n /** {@inheritDoc WaveGenerator.calcFragmentNormalAndFoam} */\r\n calcFragmentNormalAndFoam(scope: PBInsideFunctionScope, xz: PBShaderExp, _vertexNormal: PBShaderExp) {\r\n return scope.$builder.vec4(this.calcFragmentNormal(scope, xz, _vertexNormal), 0);\r\n }\r\n /** {@inheritDoc WaveGenerator.setupUniforms} */\r\n setupUniforms(scope: PBGlobalScope, uniformGroup: number) {\r\n const pb = scope.$builder;\r\n scope.numOctaves = pb.int().uniform(uniformGroup);\r\n scope.windVelocity = pb.vec2().uniform(uniformGroup);\r\n scope.waveAmplitude = pb.float().uniform(uniformGroup);\r\n scope.waveFrequency = pb.float().uniform(uniformGroup);\r\n scope.waveGain = pb.float().uniform(uniformGroup);\r\n scope.waveLacunarity = pb.float().uniform(uniformGroup);\r\n }\r\n /** @internal */\r\n private calcNormalAndPos(\r\n scope: PBInsideFunctionScope,\r\n inPos: PBShaderExp,\r\n outPos: PBShaderExp,\r\n outNormal: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const that = this;\r\n pb.func(\r\n 'calcPositionAndNormal',\r\n [pb.vec3('inPos'), pb.vec3('outPos').out(), pb.vec3('outNormal').out()],\r\n function () {\r\n this.outNormal = that.calcWaveNormal(\r\n this,\r\n this.inPos.xz,\r\n ShaderHelper.getElapsedTime(this),\r\n this.windVelocity,\r\n this.waveAmplitude,\r\n this.waveFrequency,\r\n this.waveGain,\r\n this.waveLacunarity,\r\n this.numOctaves\r\n );\r\n this.$l.h = that.calcWaveHeight(\r\n this,\r\n this.inPos.xz,\r\n this.windVelocity,\r\n this.waveAmplitude,\r\n this.waveFrequency,\r\n this.waveGain,\r\n this.waveLacunarity,\r\n this.numOctaves\r\n );\r\n this.outPos = pb.add(this.inPos, pb.vec3(0, this.h, 0));\r\n }\r\n );\r\n scope.calcPositionAndNormal(inPos, outPos, outNormal);\r\n }\r\n /** {@inheritDoc WaveGenerator.calcVertexPositionAndNormal} */\r\n calcVertexPositionAndNormal(\r\n scope: PBInsideFunctionScope,\r\n inPos: PBShaderExp,\r\n outPos: PBShaderExp,\r\n outNormal: PBShaderExp\r\n ) {\r\n this.calcNormalAndPos(scope, inPos, outPos, outNormal);\r\n }\r\n /** {@inheritDoc WaveGenerator.applyWaterBindGroup} */\r\n applyWaterBindGroup(bindGroup: BindGroup) {\r\n bindGroup.setValue('numOctaves', this._numOctaves);\r\n bindGroup.setValue('windVelocity', this._windVelocity);\r\n bindGroup.setValue('waveAmplitude', this._amplitude);\r\n bindGroup.setValue('waveFrequency', this._frequency);\r\n bindGroup.setValue('waveGain', this._gain);\r\n bindGroup.setValue('waveLacunarity', this._lacunarity);\r\n }\r\n /** {@inheritDoc WaveGenerator.isOk} */\r\n isOk() {\r\n return true;\r\n }\r\n /** {@inheritDoc WaveGenerator.getHash} */\r\n getHash() {\r\n return 'FBMWaveGenerator';\r\n }\r\n}\r\n"],"names":["FBMWaveGenerator","Disposable","_version","_windVelocity","_numOctaves","_amplitude","_frequency","_lacunarity","_gain","Vector2","clone","other","numOctaves","wind","amplitude","frequency","version","val","equalsTo","set","scope","worldPos","time","windVelocity","gain","lacunarity","pb","$builder","funcName","that","func","vec2","float","int","$l","epsilon","hr","calcWaveHeight","add","hl","sub","hu","hd","dHdx","div","mul","dHdz","normal","normalize","vec3","neg","$return","windOffset","ShaderHelper","getElapsedTime","height","fbm","st","m2","mat2","p","a","b","c","$for","n","valueNoise","update","needUpdate","calcClipmapTileAABB","minX","maxX","minZ","maxZ","y","outAABB","maxHeight","minPoint","setXYZ","maxPoint","calcFragmentNormal","xz","_vertexNormal","calcWaveNormal","waveAmplitude","waveFrequency","waveGain","waveLacunarity","calcFragmentNormalAndFoam","vec4","setupUniforms","uniformGroup","uniform","calcNormalAndPos","inPos","outPos","outNormal","out","h","calcPositionAndNormal","calcVertexPositionAndNormal","applyWaterBindGroup","bindGroup","setValue","isOk","getHash"],"mappings":"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"}
|