@woosh/meep-engine 3.53.0 → 3.55.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/package.json +1 -1
- package/src/core/math/noise/worley_noise_2d.d.ts +14 -0
- package/src/core/math/noise/worley_noise_2d.d.ts.map +1 -0
- package/src/core/math/noise/worley_noise_2d.js +74 -0
- package/src/engine/graphics/texture/atlas/CachingTextureAtlas.d.ts +6 -1
- package/src/engine/graphics/texture/atlas/CachingTextureAtlas.d.ts.map +1 -1
- package/src/engine/graphics/texture/atlas/CachingTextureAtlas.js +363 -325
- package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.d.ts +93 -14
- package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.d.ts.map +1 -1
- package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.js +322 -183
- package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.d.ts +9 -0
- package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.d.ts.map +1 -1
- package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.js +110 -83
- package/src/engine/graphics/texture/atlas/SpriteAtlas.d.ts +42 -0
- package/src/engine/graphics/texture/atlas/SpriteAtlas.d.ts.map +1 -0
- package/src/engine/{graphics3/decal/DecalAtlas.js → graphics/texture/atlas/SpriteAtlas.js} +202 -194
- package/src/engine/{graphics3/decal/DecalAtlasFill.d.ts → graphics/texture/atlas/SpriteAtlasFill.d.ts} +4 -4
- package/src/engine/graphics/texture/atlas/SpriteAtlasFill.d.ts.map +1 -0
- package/src/engine/graphics/texture/atlas/SpriteAtlasFill.js +30 -0
- package/src/engine/graphics/texture/atlas/TextureAtlas.d.ts +7 -0
- package/src/engine/graphics/texture/atlas/TextureAtlas.d.ts.map +1 -1
- package/src/engine/graphics/texture/atlas/TextureAtlas.js +11 -1
- package/src/engine/{graphics3/decal/decal_atlas_border.d.ts → graphics/texture/atlas/sprite_atlas_border.d.ts} +12 -12
- package/src/engine/graphics/texture/atlas/sprite_atlas_border.d.ts.map +1 -0
- package/src/engine/{graphics3/decal/decal_atlas_border.js → graphics/texture/atlas/sprite_atlas_border.js} +69 -69
- package/src/engine/graphics3/DecalSystem.d.ts.map +1 -1
- package/src/engine/graphics3/DecalSystem.js +447 -450
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +9 -22
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.js +892 -951
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/generation/foliage/FOLIAGE_DESIGN.md +2 -1
- package/src/generation/foliage/config/BarkMaterialConfig.d.ts +4 -3
- package/src/generation/foliage/config/BarkMaterialConfig.d.ts.map +1 -1
- package/src/generation/foliage/config/BarkMaterialConfig.js +6 -6
- package/src/generation/foliage/config/FoliageBarkType.d.ts +11 -0
- package/src/generation/foliage/config/FoliageBarkType.d.ts.map +1 -0
- package/src/generation/foliage/config/FoliageBarkType.js +16 -0
- package/src/generation/foliage/config/FoliageMaterialConfig.d.ts +58 -5
- package/src/generation/foliage/config/FoliageMaterialConfig.d.ts.map +1 -1
- package/src/generation/foliage/config/FoliageMaterialConfig.js +279 -181
- package/src/generation/foliage/index.d.ts +2 -1
- package/src/generation/foliage/index.js +44 -43
- package/src/generation/foliage/material/make_bark_material.d.ts.map +1 -1
- package/src/generation/foliage/material/make_bark_material.js +23 -95
- package/src/generation/foliage/material/make_foliage_material.d.ts +29 -3
- package/src/generation/foliage/material/make_foliage_material.d.ts.map +1 -1
- package/src/generation/foliage/material/make_foliage_material.js +605 -359
- package/src/generation/foliage/mesh/branch_collar_project.d.ts.map +1 -1
- package/src/generation/foliage/mesh/branch_collar_project.js +205 -203
- package/src/generation/foliage/mesh/foliage_collect_attachments.d.ts +15 -0
- package/src/generation/foliage/mesh/foliage_collect_attachments.d.ts.map +1 -1
- package/src/generation/foliage/mesh/foliage_collect_attachments.js +569 -502
- package/src/generation/foliage/mesh/tree_mesh_build_bark.d.ts.map +1 -1
- package/src/generation/foliage/mesh/tree_mesh_build_bark.js +1049 -1047
- package/src/generation/foliage/mesh/tree_mesh_build_foliage.d.ts +2 -1
- package/src/generation/foliage/mesh/tree_mesh_build_foliage.d.ts.map +1 -1
- package/src/generation/foliage/mesh/tree_mesh_build_foliage.js +454 -415
- package/src/generation/foliage/presets/make_tree_species_preset.d.ts.map +1 -1
- package/src/generation/foliage/presets/make_tree_species_preset.js +870 -837
- package/src/generation/foliage/skeleton/crown_envelope_evaluate.js +121 -121
- package/src/generation/foliage/skeleton/tree_skeleton_compute_pipe_radii.d.ts +10 -7
- package/src/generation/foliage/skeleton/tree_skeleton_compute_pipe_radii.d.ts.map +1 -1
- package/src/generation/foliage/skeleton/tree_skeleton_compute_pipe_radii.js +206 -179
- package/src/generation/foliage/skeleton/tree_skeleton_grow.d.ts.map +1 -1
- package/src/generation/foliage/skeleton/tree_skeleton_grow.js +1871 -1104
- package/src/shade/RENDERER_CONTRACT.md +5 -2
- package/src/shade/device/SHADE_DEVICE_FLOOR.d.ts.map +1 -1
- package/src/shade/device/SHADE_DEVICE_FLOOR.js +2 -0
- package/src/shade/playground/foliage_wind/foliage_world.d.ts +6 -0
- package/src/shade/playground/foliage_wind/foliage_world.d.ts.map +1 -1
- package/src/shade/playground/foliage_wind/foliage_world.js +602 -593
- package/src/shade/playground/foliage_wind/index.html +260 -254
- package/src/shade/playground/foliage_wind/main.js +275 -263
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +1 -1
- package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
- package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
- package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
- package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
- package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +1 -1
- package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts +3 -3
- package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts.map +1 -1
- package/src/shade/renderer/hiz/HierarchicalZBuffer.js +350 -294
- package/src/shade/renderer/hiz/generate_downsampler_code.d.ts +0 -2
- package/src/shade/renderer/hiz/generate_downsampler_code.d.ts.map +1 -1
- package/src/shade/renderer/hiz/generate_downsampler_code.js +99 -100
- package/src/shade/renderer/hiz/hzb_pick_alignment.d.ts +15 -0
- package/src/shade/renderer/hiz/hzb_pick_alignment.d.ts.map +1 -0
- package/src/shade/renderer/hiz/hzb_pick_alignment.js +148 -0
- package/src/shade/renderer/hiz/hzb_plan_reduction_steps.d.ts +28 -0
- package/src/shade/renderer/hiz/hzb_plan_reduction_steps.d.ts.map +1 -0
- package/src/shade/renderer/hiz/hzb_plan_reduction_steps.js +58 -0
- package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts +5 -5
- package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts.map +1 -1
- package/src/shade/renderer/hiz/shader_hzb_reduce_any.js +57 -67
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts +3 -3
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts.map +1 -1
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.js +111 -112
- package/src/shade/renderer/hiz/shader_hzb_spd.d.ts +5 -0
- package/src/shade/renderer/hiz/shader_hzb_spd.d.ts.map +1 -0
- package/src/shade/renderer/hiz/shader_hzb_spd.js +160 -0
- package/src/shade/renderer/light/GPULightCollection.d.ts +8 -0
- package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
- package/src/shade/renderer/light/GPULightCollection.js +67 -0
- package/src/shade/renderer/light/environment/FAR_FIELD_IRRADIANCE_SH_RESOURCE.d.ts +7 -0
- package/src/shade/renderer/light/environment/FAR_FIELD_IRRADIANCE_SH_RESOURCE.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/FAR_FIELD_IRRADIANCE_SH_RESOURCE.js +13 -0
- package/src/shade/renderer/light/environment/shader_project_far_field_irradiance_sh.d.ts +10 -0
- package/src/shade/renderer/light/environment/shader_project_far_field_irradiance_sh.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/shader_project_far_field_irradiance_sh.js +72 -0
- package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.d.ts +39 -0
- package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.d.ts.map +1 -0
- package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.js +90 -0
- package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.d.ts +12 -0
- package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.d.ts.map +1 -0
- package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.js +56 -0
- package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.d.ts +31 -0
- package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.d.ts.map +1 -0
- package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.js +196 -0
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.d.ts +10 -0
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.d.ts.map +1 -0
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.js +163 -0
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_cull_lights.d.ts +4 -0
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_cull_lights.d.ts.map +1 -0
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_cull_lights.js +137 -0
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
- package/src/shade/renderer/particles/GPUParticleSystem.js +4 -3
- package/src/shade/renderer/particles/graph_particles_avboit.d.ts +4 -3
- package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles_avboit.js +28 -11
- package/src/shade/renderer/particles/shaders/chunk_particle_lighting.d.ts +9 -13
- package/src/shade/renderer/particles/shaders/chunk_particle_lighting.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_lighting.js +25 -20
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +21 -38
- package/src/shade/renderer/postprocess/denoise/fragment_shader_denoise_ao.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/denoise/fragment_shader_denoise_ao.js +154 -147
- package/src/shade/renderer/postprocess/gtao/GTAO.d.ts +2 -1
- package/src/shade/renderer/postprocess/gtao/GTAO.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/GTAO.js +5 -1
- package/src/shade/renderer/postprocess/gtao/GTAO_CONSTANTS.d.ts +8 -0
- package/src/shade/renderer/postprocess/gtao/GTAO_CONSTANTS.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/GTAO_CONSTANTS.js +10 -1
- package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.js +5 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_compute_mip_level.d.ts +22 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_compute_mip_level.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_compute_mip_level.js +33 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_resolve_hzb_depth.d.ts +22 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_resolve_hzb_depth.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_resolve_hzb_depth.js +56 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_sample_depth.d.ts +13 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_sample_depth.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/gtao/chunk_gtao_sample_depth.js +42 -0
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.d.ts +2 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js +382 -357
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.js +414 -410
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/postprocess/ssr/prefilter/NOTES.md +0 -7
- package/src/shade/renderer/shader/chunk/depth/chunk_query_depth_from_screen_space_bb.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/depth/chunk_query_depth_from_screen_space_bb.js +62 -62
- package/src/shade/renderer/shader/chunk/random/lowbias/chunk_hash_lowbias32_vec2u.d.ts +6 -0
- package/src/shade/renderer/shader/chunk/random/lowbias/chunk_hash_lowbias32_vec2u.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/random/lowbias/chunk_hash_lowbias32_vec2u.js +19 -0
- package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_get_mip_resolution.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_get_mip_resolution.js +16 -10
- package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_hierarchical_raymarch.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_hierarchical_raymarch.js +118 -117
- package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.d.ts +41 -7
- package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.d.ts.map +1 -1
- package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.js +162 -58
- package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.js +1 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +10 -12
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +583 -606
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +640 -640
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts +113 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.js +484 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.d.ts +50 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.js +60 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.d.ts +25 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.js +47 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IrradianceCascadePlacement.d.ts +74 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IrradianceCascadePlacement.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IrradianceCascadePlacement.js +173 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts +26 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.js +83 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.d.ts +36 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.js +129 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.d.ts +121 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.js +370 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/shader_irradiance_clipmap_build.d.ts +16 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/shader_irradiance_clipmap_build.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/shader_irradiance_clipmap_build.js +191 -0
- package/src/shade/renderer/wind/GPUSceneWind.d.ts +1 -1
- package/src/shade/renderer/wind/GPUSceneWind.js +1 -1
- package/src/engine/graphics3/decal/DecalAtlas.d.ts +0 -43
- package/src/engine/graphics3/decal/DecalAtlas.d.ts.map +0 -1
- package/src/engine/graphics3/decal/DecalAtlasFill.d.ts.map +0 -1
- package/src/engine/graphics3/decal/DecalAtlasFill.js +0 -32
- package/src/engine/graphics3/decal/decal_atlas_border.d.ts.map +0 -1
- package/src/shade/renderer/postprocess/gtao/graph_build_depth_mipmap.d.ts +0 -26
- package/src/shade/renderer/postprocess/gtao/graph_build_depth_mipmap.d.ts.map +0 -1
- package/src/shade/renderer/postprocess/gtao/graph_build_depth_mipmap.js +0 -268
- package/src/shade/renderer/postprocess/ssr/copy_shader_f32.d.ts +0 -3
- package/src/shade/renderer/postprocess/ssr/copy_shader_f32.d.ts.map +0 -1
- package/src/shade/renderer/postprocess/ssr/copy_shader_f32.js +0 -32
- package/src/shade/renderer/postprocess/ssr/depth_max_shader.d.ts +0 -17
- package/src/shade/renderer/postprocess/ssr/depth_max_shader.d.ts.map +0 -1
- package/src/shade/renderer/postprocess/ssr/depth_max_shader.js +0 -98
- package/src/shade/renderer/postprocess/ssr/graph_build_depth_max_pyramid.d.ts +0 -23
- package/src/shade/renderer/postprocess/ssr/graph_build_depth_max_pyramid.d.ts.map +0 -1
- package/src/shade/renderer/postprocess/ssr/graph_build_depth_max_pyramid.js +0 -118
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.d.ts +0 -15
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.js +0 -49
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.d.ts +0 -17
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.js +0 -50
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi_sample.d.ts +0 -35
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi_sample.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi_sample.js +0 -105
- package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.d.ts +0 -35
- package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.js +0 -80
- package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi.d.ts +0 -10
- package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi.js +0 -51
- package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.d.ts +0 -28
- package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.js +0 -39
- package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.d.ts +0 -48
- package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.js +0 -121
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.d.ts +0 -28
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.js +0 -237
|
@@ -53,7 +53,7 @@ export class NSS {
|
|
|
53
53
|
* @returns {number}
|
|
54
54
|
*/
|
|
55
55
|
static recommended_jitter_sequence_size(upscale_ratio: number): number;
|
|
56
|
-
static "__#
|
|
56
|
+
static "__#203@#preprocess_tensor_descriptor"(render_w: any, render_h: any): TextureResourceDescriptor;
|
|
57
57
|
/**
|
|
58
58
|
* @param {GraphicsContext} graphics
|
|
59
59
|
*/
|
|
@@ -37,10 +37,3 @@ It has drifted against the live pipeline in one way that a reader will not notic
|
|
|
37
37
|
directory: the à-trous path grew `chunk_ssr_metadata`, and the variance/metadata contract the
|
|
38
38
|
prefilter expects predates it. Reconcile those before wiring the pass in, rather than after.
|
|
39
39
|
|
|
40
|
-
## Sibling trap, same territory
|
|
41
|
-
|
|
42
|
-
`graph_build_depth_max_pyramid.js` (also one directory up, also unreferenced) builds a
|
|
43
|
-
**single-channel `r32float`** max-depth chain, while the live `HierarchicalZBuffer` the SSR trace
|
|
44
|
-
actually reads is **two-channel** — `chunk_ffx_sssr_load_depth` reads its `.y`. The two are not
|
|
45
|
-
interchangeable, and swapping one in for the other gives a silently zero `.y` rather than an error.
|
|
46
|
-
That file's own header says the same thing.
|
package/src/shade/renderer/shader/chunk/depth/chunk_query_depth_from_screen_space_bb.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_query_depth_from_screen_space_bb.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/depth/chunk_query_depth_from_screen_space_bb.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chunk_query_depth_from_screen_space_bb.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/depth/chunk_query_depth_from_screen_space_bb.js"],"names":[],"mappings":"AAKA;;;GAGG;AACH,qDAFU,SAAS,CAsDZ;0BA7DmB,6BAA6B"}
|
|
@@ -1,62 +1,62 @@
|
|
|
1
|
-
import { CodeChunk } from "../../compiler/CodeChunk.js";
|
|
2
|
-
import { AABB3_STRUCT } from "../geometry/aabb3/AABB3_STRUCT.js";
|
|
3
|
-
import { chunk_min4 } from "../math/chunk_min4.js";
|
|
4
|
-
import { chunk_ndc_to_uv } from "../texture/chunk_ndc_to_uv.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
*
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
var
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
let
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
let
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
let
|
|
42
|
-
let
|
|
43
|
-
let
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
let
|
|
47
|
-
let
|
|
48
|
-
let
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
chunk_ndc_to_uv
|
|
62
|
-
]);
|
|
1
|
+
import { CodeChunk } from "../../compiler/CodeChunk.js";
|
|
2
|
+
import { AABB3_STRUCT } from "../geometry/aabb3/AABB3_STRUCT.js";
|
|
3
|
+
import { chunk_min4 } from "../math/chunk_min4.js";
|
|
4
|
+
import { chunk_ndc_to_uv } from "../texture/chunk_ndc_to_uv.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* TODO check out this post https://x.com/anki3d/status/1713238150418518023
|
|
8
|
+
* @type {CodeChunk}
|
|
9
|
+
*/
|
|
10
|
+
export const chunk_query_depth_from_screen_space_bb = CodeChunk.from(
|
|
11
|
+
//language=WGSL
|
|
12
|
+
`
|
|
13
|
+
fn query_depth_from_screen_space_bb(
|
|
14
|
+
pb: ${AABB3_STRUCT.wgsl_ref},
|
|
15
|
+
hzb: texture_2d<f32>,
|
|
16
|
+
) -> f32 {
|
|
17
|
+
var n_min = saturate( ndc_to_uv(pb.min.xy) );
|
|
18
|
+
var n_max = saturate( ndc_to_uv(pb.max.xy) );
|
|
19
|
+
|
|
20
|
+
let bb_dim = abs(n_max - n_min);
|
|
21
|
+
|
|
22
|
+
let hzb_size_u = textureDimensions(hzb);
|
|
23
|
+
let hzb_size_f = vec2<f32>(hzb_size_u);
|
|
24
|
+
|
|
25
|
+
let bb_dim_hz = bb_dim * hzb_size_f;
|
|
26
|
+
|
|
27
|
+
let longest_edge = max(bb_dim_hz.x, bb_dim_hz.y);
|
|
28
|
+
|
|
29
|
+
let mip_level_count = textureNumLevels(hzb);
|
|
30
|
+
|
|
31
|
+
let mip_level = min(
|
|
32
|
+
u32( ceil(log2( max(longest_edge, 1.0) ) ) ),
|
|
33
|
+
mip_level_count - 1
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
let mip_resolution = textureDimensions(hzb, mip_level);
|
|
37
|
+
let mip_resolution_f = vec2<f32>(mip_resolution);
|
|
38
|
+
let max_coord = mip_resolution - vec2(1u);
|
|
39
|
+
|
|
40
|
+
// sample 4 corners, we know that they fit in a 2x2 footprint at most
|
|
41
|
+
let p0 = min(vec2<u32>(n_min * mip_resolution_f), max_coord);
|
|
42
|
+
let p3 = min(vec2<u32>(n_max * mip_resolution_f), max_coord);
|
|
43
|
+
let p1 = vec2(p3.x, p0.y);
|
|
44
|
+
let p2 = vec2(p0.x, p3.y);
|
|
45
|
+
|
|
46
|
+
let d0 = textureLoad(hzb, p0, mip_level).x;
|
|
47
|
+
let d1 = textureLoad(hzb, p1, mip_level).x;
|
|
48
|
+
let d2 = textureLoad(hzb, p2, mip_level).x;
|
|
49
|
+
let d3 = textureLoad(hzb, p3, mip_level).x;
|
|
50
|
+
|
|
51
|
+
// value that's most far away from us
|
|
52
|
+
let min_depth = min4(d0, d1, d2, d3);
|
|
53
|
+
|
|
54
|
+
let depth_delta = pb.max.z - min_depth;
|
|
55
|
+
|
|
56
|
+
return depth_delta;
|
|
57
|
+
}
|
|
58
|
+
`, [
|
|
59
|
+
AABB3_STRUCT.declaration_chunk,
|
|
60
|
+
chunk_min4,
|
|
61
|
+
chunk_ndc_to_uv
|
|
62
|
+
]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_hash_lowbias32_vec2u.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/random/lowbias/chunk_hash_lowbias32_vec2u.js"],"names":[],"mappings":"AAGA;;GAEG;AACH,yCAFU,SAAS,CAclB;0BAlByB,gCAAgC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CodeChunk } from "../../../compiler/CodeChunk.js";
|
|
2
|
+
import { chunk_hash_lowbias32 } from "../chunk_hash_lowbias32.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @type {CodeChunk}
|
|
6
|
+
*/
|
|
7
|
+
export const chunk_hash_lowbias32_vec2u = CodeChunk.from(
|
|
8
|
+
//language=WGSL
|
|
9
|
+
`
|
|
10
|
+
fn hash_lowbias32_vec2u(v:vec2<u32>) -> u32{
|
|
11
|
+
let combined = v.x * 0x85ebca6bu +
|
|
12
|
+
v.y * 0xc2b2ae35u;
|
|
13
|
+
|
|
14
|
+
return hash_lowbias32(combined);
|
|
15
|
+
}
|
|
16
|
+
`,[
|
|
17
|
+
chunk_hash_lowbias32,
|
|
18
|
+
]
|
|
19
|
+
)
|
package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_get_mip_resolution.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_ffx_sssr_get_mip_resolution.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_get_mip_resolution.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chunk_ffx_sssr_get_mip_resolution.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_get_mip_resolution.js"],"names":[],"mappings":"AAGA,0DAUE;0BAbwB,6BAA6B"}
|
|
@@ -1,10 +1,16 @@
|
|
|
1
|
-
import { CodeChunk } from "../../compiler/CodeChunk.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import { CodeChunk } from "../../compiler/CodeChunk.js";
|
|
2
|
+
import { SCREEN_HZB_RESOURCE } from "./SCREEN_SPACE_RESOURCES.js";
|
|
3
|
+
|
|
4
|
+
export const chunk_ffx_sssr_get_mip_resolution = CodeChunk.from(
|
|
5
|
+
//language=WGSL
|
|
6
|
+
`
|
|
7
|
+
fn ffx_sssr_get_mip_resolution(screen_dimensions:vec2<f32>, mip_level:i32) -> vec2<f32>{
|
|
8
|
+
if (mip_level <= 0) {
|
|
9
|
+
return screen_dimensions;
|
|
10
|
+
}
|
|
11
|
+
return vec2<f32>(textureDimensions(tHZB, mip_level - 1));
|
|
12
|
+
}
|
|
13
|
+
`
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
chunk_ffx_sssr_get_mip_resolution.requireResource(SCREEN_HZB_RESOURCE);
|
package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_hierarchical_raymarch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_ffx_sssr_hierarchical_raymarch.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_hierarchical_raymarch.js"],"names":[],"mappings":"AASA;;;;;;GAMG;AACH,mDAFU,SAAS,
|
|
1
|
+
{"version":3,"file":"chunk_ffx_sssr_hierarchical_raymarch.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_hierarchical_raymarch.js"],"names":[],"mappings":"AASA;;;;;;GAMG;AACH,mDAFU,SAAS,CAuGZ;0BApHmB,6BAA6B"}
|
package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_hierarchical_raymarch.js
CHANGED
|
@@ -1,117 +1,118 @@
|
|
|
1
|
-
import { chunk_is_background } from "../depth/chunk_is_background.js";
|
|
2
|
-
import { CodeChunk } from "../../compiler/CodeChunk.js";
|
|
3
|
-
import { chunk_rcp_v2 } from "../geometry/vec2/chunk_rcp_v2.js";
|
|
4
|
-
import { F32_MAX_DEFINITION } from "../math/F32_MAX_DEFINITION.js";
|
|
5
|
-
import { chunk_ffx_sssr_advance_ray } from "./chunk_ffx_sssr_advance_ray.js";
|
|
6
|
-
import { chunk_ffx_sssr_get_mip_resolution } from "./chunk_ffx_sssr_get_mip_resolution.js";
|
|
7
|
-
import { chunk_ffx_sssr_initial_advance_ray } from "./chunk_ffx_sssr_initial_advance_ray.js";
|
|
8
|
-
import { chunk_ffx_sssr_load_depth } from "./chunk_ffx_sssr_load_depth.js";
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
*
|
|
12
|
-
* Requires origin and direction of the ray to be in screen space [0, 1] x [0, 1]
|
|
13
|
-
* NOTE: "low occupancy" exit was removed, as WebGPU doesn't have pre-requisite API for it
|
|
14
|
-
* @see https://github.com/GPUOpen-LibrariesAndSDKs/FidelityFX-SDK/blob/1bbe66e7ea0d358e84af4471a90aa9c35b583de0/samples/hybridreflections/shaders/ffx_sssr_intersect.h#L110
|
|
15
|
-
* @type {CodeChunk}
|
|
16
|
-
*/
|
|
17
|
-
export const chunk_ffx_sssr_hierarchical_raymarch = CodeChunk.from(
|
|
18
|
-
//language=WGSL
|
|
19
|
-
`
|
|
20
|
-
fn ffx_sssr_hierarchical_raymarch(
|
|
21
|
-
origin: vec3<f32>,
|
|
22
|
-
direction: vec3<f32>,
|
|
23
|
-
screen_size: vec2<f32>,
|
|
24
|
-
most_detailed_mip: i32,
|
|
25
|
-
max_traversal_intersections:u32,
|
|
26
|
-
valid_hit: ptr<function, bool>,
|
|
27
|
-
_num_iters: ptr<function, u32>,
|
|
28
|
-
) -> vec3<f32> {
|
|
29
|
-
|
|
30
|
-
let inv_direction = select( vec3(F32_MAX), 1.0 / direction, abs(direction) > vec3(1.0e-12));
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
var current_mip_resolution = ffx_sssr_get_mip_resolution(screen_size, current_mip);
|
|
37
|
-
var current_mip_resolution_inv = 1.0 / (current_mip_resolution);
|
|
38
|
-
|
|
39
|
-
// Offset to the bounding boxes uv space to intersect the ray with the center of the next pixel.
|
|
40
|
-
// This means we ever so slightly over shoot into the next region.
|
|
41
|
-
var uv_offset = 0.005 * exp2(f32(most_detailed_mip)) / screen_size;
|
|
42
|
-
uv_offset = select( uv_offset, -uv_offset, direction.xy < vec2(0.0) );
|
|
43
|
-
|
|
44
|
-
// Offset applied depending on current mip resolution to move the boundary to the left/right upper/lower border depending on ray direction.
|
|
45
|
-
let floor_offset = select(vec2(1.0), vec2(0.0), direction.xy < vec2(0.0)); // TODO can replace with 'step'
|
|
46
|
-
|
|
47
|
-
// Initially advance ray to avoid immediate self intersections.
|
|
48
|
-
var current_t:f32;
|
|
49
|
-
var position:vec3<f32>;
|
|
50
|
-
|
|
51
|
-
ffx_sssr_initial_advance_ray(
|
|
52
|
-
origin,
|
|
53
|
-
direction,
|
|
54
|
-
inv_direction,
|
|
55
|
-
current_mip_resolution,
|
|
56
|
-
current_mip_resolution_inv,
|
|
57
|
-
floor_offset,
|
|
58
|
-
uv_offset,
|
|
59
|
-
&position,
|
|
60
|
-
¤t_t
|
|
61
|
-
);
|
|
62
|
-
|
|
63
|
-
var i = 0u;
|
|
64
|
-
for (
|
|
65
|
-
;
|
|
66
|
-
i < max_traversal_intersections && current_mip >= most_detailed_mip;
|
|
67
|
-
i++
|
|
68
|
-
) {
|
|
69
|
-
|
|
70
|
-
if (any(position.xy > vec2(1.0, 1.0)) || any(position.xy < vec2(0.0, 0.0))){
|
|
71
|
-
// outside of the viewport
|
|
72
|
-
break;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
if (is_background(position.z)){
|
|
76
|
-
// hit sky/background, out of Z bounds basically
|
|
77
|
-
break;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
let current_mip_position = current_mip_resolution * position.xy;
|
|
81
|
-
let surface_z = ffx_sssr_load_depth(vec2<i32>(current_mip_position), current_mip);
|
|
82
|
-
|
|
83
|
-
let skipped_tile = ffx_sssr_advance_ray(
|
|
84
|
-
origin,
|
|
85
|
-
direction,
|
|
86
|
-
inv_direction,
|
|
87
|
-
current_mip_position,
|
|
88
|
-
current_mip_resolution_inv,
|
|
89
|
-
floor_offset,
|
|
90
|
-
uv_offset,
|
|
91
|
-
surface_z,
|
|
92
|
-
&position,
|
|
93
|
-
¤t_t
|
|
94
|
-
);
|
|
95
|
-
|
|
96
|
-
current_mip
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
*
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
1
|
+
import { chunk_is_background } from "../depth/chunk_is_background.js";
|
|
2
|
+
import { CodeChunk } from "../../compiler/CodeChunk.js";
|
|
3
|
+
import { chunk_rcp_v2 } from "../geometry/vec2/chunk_rcp_v2.js";
|
|
4
|
+
import { F32_MAX_DEFINITION } from "../math/F32_MAX_DEFINITION.js";
|
|
5
|
+
import { chunk_ffx_sssr_advance_ray } from "./chunk_ffx_sssr_advance_ray.js";
|
|
6
|
+
import { chunk_ffx_sssr_get_mip_resolution } from "./chunk_ffx_sssr_get_mip_resolution.js";
|
|
7
|
+
import { chunk_ffx_sssr_initial_advance_ray } from "./chunk_ffx_sssr_initial_advance_ray.js";
|
|
8
|
+
import { chunk_ffx_sssr_load_depth } from "./chunk_ffx_sssr_load_depth.js";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
* Requires origin and direction of the ray to be in screen space [0, 1] x [0, 1]
|
|
13
|
+
* NOTE: "low occupancy" exit was removed, as WebGPU doesn't have pre-requisite API for it
|
|
14
|
+
* @see https://github.com/GPUOpen-LibrariesAndSDKs/FidelityFX-SDK/blob/1bbe66e7ea0d358e84af4471a90aa9c35b583de0/samples/hybridreflections/shaders/ffx_sssr_intersect.h#L110
|
|
15
|
+
* @type {CodeChunk}
|
|
16
|
+
*/
|
|
17
|
+
export const chunk_ffx_sssr_hierarchical_raymarch = CodeChunk.from(
|
|
18
|
+
//language=WGSL
|
|
19
|
+
`
|
|
20
|
+
fn ffx_sssr_hierarchical_raymarch(
|
|
21
|
+
origin: vec3<f32>,
|
|
22
|
+
direction: vec3<f32>,
|
|
23
|
+
screen_size: vec2<f32>,
|
|
24
|
+
most_detailed_mip: i32,
|
|
25
|
+
max_traversal_intersections:u32,
|
|
26
|
+
valid_hit: ptr<function, bool>,
|
|
27
|
+
_num_iters: ptr<function, u32>,
|
|
28
|
+
) -> vec3<f32> {
|
|
29
|
+
|
|
30
|
+
let inv_direction = select( vec3(F32_MAX), 1.0 / direction, abs(direction) > vec3(1.0e-12));
|
|
31
|
+
let max_mip = i32(textureNumLevels(tHZB));
|
|
32
|
+
|
|
33
|
+
// Start on mip with highest detail.
|
|
34
|
+
var current_mip = min(most_detailed_mip, max_mip);
|
|
35
|
+
|
|
36
|
+
var current_mip_resolution = ffx_sssr_get_mip_resolution(screen_size, current_mip);
|
|
37
|
+
var current_mip_resolution_inv = 1.0 / (current_mip_resolution);
|
|
38
|
+
|
|
39
|
+
// Offset to the bounding boxes uv space to intersect the ray with the center of the next pixel.
|
|
40
|
+
// This means we ever so slightly over shoot into the next region.
|
|
41
|
+
var uv_offset = 0.005 * exp2(f32(most_detailed_mip)) / screen_size;
|
|
42
|
+
uv_offset = select( uv_offset, -uv_offset, direction.xy < vec2(0.0) );
|
|
43
|
+
|
|
44
|
+
// Offset applied depending on current mip resolution to move the boundary to the left/right upper/lower border depending on ray direction.
|
|
45
|
+
let floor_offset = select(vec2(1.0), vec2(0.0), direction.xy < vec2(0.0)); // TODO can replace with 'step'
|
|
46
|
+
|
|
47
|
+
// Initially advance ray to avoid immediate self intersections.
|
|
48
|
+
var current_t:f32;
|
|
49
|
+
var position:vec3<f32>;
|
|
50
|
+
|
|
51
|
+
ffx_sssr_initial_advance_ray(
|
|
52
|
+
origin,
|
|
53
|
+
direction,
|
|
54
|
+
inv_direction,
|
|
55
|
+
current_mip_resolution,
|
|
56
|
+
current_mip_resolution_inv,
|
|
57
|
+
floor_offset,
|
|
58
|
+
uv_offset,
|
|
59
|
+
&position,
|
|
60
|
+
¤t_t
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
var i = 0u;
|
|
64
|
+
for (
|
|
65
|
+
;
|
|
66
|
+
i < max_traversal_intersections && current_mip >= most_detailed_mip;
|
|
67
|
+
i++
|
|
68
|
+
) {
|
|
69
|
+
|
|
70
|
+
if (any(position.xy > vec2(1.0, 1.0)) || any(position.xy < vec2(0.0, 0.0))){
|
|
71
|
+
// outside of the viewport
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (is_background(position.z)){
|
|
76
|
+
// hit sky/background, out of Z bounds basically
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
let current_mip_position = current_mip_resolution * position.xy;
|
|
81
|
+
let surface_z = ffx_sssr_load_depth(vec2<i32>(current_mip_position), current_mip);
|
|
82
|
+
|
|
83
|
+
let skipped_tile = ffx_sssr_advance_ray(
|
|
84
|
+
origin,
|
|
85
|
+
direction,
|
|
86
|
+
inv_direction,
|
|
87
|
+
current_mip_position,
|
|
88
|
+
current_mip_resolution_inv,
|
|
89
|
+
floor_offset,
|
|
90
|
+
uv_offset,
|
|
91
|
+
surface_z,
|
|
92
|
+
&position,
|
|
93
|
+
¤t_t
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
current_mip = min(current_mip + select(-1, 1, skipped_tile), max_mip);
|
|
97
|
+
if (current_mip >= most_detailed_mip) {
|
|
98
|
+
current_mip_resolution = ffx_sssr_get_mip_resolution(screen_size, current_mip);
|
|
99
|
+
current_mip_resolution_inv = 1.0 / current_mip_resolution;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
*_num_iters = i;
|
|
105
|
+
|
|
106
|
+
*valid_hit = (current_mip <= most_detailed_mip && i > 0);
|
|
107
|
+
|
|
108
|
+
return position;
|
|
109
|
+
}
|
|
110
|
+
`, [
|
|
111
|
+
F32_MAX_DEFINITION,
|
|
112
|
+
chunk_rcp_v2,
|
|
113
|
+
chunk_ffx_sssr_get_mip_resolution,
|
|
114
|
+
chunk_ffx_sssr_initial_advance_ray,
|
|
115
|
+
chunk_ffx_sssr_advance_ray,
|
|
116
|
+
chunk_ffx_sssr_load_depth,
|
|
117
|
+
chunk_is_background
|
|
118
|
+
]);
|
|
@@ -92,12 +92,15 @@ export function tile_atlas_bordered_block(content: Uint8Array, content_size: Arr
|
|
|
92
92
|
*/
|
|
93
93
|
export class GPUTileAtlas3D {
|
|
94
94
|
/**
|
|
95
|
-
* Every argument is required: an atlas is declared, not configured.
|
|
95
|
+
* Every argument is required: an atlas is declared, not configured. Either `format` (one texture)
|
|
96
|
+
* or `formats` (one or more synchronized textures sharing the same slot grid) must be given.
|
|
96
97
|
*
|
|
97
98
|
* @param {object} options
|
|
98
99
|
* @param {GPUDevice} options.device
|
|
99
|
-
* @param {GPUTextureFormat} options.format an uncompressed, copyable format — what a 3-D texture
|
|
100
|
-
* allows, and what {@link write} sizes its block by
|
|
100
|
+
* @param {GPUTextureFormat} [options.format] an uncompressed, copyable format — what a 3-D texture
|
|
101
|
+
* allows, and what {@link write} sizes its block by (mutually exclusive with `formats`)
|
|
102
|
+
* @param {GPUTextureFormat[]} [options.formats] one or more uncompressed, copyable formats for a
|
|
103
|
+
* multi-texture atlas (mutually exclusive with `format`)
|
|
101
104
|
* @param {number[]} options.content_size texels of content along x, y and z of a tile, three
|
|
102
105
|
* positive integers; a cubic tile is `[n, n, n]`. Copied: the array stays the caller's
|
|
103
106
|
* @param {number} options.border texels of skirt on each side of the content, at least 1 for a
|
|
@@ -114,9 +117,10 @@ export class GPUTileAtlas3D {
|
|
|
114
117
|
* are copies
|
|
115
118
|
* @param {string} options.label the texture's label
|
|
116
119
|
*/
|
|
117
|
-
constructor({ device,
|
|
120
|
+
constructor({ device, formats, content_size, border, slots_x, slots_y, capacity, usage, label }: {
|
|
118
121
|
device: GPUDevice;
|
|
119
|
-
format
|
|
122
|
+
format?: GPUTextureFormat;
|
|
123
|
+
formats?: GPUTextureFormat[];
|
|
120
124
|
content_size: number[];
|
|
121
125
|
border: number;
|
|
122
126
|
slots_x: number;
|
|
@@ -129,14 +133,42 @@ export class GPUTileAtlas3D {
|
|
|
129
133
|
* @returns {GPUTextureContext}
|
|
130
134
|
*/
|
|
131
135
|
get texture(): GPUTextureContext;
|
|
136
|
+
/**
|
|
137
|
+
* All synchronized textures of the atlas.
|
|
138
|
+
* @returns {readonly GPUTextureContext[]}
|
|
139
|
+
*/
|
|
140
|
+
get textures(): readonly GPUTextureContext[];
|
|
141
|
+
/**
|
|
142
|
+
* @returns {number}
|
|
143
|
+
*/
|
|
144
|
+
get texture_count(): number;
|
|
145
|
+
/**
|
|
146
|
+
* @param {number} index
|
|
147
|
+
* @returns {GPUTextureContext}
|
|
148
|
+
*/
|
|
149
|
+
texture_at(index: number): GPUTextureContext;
|
|
132
150
|
/**
|
|
133
151
|
* @returns {GPUTextureFormat}
|
|
134
152
|
*/
|
|
135
153
|
get format(): GPUTextureFormat;
|
|
154
|
+
/**
|
|
155
|
+
* @returns {readonly GPUTextureFormat[]}
|
|
156
|
+
*/
|
|
157
|
+
get formats(): readonly GPUTextureFormat[];
|
|
158
|
+
/**
|
|
159
|
+
* @param {number} index
|
|
160
|
+
* @returns {GPUTextureFormat}
|
|
161
|
+
*/
|
|
162
|
+
format_at(index: number): GPUTextureFormat;
|
|
136
163
|
/**
|
|
137
164
|
* @returns {number}
|
|
138
165
|
*/
|
|
139
166
|
get bytes_per_texel(): number;
|
|
167
|
+
/**
|
|
168
|
+
* @param {number} index
|
|
169
|
+
* @returns {number}
|
|
170
|
+
*/
|
|
171
|
+
bytes_per_texel_at(index: number): number;
|
|
140
172
|
/**
|
|
141
173
|
* Texels of content along x, y and z of a tile. Frozen: the atlas's own, not a copy.
|
|
142
174
|
* @returns {readonly number[]}
|
|
@@ -216,8 +248,9 @@ export class GPUTileAtlas3D {
|
|
|
216
248
|
* @param {number} slot a live slot
|
|
217
249
|
* @param {Uint8Array} content `content_size[0] · content_size[1] · content_size[2] ·
|
|
218
250
|
* bytes_per_texel` bytes, x fastest, then y, then z
|
|
251
|
+
* @param {number} [texture_index=0] which texture of the atlas to write into
|
|
219
252
|
*/
|
|
220
|
-
write(slot: number, content: Uint8Array): void;
|
|
253
|
+
write(slot: number, content: Uint8Array, texture_index?: number): void;
|
|
221
254
|
/**
|
|
222
255
|
* Put a whole tile, skirt included, into a slot from a buffer on the device — the way a compute
|
|
223
256
|
* bake lands: it writes the `tile_size` block into a storage buffer, rows padded to the copy
|
|
@@ -229,8 +262,9 @@ export class GPUTileAtlas3D {
|
|
|
229
262
|
* @param {number} byte_offset where the block starts in the buffer
|
|
230
263
|
* @param {number} bytes_per_row stride of a row of `tile_size[0]` texels, a multiple of
|
|
231
264
|
* `COPY_BYTES_PER_ROW_ALIGNMENT`; rows per image is `tile_size[1]`
|
|
265
|
+
* @param {number} [texture_index=0] which texture of the atlas to copy into
|
|
232
266
|
*/
|
|
233
|
-
copy_from_buffer(encoder: GPUCommandEncoder, slot: number, buffer: GPUBuffer, byte_offset: number, bytes_per_row: number): void;
|
|
267
|
+
copy_from_buffer(encoder: GPUCommandEncoder, slot: number, buffer: GPUBuffer, byte_offset: number, bytes_per_row: number, texture_index?: number): void;
|
|
234
268
|
destroy(): void;
|
|
235
269
|
#private;
|
|
236
270
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUTileAtlas3D.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/texture/atlas/GPUTileAtlas3D.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GPUTileAtlas3D.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/texture/atlas/GPUTileAtlas3D.js"],"names":[],"mappings":"AAssBA;;;;;;;;GAQG;AACH,2CANW,MAAM,WACN,MAAM,WACN,MAAM,OACN,MAAM,EAAE,GAAC,WAAW,GAClB,MAAM,EAAE,GAAC,WAAW,CAchC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,sDARW,MAAM,WACN,MAAM,eACN,MAAM,eACN,MAAM,iBACN,MAAM,OACN,MAAM,EAAE,GACN,OAAO,CAoCnB;AAED;;;;;;;;;;;;;;;GAeG;AACH,mDATW,UAAU,gBAEV,UAAU,MAAM,CAAC,UACjB,MAAM,mBACN,MAAM,OACN,UAAU,GAER,UAAU,CAkDtB;AA90BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH;IA4FI;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH;QArB8B,MAAM;QACE,MAAM;QAEJ,OAAO,GAApC,kBAAkB;QAEA,YAAY,EAA9B,MAAM,EAAE;QAEQ,MAAM,EAAtB,MAAM;QAEU,OAAO,EAAvB,MAAM;QAEU,OAAO,EAAvB,MAAM;QAEU,QAAQ,EAAxB,MAAM;QAEwB,KAAK;QAInB,KAAK,EAArB,MAAM;OAiGhB;IAED;;OAEG;IACH,iCAEC;IAED;;;OAGG;IACH,6CAEC;IAED;;OAEG;IACH,4BAEC;IAED;;;OAGG;IACH,kBAHW,MAAM,GACJ,iBAAiB,CAO7B;IAED;;OAEG;IACH,+BAEC;IAED;;OAEG;IACH,2CAEC;IAED;;;OAGG;IACH,iBAHW,MAAM,oBAQhB;IAED;;OAEG;IACH,8BAEC;IAED;;;OAGG;IACH,0BAHW,MAAM,GACJ,MAAM,CAOlB;IAED;;;OAGG;IACH,sCAEC;IAED;;OAEG;IACH,qBAEC;IAED;;;;OAIG;IACH,mCAEC;IAED;;;OAGG;IACH,sBAEC;IAED;;;OAGG;IACH,sBAEC;IAED;;;OAGG;IACH,sBAEC;IAED;;;OAGG;IACH,uBAEC;IAED;;;;;OAKG;IACH,6BAEC;IAED;;OAEG;IACH,yBAEC;IAED;;;OAGG;IACH,cAHW,MAAM,GACJ,OAAO,CAMnB;IAED;;;;;OAKG;IACH,YAFa,MAAM,CAkBlB;IAED;;OAEG;IACH,WAFW,MAAM,QAOhB;IAED;;;;;;;;OAQG;IACH,kBAJW,MAAM,OACN,MAAM,EAAE,GAAC,WAAW,GAClB,MAAM,EAAE,GAAC,WAAW,CAehC;IAED;;;;;;;;OAQG;IACH,YALW,MAAM,WACN,UAAU,kBAEV,MAAM,QAkChB;IAED;;;;;;;;;;;;OAYG;IACH,mDAPW,MAAM,kCAEN,MAAM,iBACN,MAAM,kBAEN,MAAM,QAgChB;IAED,gBAIC;;CAqIJ;kCAlsBiC,yBAAyB"}
|