@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
|
@@ -26,49 +26,23 @@ function createGGXLUT(size) {
|
|
|
26
26
|
fragment (pb) {
|
|
27
27
|
this.$outputs.color = pb.vec4();
|
|
28
28
|
const SAMPLE_COUNT = 1024;
|
|
29
|
-
|
|
30
|
-
pb.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
});
|
|
47
|
-
pb.func('hammersley2d', [
|
|
48
|
-
pb.int('i'),
|
|
49
|
-
pb.int('N')
|
|
50
|
-
], function() {
|
|
51
|
-
this.$return(pb.vec2(pb.div(pb.float(this.i), pb.float(this.N)), this.radicalInverse_VdC(this.i)));
|
|
52
|
-
});
|
|
53
|
-
} else {
|
|
54
|
-
pb.func('radicalInverse_VdC', [
|
|
55
|
-
pb.uint('bits')
|
|
56
|
-
], function() {
|
|
57
|
-
this.$l.n = this.bits;
|
|
58
|
-
this.n = pb.compOr(pb.sal(this.n, 16), pb.sar(this.n, 16));
|
|
59
|
-
this.n = pb.compOr(pb.sal(pb.compAnd(this.n, 0x55555555), 1), pb.sar(pb.compAnd(this.n, 0xaaaaaaaa), 1));
|
|
60
|
-
this.n = pb.compOr(pb.sal(pb.compAnd(this.n, 0x33333333), 2), pb.sar(pb.compAnd(this.n, 0xcccccccc), 2));
|
|
61
|
-
this.n = pb.compOr(pb.sal(pb.compAnd(this.n, 0x0f0f0f0f), 4), pb.sar(pb.compAnd(this.n, 0xf0f0f0f0), 4));
|
|
62
|
-
this.n = pb.compOr(pb.sal(pb.compAnd(this.n, 0x00ff00ff), 8), pb.sar(pb.compAnd(this.n, 0xff00ff00), 8));
|
|
63
|
-
this.$return(pb.mul(pb.float(this.n), 2.3283064365386963e-10));
|
|
64
|
-
});
|
|
65
|
-
pb.func('hammersley2d', [
|
|
66
|
-
pb.int('i'),
|
|
67
|
-
pb.int('N')
|
|
68
|
-
], function() {
|
|
69
|
-
this.$return(pb.vec2(pb.div(pb.float(this.i), pb.float(this.N)), this.radicalInverse_VdC(pb.uint(this.i))));
|
|
70
|
-
});
|
|
71
|
-
}
|
|
29
|
+
pb.func('radicalInverse_VdC', [
|
|
30
|
+
pb.uint('bits')
|
|
31
|
+
], function() {
|
|
32
|
+
this.$l.n = this.bits;
|
|
33
|
+
this.n = pb.compOr(pb.sal(this.n, 16), pb.sar(this.n, 16));
|
|
34
|
+
this.n = pb.compOr(pb.sal(pb.compAnd(this.n, 0x55555555), 1), pb.sar(pb.compAnd(this.n, 0xaaaaaaaa), 1));
|
|
35
|
+
this.n = pb.compOr(pb.sal(pb.compAnd(this.n, 0x33333333), 2), pb.sar(pb.compAnd(this.n, 0xcccccccc), 2));
|
|
36
|
+
this.n = pb.compOr(pb.sal(pb.compAnd(this.n, 0x0f0f0f0f), 4), pb.sar(pb.compAnd(this.n, 0xf0f0f0f0), 4));
|
|
37
|
+
this.n = pb.compOr(pb.sal(pb.compAnd(this.n, 0x00ff00ff), 8), pb.sar(pb.compAnd(this.n, 0xff00ff00), 8));
|
|
38
|
+
this.$return(pb.mul(pb.float(this.n), 2.3283064365386963e-10));
|
|
39
|
+
});
|
|
40
|
+
pb.func('hammersley2d', [
|
|
41
|
+
pb.int('i'),
|
|
42
|
+
pb.int('N')
|
|
43
|
+
], function() {
|
|
44
|
+
this.$return(pb.vec2(pb.div(pb.float(this.i), pb.float(this.N)), this.radicalInverse_VdC(pb.uint(this.i))));
|
|
45
|
+
});
|
|
72
46
|
pb.func('generateTBN', [
|
|
73
47
|
pb.vec3('normal')
|
|
74
48
|
], function() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ggxlut.js","sources":["../../../src/utility/textures/ggxlut.ts"],"sourcesContent":["import type { Texture2D } from '@zephyr3d/device';\r\nimport { getDevice } from '../../app/api';\r\n\r\nconst ggxLut: Map<number, Texture2D> = new Map();\r\nexport function getGGXLUT(size: number): Texture2D {\r\n let lut = ggxLut.get(size);\r\n if (!lut) {\r\n lut = createGGXLUT(size);\r\n ggxLut.set(size, lut);\r\n }\r\n return lut;\r\n}\r\nfunction createGGXLUT(size: number) {\r\n const device = getDevice();\r\n const program = device.buildRenderProgram({\r\n vertex(pb) {\r\n this.$inputs.pos = pb.vec2().attrib('position');\r\n this.$outputs.uv = pb.vec2();\r\n pb.main(function () {\r\n this.$builtins.position = pb.vec4(this.$inputs.pos, 0, 1);\r\n this.$outputs.uv = pb.add(pb.mul(this.$inputs.pos.xy, 0.5), pb.vec2(0.5));\r\n if (device.type === 'webgpu') {\r\n this.$builtins.position.y = pb.neg(this.$builtins.position.y);\r\n }\r\n });\r\n },\r\n fragment(pb) {\r\n this.$outputs.color = pb.vec4();\r\n const SAMPLE_COUNT = 1024;\r\n if (device.type === 'webgl') {\r\n pb.func('radicalInverse_VdC', [pb.int('bits')], function () {\r\n this.$l.rand = pb.float(0);\r\n this.$l.denom = pb.float(1);\r\n this.$l.invBase = pb.float(0.5);\r\n this.$l.n = this.bits;\r\n this.$for(pb.int('i'), 0, 32, function () {\r\n this.denom = pb.mul(this.denom, 2);\r\n this.rand = pb.add(this.rand, pb.div(pb.mod(pb.float(this.n), 2), this.denom));\r\n this.n = pb.div(this.n, 2);\r\n this.$if(pb.equal(this.n, 0), function () {\r\n this.$break();\r\n });\r\n });\r\n this.$return(this.rand);\r\n });\r\n pb.func('hammersley2d', [pb.int('i'), pb.int('N')], function () {\r\n this.$return(pb.vec2(pb.div(pb.float(this.i), pb.float(this.N)), this.radicalInverse_VdC(this.i)));\r\n });\r\n } else {\r\n pb.func('radicalInverse_VdC', [pb.uint('bits')], function () {\r\n this.$l.n = this.bits;\r\n this.n = pb.compOr(pb.sal(this.n, 16), pb.sar(this.n, 16));\r\n this.n = pb.compOr(\r\n pb.sal(pb.compAnd(this.n, 0x55555555), 1),\r\n pb.sar(pb.compAnd(this.n, 0xaaaaaaaa), 1)\r\n );\r\n this.n = pb.compOr(\r\n pb.sal(pb.compAnd(this.n, 0x33333333), 2),\r\n pb.sar(pb.compAnd(this.n, 0xcccccccc), 2)\r\n );\r\n this.n = pb.compOr(\r\n pb.sal(pb.compAnd(this.n, 0x0f0f0f0f), 4),\r\n pb.sar(pb.compAnd(this.n, 0xf0f0f0f0), 4)\r\n );\r\n this.n = pb.compOr(\r\n pb.sal(pb.compAnd(this.n, 0x00ff00ff), 8),\r\n pb.sar(pb.compAnd(this.n, 0xff00ff00), 8)\r\n );\r\n this.$return(pb.mul(pb.float(this.n), 2.3283064365386963e-10));\r\n });\r\n pb.func('hammersley2d', [pb.int('i'), pb.int('N')], function () {\r\n this.$return(\r\n pb.vec2(pb.div(pb.float(this.i), pb.float(this.N)), this.radicalInverse_VdC(pb.uint(this.i)))\r\n );\r\n });\r\n }\r\n pb.func('generateTBN', [pb.vec3('normal')], function () {\r\n this.$l.bitangent = pb.vec3(0, 1, 0);\r\n this.$l.NoU = this.normal.y;\r\n this.$l.epsl = 0.0000001;\r\n this.$if(pb.lessThanEqual(pb.sub(1, pb.abs(this.normal.y)), this.epsl), function () {\r\n this.bitangent = this.$choice(\r\n pb.greaterThan(this.normal.y, 0),\r\n pb.vec3(0, 0, 1),\r\n pb.vec3(0, 0, -1)\r\n );\r\n });\r\n this.$l.tangent = pb.normalize(pb.cross(this.bitangent, this.normal));\r\n this.bitangent = pb.cross(this.normal, this.tangent);\r\n this.$return(pb.mat3(this.tangent, this.bitangent, this.normal));\r\n });\r\n pb.func('D_Charlie', [pb.float('sheenRoughness'), pb.float('NdotH')], function () {\r\n this.$l.roughness = pb.max(this.sheenRoughness, 0.000001);\r\n this.$l.invR = pb.div(1, this.roughness);\r\n this.$l.cos2h = pb.mul(this.NdotH, this.NdotH);\r\n this.$l.sin2h = pb.sub(1, this.cos2h);\r\n this.$return(\r\n pb.div(pb.mul(pb.add(this.invR, 2), pb.pow(this.sin2h, pb.mul(this.invR, 0.5))), Math.PI * 2)\r\n );\r\n });\r\n pb.func('smithGGXCorrelated', [pb.float('NoV'), pb.float('NoL'), pb.float('roughness')], function () {\r\n this.$l.a2 = pb.mul(this.roughness, this.roughness, this.roughness, this.roughness);\r\n this.$l.GGXV = pb.mul(\r\n this.NoL,\r\n pb.sqrt(pb.add(pb.mul(this.NoV, this.NoV, pb.sub(1, this.a2)), this.a2))\r\n );\r\n this.$l.GGXL = pb.mul(\r\n this.NoV,\r\n pb.sqrt(pb.add(pb.mul(this.NoL, this.NoL, pb.sub(1, this.a2)), this.a2))\r\n );\r\n this.$return(pb.div(0.5, pb.add(this.GGXV, this.GGXL)));\r\n });\r\n pb.func('V_Ashikhmin', [pb.float('NdotL'), pb.float('NdotV')], function () {\r\n this.$return(\r\n pb.clamp(\r\n pb.div(1, pb.mul(pb.sub(pb.add(this.NdotL, this.NdotV), pb.mul(this.NdotL, this.NdotV)), 4)),\r\n 0,\r\n 1\r\n )\r\n );\r\n });\r\n pb.func(\r\n 'importanceSample',\r\n [\r\n pb.vec2('xi'),\r\n pb.vec3('normal'),\r\n pb.float('roughness'),\r\n pb.vec3('ggx').out(),\r\n pb.vec3('charlie').out()\r\n ],\r\n function () {\r\n this.$l.alphaRoughness = pb.mul(this.roughness, this.roughness);\r\n this.$l.cosTheta = pb.clamp(\r\n pb.sqrt(\r\n pb.div(\r\n pb.sub(1, this.xi.y),\r\n pb.add(1, pb.mul(pb.sub(pb.mul(this.alphaRoughness, this.alphaRoughness), 1), this.xi.y))\r\n )\r\n ),\r\n 0,\r\n 1\r\n );\r\n this.$l.sinTheta = pb.sqrt(pb.sub(1, pb.mul(this.cosTheta, this.cosTheta)));\r\n this.$l.phi = pb.mul(this.xi.x, Math.PI * 2);\r\n this.$l.TBN = this.generateTBN(this.normal);\r\n this.$l.localSpaceDir = pb.normalize(\r\n pb.vec3(\r\n pb.mul(this.sinTheta, pb.cos(this.phi)),\r\n pb.mul(this.sinTheta, pb.sin(this.phi)),\r\n this.cosTheta\r\n )\r\n );\r\n this.ggx = pb.mul(this.TBN, this.localSpaceDir);\r\n this.sinTheta = pb.pow(\r\n this.xi.y,\r\n pb.div(this.alphaRoughness, pb.add(pb.mul(this.alphaRoughness, 2), 1))\r\n );\r\n this.cosTheta = pb.sqrt(pb.sub(1, pb.mul(this.sinTheta, this.sinTheta)));\r\n this.localSpaceDir = pb.normalize(\r\n pb.vec3(\r\n pb.mul(this.sinTheta, pb.cos(this.phi)),\r\n pb.mul(this.sinTheta, pb.sin(this.phi)),\r\n this.cosTheta\r\n )\r\n );\r\n this.charlie = pb.mul(this.TBN, this.localSpaceDir);\r\n }\r\n );\r\n pb.func('integrateBRDF', [pb.float('NoV'), pb.float('roughness')], function () {\r\n this.$l.V = pb.vec3(pb.sub(1, pb.mul(this.NoV, this.NoV)), 0, this.NoV);\r\n this.$l.a = pb.float(0);\r\n this.$l.b = pb.float(0);\r\n this.$l.c = pb.float(0);\r\n this.$l.n = pb.vec3(0, 0, 1);\r\n this.$for(pb.int('i'), 0, SAMPLE_COUNT, function () {\r\n this.$l.xi = this.hammersley2d(this.i, SAMPLE_COUNT);\r\n this.$l.ggxSample = pb.vec3();\r\n this.$l.charlieSample = pb.vec3();\r\n this.importanceSample(this.xi, this.n, this.roughness, this.ggxSample, this.charlieSample);\r\n this.$l.ggxL = pb.normalize(pb.reflect(pb.neg(this.V), this.ggxSample.xyz));\r\n this.$l.ggxNoL = pb.clamp(this.ggxL.z, 0, 1);\r\n this.$l.ggxNoH = pb.clamp(this.ggxSample.z, 0, 1);\r\n this.$l.ggxVoH = pb.clamp(pb.dot(this.V, this.ggxSample.xyz), 0, 1);\r\n this.$l.charlieL = pb.normalize(pb.reflect(pb.neg(this.V), this.charlieSample.xyz));\r\n this.$l.charlieNoL = pb.clamp(this.charlieL.z, 0, 1);\r\n this.$l.charlieNoH = pb.clamp(this.charlieSample.z, 0, 1);\r\n this.$l.charlieVoH = pb.clamp(pb.dot(this.V, this.charlieSample.xyz), 0, 1);\r\n this.$if(pb.greaterThan(this.ggxNoL, 0), function () {\r\n this.$l.pdf = pb.div(\r\n pb.mul(\r\n this.smithGGXCorrelated(this.NoV, this.ggxNoL, this.roughness),\r\n this.ggxVoH,\r\n this.ggxNoL\r\n ),\r\n this.ggxNoH\r\n );\r\n this.$l.Fc = pb.pow(pb.sub(1, this.ggxVoH), 5);\r\n this.a = pb.add(this.a, pb.mul(pb.sub(1, this.Fc), this.pdf));\r\n this.b = pb.add(this.b, pb.mul(this.Fc, this.pdf));\r\n });\r\n this.$if(pb.greaterThan(this.charlieNoL, 0), function () {\r\n this.$l.sheenDistribution = this.D_Charlie(this.roughness, this.charlieNoH);\r\n this.$l.sheenVis = this.V_Ashikhmin(this.charlieNoL, this.NoV);\r\n this.c = pb.add(\r\n this.c,\r\n pb.mul(this.sheenVis, this.sheenDistribution, this.charlieNoL, this.charlieVoH)\r\n );\r\n });\r\n });\r\n this.$return(\r\n pb.div(pb.vec3(pb.mul(this.a, 4), pb.mul(this.b, 4), pb.mul(this.c, 8 * Math.PI)), SAMPLE_COUNT)\r\n );\r\n });\r\n pb.main(function () {\r\n this.$outputs.color = pb.vec4(this.integrateBRDF(this.$inputs.uv.x, this.$inputs.uv.y), 1);\r\n });\r\n }\r\n })!;\r\n program.name = '@GGXLUT_Generation';\r\n const vertexLayout = device.createVertexLayout({\r\n vertexBuffers: [\r\n { buffer: device.createVertexBuffer('position_f32x2', new Float32Array([-1, -1, 1, -1, -1, 1, 1, 1]))! }\r\n ]\r\n });\r\n const rs = device.createRenderStateSet();\r\n rs.useRasterizerState().setCullMode('none');\r\n rs.useDepthState().enableTest(false).enableWrite(false);\r\n const tex = device.createTexture2D('rgba8unorm', size, size, { mipmapping: false })!;\r\n tex.name = 'GGXLUT';\r\n const fb = device.createFrameBuffer([tex], null);\r\n device.pushDeviceStates();\r\n device.setProgram(program);\r\n device.setVertexLayout(vertexLayout);\r\n device.setRenderStates(rs);\r\n device.setFramebuffer(fb);\r\n device.draw('triangle-strip', 0, 4);\r\n device.popDeviceStates();\r\n fb.dispose();\r\n vertexLayout.dispose();\r\n program.dispose();\r\n return tex;\r\n}\r\n"],"names":["ggxLut","Map","getGGXLUT","size","lut","get","createGGXLUT","set","device","getDevice","program","buildRenderProgram","vertex","pb","$inputs","pos","vec2","attrib","$outputs","uv","main","$builtins","position","vec4","add","mul","xy","type","y","neg","fragment","color","SAMPLE_COUNT","func","int","$l","rand","float","denom","invBase","n","bits","$for","div","mod","$if","equal","$break","$return","i","N","radicalInverse_VdC","uint","compOr","sal","sar","compAnd","vec3","bitangent","NoU","normal","epsl","lessThanEqual","sub","abs","$choice","greaterThan","tangent","normalize","cross","mat3","roughness","max","sheenRoughness","invR","cos2h","NdotH","sin2h","pow","Math","PI","a2","GGXV","NoL","sqrt","NoV","GGXL","clamp","NdotL","NdotV","out","alphaRoughness","cosTheta","xi","sinTheta","phi","x","TBN","generateTBN","localSpaceDir","cos","sin","ggx","charlie","V","a","b","c","hammersley2d","ggxSample","charlieSample","importanceSample","ggxL","reflect","xyz","ggxNoL","z","ggxNoH","ggxVoH","dot","charlieL","charlieNoL","charlieNoH","charlieVoH","pdf","smithGGXCorrelated","Fc","sheenDistribution","D_Charlie","sheenVis","V_Ashikhmin","integrateBRDF","name","vertexLayout","createVertexLayout","vertexBuffers","buffer","createVertexBuffer","Float32Array","rs","createRenderStateSet","useRasterizerState","setCullMode","useDepthState","enableTest","enableWrite","tex","createTexture2D","mipmapping","fb","createFrameBuffer","pushDeviceStates","setProgram","setVertexLayout","setRenderStates","setFramebuffer","draw","popDeviceStates","dispose"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ggxlut.js","sources":["../../../src/utility/textures/ggxlut.ts"],"sourcesContent":["import type { Texture2D } from '@zephyr3d/device';\r\nimport { getDevice } from '../../app/api';\r\n\r\nconst ggxLut: Map<number, Texture2D> = new Map();\r\nexport function getGGXLUT(size: number): Texture2D {\r\n let lut = ggxLut.get(size);\r\n if (!lut) {\r\n lut = createGGXLUT(size);\r\n ggxLut.set(size, lut);\r\n }\r\n return lut;\r\n}\r\nfunction createGGXLUT(size: number) {\r\n const device = getDevice();\r\n const program = device.buildRenderProgram({\r\n vertex(pb) {\r\n this.$inputs.pos = pb.vec2().attrib('position');\r\n this.$outputs.uv = pb.vec2();\r\n pb.main(function () {\r\n this.$builtins.position = pb.vec4(this.$inputs.pos, 0, 1);\r\n this.$outputs.uv = pb.add(pb.mul(this.$inputs.pos.xy, 0.5), pb.vec2(0.5));\r\n if (device.type === 'webgpu') {\r\n this.$builtins.position.y = pb.neg(this.$builtins.position.y);\r\n }\r\n });\r\n },\r\n fragment(pb) {\r\n this.$outputs.color = pb.vec4();\r\n const SAMPLE_COUNT = 1024;\r\n pb.func('radicalInverse_VdC', [pb.uint('bits')], function () {\r\n this.$l.n = this.bits;\r\n this.n = pb.compOr(pb.sal(this.n, 16), pb.sar(this.n, 16));\r\n this.n = pb.compOr(\r\n pb.sal(pb.compAnd(this.n, 0x55555555), 1),\r\n pb.sar(pb.compAnd(this.n, 0xaaaaaaaa), 1)\r\n );\r\n this.n = pb.compOr(\r\n pb.sal(pb.compAnd(this.n, 0x33333333), 2),\r\n pb.sar(pb.compAnd(this.n, 0xcccccccc), 2)\r\n );\r\n this.n = pb.compOr(\r\n pb.sal(pb.compAnd(this.n, 0x0f0f0f0f), 4),\r\n pb.sar(pb.compAnd(this.n, 0xf0f0f0f0), 4)\r\n );\r\n this.n = pb.compOr(\r\n pb.sal(pb.compAnd(this.n, 0x00ff00ff), 8),\r\n pb.sar(pb.compAnd(this.n, 0xff00ff00), 8)\r\n );\r\n this.$return(pb.mul(pb.float(this.n), 2.3283064365386963e-10));\r\n });\r\n pb.func('hammersley2d', [pb.int('i'), pb.int('N')], function () {\r\n this.$return(\r\n pb.vec2(pb.div(pb.float(this.i), pb.float(this.N)), this.radicalInverse_VdC(pb.uint(this.i)))\r\n );\r\n });\r\n pb.func('generateTBN', [pb.vec3('normal')], function () {\r\n this.$l.bitangent = pb.vec3(0, 1, 0);\r\n this.$l.NoU = this.normal.y;\r\n this.$l.epsl = 0.0000001;\r\n this.$if(pb.lessThanEqual(pb.sub(1, pb.abs(this.normal.y)), this.epsl), function () {\r\n this.bitangent = this.$choice(\r\n pb.greaterThan(this.normal.y, 0),\r\n pb.vec3(0, 0, 1),\r\n pb.vec3(0, 0, -1)\r\n );\r\n });\r\n this.$l.tangent = pb.normalize(pb.cross(this.bitangent, this.normal));\r\n this.bitangent = pb.cross(this.normal, this.tangent);\r\n this.$return(pb.mat3(this.tangent, this.bitangent, this.normal));\r\n });\r\n pb.func('D_Charlie', [pb.float('sheenRoughness'), pb.float('NdotH')], function () {\r\n this.$l.roughness = pb.max(this.sheenRoughness, 0.000001);\r\n this.$l.invR = pb.div(1, this.roughness);\r\n this.$l.cos2h = pb.mul(this.NdotH, this.NdotH);\r\n this.$l.sin2h = pb.sub(1, this.cos2h);\r\n this.$return(\r\n pb.div(pb.mul(pb.add(this.invR, 2), pb.pow(this.sin2h, pb.mul(this.invR, 0.5))), Math.PI * 2)\r\n );\r\n });\r\n pb.func('smithGGXCorrelated', [pb.float('NoV'), pb.float('NoL'), pb.float('roughness')], function () {\r\n this.$l.a2 = pb.mul(this.roughness, this.roughness, this.roughness, this.roughness);\r\n this.$l.GGXV = pb.mul(\r\n this.NoL,\r\n pb.sqrt(pb.add(pb.mul(this.NoV, this.NoV, pb.sub(1, this.a2)), this.a2))\r\n );\r\n this.$l.GGXL = pb.mul(\r\n this.NoV,\r\n pb.sqrt(pb.add(pb.mul(this.NoL, this.NoL, pb.sub(1, this.a2)), this.a2))\r\n );\r\n this.$return(pb.div(0.5, pb.add(this.GGXV, this.GGXL)));\r\n });\r\n pb.func('V_Ashikhmin', [pb.float('NdotL'), pb.float('NdotV')], function () {\r\n this.$return(\r\n pb.clamp(\r\n pb.div(1, pb.mul(pb.sub(pb.add(this.NdotL, this.NdotV), pb.mul(this.NdotL, this.NdotV)), 4)),\r\n 0,\r\n 1\r\n )\r\n );\r\n });\r\n pb.func(\r\n 'importanceSample',\r\n [\r\n pb.vec2('xi'),\r\n pb.vec3('normal'),\r\n pb.float('roughness'),\r\n pb.vec3('ggx').out(),\r\n pb.vec3('charlie').out()\r\n ],\r\n function () {\r\n this.$l.alphaRoughness = pb.mul(this.roughness, this.roughness);\r\n this.$l.cosTheta = pb.clamp(\r\n pb.sqrt(\r\n pb.div(\r\n pb.sub(1, this.xi.y),\r\n pb.add(1, pb.mul(pb.sub(pb.mul(this.alphaRoughness, this.alphaRoughness), 1), this.xi.y))\r\n )\r\n ),\r\n 0,\r\n 1\r\n );\r\n this.$l.sinTheta = pb.sqrt(pb.sub(1, pb.mul(this.cosTheta, this.cosTheta)));\r\n this.$l.phi = pb.mul(this.xi.x, Math.PI * 2);\r\n this.$l.TBN = this.generateTBN(this.normal);\r\n this.$l.localSpaceDir = pb.normalize(\r\n pb.vec3(\r\n pb.mul(this.sinTheta, pb.cos(this.phi)),\r\n pb.mul(this.sinTheta, pb.sin(this.phi)),\r\n this.cosTheta\r\n )\r\n );\r\n this.ggx = pb.mul(this.TBN, this.localSpaceDir);\r\n this.sinTheta = pb.pow(\r\n this.xi.y,\r\n pb.div(this.alphaRoughness, pb.add(pb.mul(this.alphaRoughness, 2), 1))\r\n );\r\n this.cosTheta = pb.sqrt(pb.sub(1, pb.mul(this.sinTheta, this.sinTheta)));\r\n this.localSpaceDir = pb.normalize(\r\n pb.vec3(\r\n pb.mul(this.sinTheta, pb.cos(this.phi)),\r\n pb.mul(this.sinTheta, pb.sin(this.phi)),\r\n this.cosTheta\r\n )\r\n );\r\n this.charlie = pb.mul(this.TBN, this.localSpaceDir);\r\n }\r\n );\r\n pb.func('integrateBRDF', [pb.float('NoV'), pb.float('roughness')], function () {\r\n this.$l.V = pb.vec3(pb.sub(1, pb.mul(this.NoV, this.NoV)), 0, this.NoV);\r\n this.$l.a = pb.float(0);\r\n this.$l.b = pb.float(0);\r\n this.$l.c = pb.float(0);\r\n this.$l.n = pb.vec3(0, 0, 1);\r\n this.$for(pb.int('i'), 0, SAMPLE_COUNT, function () {\r\n this.$l.xi = this.hammersley2d(this.i, SAMPLE_COUNT);\r\n this.$l.ggxSample = pb.vec3();\r\n this.$l.charlieSample = pb.vec3();\r\n this.importanceSample(this.xi, this.n, this.roughness, this.ggxSample, this.charlieSample);\r\n this.$l.ggxL = pb.normalize(pb.reflect(pb.neg(this.V), this.ggxSample.xyz));\r\n this.$l.ggxNoL = pb.clamp(this.ggxL.z, 0, 1);\r\n this.$l.ggxNoH = pb.clamp(this.ggxSample.z, 0, 1);\r\n this.$l.ggxVoH = pb.clamp(pb.dot(this.V, this.ggxSample.xyz), 0, 1);\r\n this.$l.charlieL = pb.normalize(pb.reflect(pb.neg(this.V), this.charlieSample.xyz));\r\n this.$l.charlieNoL = pb.clamp(this.charlieL.z, 0, 1);\r\n this.$l.charlieNoH = pb.clamp(this.charlieSample.z, 0, 1);\r\n this.$l.charlieVoH = pb.clamp(pb.dot(this.V, this.charlieSample.xyz), 0, 1);\r\n this.$if(pb.greaterThan(this.ggxNoL, 0), function () {\r\n this.$l.pdf = pb.div(\r\n pb.mul(\r\n this.smithGGXCorrelated(this.NoV, this.ggxNoL, this.roughness),\r\n this.ggxVoH,\r\n this.ggxNoL\r\n ),\r\n this.ggxNoH\r\n );\r\n this.$l.Fc = pb.pow(pb.sub(1, this.ggxVoH), 5);\r\n this.a = pb.add(this.a, pb.mul(pb.sub(1, this.Fc), this.pdf));\r\n this.b = pb.add(this.b, pb.mul(this.Fc, this.pdf));\r\n });\r\n this.$if(pb.greaterThan(this.charlieNoL, 0), function () {\r\n this.$l.sheenDistribution = this.D_Charlie(this.roughness, this.charlieNoH);\r\n this.$l.sheenVis = this.V_Ashikhmin(this.charlieNoL, this.NoV);\r\n this.c = pb.add(\r\n this.c,\r\n pb.mul(this.sheenVis, this.sheenDistribution, this.charlieNoL, this.charlieVoH)\r\n );\r\n });\r\n });\r\n this.$return(\r\n pb.div(pb.vec3(pb.mul(this.a, 4), pb.mul(this.b, 4), pb.mul(this.c, 8 * Math.PI)), SAMPLE_COUNT)\r\n );\r\n });\r\n pb.main(function () {\r\n this.$outputs.color = pb.vec4(this.integrateBRDF(this.$inputs.uv.x, this.$inputs.uv.y), 1);\r\n });\r\n }\r\n })!;\r\n program.name = '@GGXLUT_Generation';\r\n const vertexLayout = device.createVertexLayout({\r\n vertexBuffers: [\r\n { buffer: device.createVertexBuffer('position_f32x2', new Float32Array([-1, -1, 1, -1, -1, 1, 1, 1]))! }\r\n ]\r\n });\r\n const rs = device.createRenderStateSet();\r\n rs.useRasterizerState().setCullMode('none');\r\n rs.useDepthState().enableTest(false).enableWrite(false);\r\n const tex = device.createTexture2D('rgba8unorm', size, size, { mipmapping: false })!;\r\n tex.name = 'GGXLUT';\r\n const fb = device.createFrameBuffer([tex], null);\r\n device.pushDeviceStates();\r\n device.setProgram(program);\r\n device.setVertexLayout(vertexLayout);\r\n device.setRenderStates(rs);\r\n device.setFramebuffer(fb);\r\n device.draw('triangle-strip', 0, 4);\r\n device.popDeviceStates();\r\n fb.dispose();\r\n vertexLayout.dispose();\r\n program.dispose();\r\n return tex;\r\n}\r\n"],"names":["ggxLut","Map","getGGXLUT","size","lut","get","createGGXLUT","set","device","getDevice","program","buildRenderProgram","vertex","pb","$inputs","pos","vec2","attrib","$outputs","uv","main","$builtins","position","vec4","add","mul","xy","type","y","neg","fragment","color","SAMPLE_COUNT","func","uint","$l","n","bits","compOr","sal","sar","compAnd","$return","float","int","div","i","N","radicalInverse_VdC","vec3","bitangent","NoU","normal","epsl","$if","lessThanEqual","sub","abs","$choice","greaterThan","tangent","normalize","cross","mat3","roughness","max","sheenRoughness","invR","cos2h","NdotH","sin2h","pow","Math","PI","a2","GGXV","NoL","sqrt","NoV","GGXL","clamp","NdotL","NdotV","out","alphaRoughness","cosTheta","xi","sinTheta","phi","x","TBN","generateTBN","localSpaceDir","cos","sin","ggx","charlie","V","a","b","c","$for","hammersley2d","ggxSample","charlieSample","importanceSample","ggxL","reflect","xyz","ggxNoL","z","ggxNoH","ggxVoH","dot","charlieL","charlieNoL","charlieNoH","charlieVoH","pdf","smithGGXCorrelated","Fc","sheenDistribution","D_Charlie","sheenVis","V_Ashikhmin","integrateBRDF","name","vertexLayout","createVertexLayout","vertexBuffers","buffer","createVertexBuffer","Float32Array","rs","createRenderStateSet","useRasterizerState","setCullMode","useDepthState","enableTest","enableWrite","tex","createTexture2D","mipmapping","fb","createFrameBuffer","pushDeviceStates","setProgram","setVertexLayout","setRenderStates","setFramebuffer","draw","popDeviceStates","dispose"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
const LTC_LUT_SIZE = 64;
|
|
2
|
-
const LTC_MAT_LUT_BASE64 = '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';
|
|
3
|
-
const LTC_AMP_LUT_BASE64 = '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0wsAq9IKALDQCgC1zwkAus4JAL/MCADFywgAyskIANDHBwDVxgcA28QHAOLCBgDowAYA774GAPe9BQD//50AAP+dAAD/nQAB/5wAAv+cAAT+mwAG/ZoACfuXAAv5lAAO9pAAEfKLABTuhQAX6n8AGud4AB3jcQAg4WsAJN9kACfdXgAq3FkALtxTADHcTgA13EkAOdxEADzcQABA3TwARN04AEfeNQBL3jEAT98uAFPfKwBX3ygAW+AmAF/gIwBj4CEAZ+AfAGvgHQBv4BsAdOAaAHjgGAB83xcAgN8VAIXfFACJ3hMAjt4SAJLdEQCX3RAAm9wPAKDbDgCk2g0AqdkNAK7YDACz1wsAuNYLAL3VCgDC1AoAx9MJAMzRCQDS0AgA188IAN3NCADjzAcA6csHAPDJBwD3yAYA//+5AAD/uQAA/7kAAf+4AAP+twAG/bYACPuzAAv3rgAO86kAEe+iABTqmgAX5ZIAGuKJAB3fggAh3XoAJNxzACjcbAAr3GYAL9xgADLdWgA23VUAOd5QAD3fSwBB4EYAReBCAEjhPQBM4ToAUOI2AFTiMwBY4y8AXOMsAGDkKgBk5CcAaOQlAGzkIgBw5CAAdOQeAHjkHAB95BsAgeQZAIXkGACJ4xYAjuMVAJLjFACX4hMAm+ISAJ/hEQCk4RAAqeAPAK3gDgCy3w4Att4NALveDADA3QwAxdwLAMrbCwDP2goA1NoKANnZCQDf2AkA5NcJAOrWCADw1QgA99QIAP//2QAA/9kAAf/ZAAP+2AAF+9UACPfQAAvxyAAO6r4AEeS0ABXgqwAY3aIAG9yaAB/ckgAi3YsAJt6DACnffAAt4HUAMeFvADTiaAA442IAPONcAEDkVwBE5VEAR+VMAEvmSABP5kMAU+c/AFfnOwBb6DcAX+g0AGPoMQBn6C4Aa+krAG/pKQBz6SYAd+kkAHvpIgB/6SAAg+keAIjpHACM6RsAkOkZAJToGACZ6BcAnegWAKHoFQCl6BMAqucTAK7nEgCz5xEAt+YQALzmDwDA5g8AxeUOAMnlDQDO5A0A0+QMANjjDADd4wsA4uILAOfiCwDs4QoA8uEKAPjgCQD///4AAO/uAATd2gAI490ADOfcABDp2QAU69MAGOzNABzsxQAg7b0AJO20ACjtqwAt7aIAMe2ZADXtkQA57ogAPe6AAEHueQBF7nIASe5rAE3uZABR7l4AVe5ZAFnuUwBd7k4AYe5JAGXuRQBp7kEAbe49AHHuOQB17jYAee4zAH3uMACC7i0Ahu4qAIruKACO7iYAku4kAJbuIgCa7iAAnu4eAKLuHQCm7hsAqu4aAK7uGQCy7hcAtu4WALruFQC+7hQAwu4UAMbuEwDK7hIAzu4RANLuEQDX7hAA2+4PAN/uDwDj7g4A5+4OAOvuDgDv7g0A8+4NAPfuDAD77gwA/w==';
|
|
1
|
+
/** Heitz et al. 2016 GGX LTC tables (64x64 RGBA), stored as little-endian float16. */ const LTC_LUT_SIZE = 64;
|
|
2
|
+
/** Inverse LTC matrix coefficients; the shader builds mat3((x,0,y),(0,1,0),(z,0,w)). Signed, can exceed 1. */ const LTC_MAT_LUT_F16_BASE64 = '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';
|
|
3
|
+
/** x: BRDF norm, y: Fresnel term, w: sphere horizon-clipping term. */ const LTC_AMP_LUT_F16_BASE64 = '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';
|
|
4
4
|
|
|
5
|
-
export {
|
|
5
|
+
export { LTC_AMP_LUT_F16_BASE64, LTC_LUT_SIZE, LTC_MAT_LUT_F16_BASE64 };
|
|
6
6
|
//# sourceMappingURL=ltcdata.js.map
|