@woosh/meep-engine 3.11.2 → 3.12.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 +14 -18
- package/build/bundle-worker-terrain.js +1 -1
- package/editor/SelectionVisualizer.js +127 -127
- package/editor/entity_world_bounds.js +27 -27
- package/editor/particles/rebuildParticleEmitter.js +31 -31
- package/editor/process/SymbolicDisplayProcess.js +1 -1
- package/editor/process/symbolic/CameraSymbolicDisplay.js +146 -146
- package/editor/process/symbolic/LightSymbolicDisplay.js +172 -172
- package/editor/prototypeEditorShell.js +156 -156
- package/editor/selection/editor_pick.js +130 -130
- package/editor/selection/screen_rect_frustum.js +119 -119
- package/editor/tools/v2/TransformControls.js +971 -971
- package/package.json +1 -1
- package/src/engine/Engine.d.ts +3 -3
- package/src/engine/Engine.d.ts.map +1 -1
- package/src/engine/Engine.js +726 -726
- package/src/engine/EngineHarness.d.ts +1 -1
- package/src/engine/EngineHarness.js +590 -590
- package/src/engine/ecs/HIERARCHY_REVIEW.md +717 -717
- package/src/engine/ecs/terrain/ecs/BuildLightTexture.d.ts +1 -1
- package/src/engine/ecs/terrain/ecs/BuildLightTexture.js +27 -27
- package/src/engine/ecs/terrain/ecs/Terrain.d.ts +1 -5
- package/src/engine/ecs/terrain/ecs/Terrain.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/Terrain.js +790 -790
- package/src/engine/ecs/terrain/util/loadVisibleTerrainTiles.js +129 -129
- package/src/engine/graphics/ecs/camera/camera_find_active.d.ts +1 -1
- package/src/engine/graphics/ecs/camera/camera_find_active.js +28 -28
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.d.ts +1 -1
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.js +428 -428
- package/src/engine/graphics/ecs/water/Water.d.ts +1 -1
- package/src/engine/graphics/ecs/water/Water.js +104 -104
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +1 -1
- package/src/engine/graphics3/AnimationGraphSystem.d.ts +65 -0
- package/src/engine/graphics3/AnimationGraphSystem.d.ts.map +1 -0
- package/src/engine/graphics3/AnimationGraphSystem.js +329 -0
- package/src/engine/graphics3/AnimationGraphSystem3.d.ts +6 -61
- package/src/engine/graphics3/AnimationGraphSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/AnimationGraphSystem3.js +6 -325
- package/src/engine/graphics3/AnimationSystem.d.ts +76 -0
- package/src/engine/graphics3/AnimationSystem.d.ts.map +1 -0
- package/src/engine/graphics3/AnimationSystem.js +352 -0
- package/src/engine/graphics3/AnimationSystem3.d.ts +6 -72
- package/src/engine/graphics3/AnimationSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/AnimationSystem3.js +6 -348
- package/src/engine/graphics3/CameraSystem.d.ts +49 -0
- package/src/engine/graphics3/CameraSystem.d.ts.map +1 -0
- package/src/engine/graphics3/CameraSystem.js +170 -0
- package/src/engine/graphics3/CameraSystem3.d.ts +6 -45
- package/src/engine/graphics3/CameraSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/CameraSystem3.js +6 -166
- package/src/engine/graphics3/DebugDrawSystem.d.ts +72 -0
- package/src/engine/graphics3/DebugDrawSystem.d.ts.map +1 -0
- package/src/engine/graphics3/DebugDrawSystem.js +205 -0
- package/src/engine/graphics3/DebugDrawSystem3.d.ts +6 -68
- package/src/engine/graphics3/DebugDrawSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/DebugDrawSystem3.js +6 -201
- package/src/engine/graphics3/DecalSystem.d.ts +81 -0
- package/src/engine/graphics3/DecalSystem.d.ts.map +1 -0
- package/src/engine/graphics3/DecalSystem.js +441 -0
- package/src/engine/graphics3/DecalSystem3.d.ts +6 -77
- package/src/engine/graphics3/DecalSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/DecalSystem3.js +6 -437
- package/src/engine/graphics3/FogOfWarSystem.d.ts +74 -0
- package/src/engine/graphics3/FogOfWarSystem.d.ts.map +1 -0
- package/src/engine/graphics3/FogOfWarSystem.js +265 -0
- package/src/engine/graphics3/FogOfWarSystem3.d.ts +6 -70
- package/src/engine/graphics3/FogOfWarSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/FogOfWarSystem3.js +6 -261
- package/src/engine/graphics3/GraphicsEngine.d.ts +340 -0
- package/src/engine/graphics3/GraphicsEngine.d.ts.map +1 -0
- package/src/engine/graphics3/GraphicsEngine.js +790 -0
- package/src/engine/graphics3/GraphicsEngine3.d.ts +6 -336
- package/src/engine/graphics3/GraphicsEngine3.d.ts.map +1 -1
- package/src/engine/graphics3/GraphicsEngine3.js +6 -786
- package/src/engine/graphics3/HighlightSystem.d.ts +82 -0
- package/src/engine/graphics3/HighlightSystem.d.ts.map +1 -0
- package/src/engine/graphics3/HighlightSystem.js +241 -0
- package/src/engine/graphics3/HighlightSystem3.d.ts +6 -78
- package/src/engine/graphics3/HighlightSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/HighlightSystem3.js +6 -237
- package/src/engine/graphics3/LightSystem.d.ts +40 -0
- package/src/engine/graphics3/LightSystem.d.ts.map +1 -0
- package/src/engine/graphics3/LightSystem.js +211 -0
- package/src/engine/graphics3/LightSystem3.d.ts +6 -36
- package/src/engine/graphics3/LightSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/LightSystem3.js +6 -207
- package/src/engine/graphics3/MeshSystem.d.ts +106 -0
- package/src/engine/graphics3/MeshSystem.d.ts.map +1 -0
- package/src/engine/graphics3/MeshSystem.js +647 -0
- package/src/engine/graphics3/MeshSystem3.d.ts +6 -102
- package/src/engine/graphics3/MeshSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/MeshSystem3.js +6 -642
- package/src/engine/graphics3/ParticipatingMedia.d.ts +2 -2
- package/src/engine/graphics3/ParticipatingMedia.js +203 -203
- package/src/engine/graphics3/ParticipatingMediaSystem.d.ts +87 -0
- package/src/engine/graphics3/ParticipatingMediaSystem.d.ts.map +1 -0
- package/src/engine/graphics3/ParticipatingMediaSystem.js +184 -0
- package/src/engine/graphics3/ParticipatingMediaSystem3.d.ts +6 -83
- package/src/engine/graphics3/ParticipatingMediaSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/ParticipatingMediaSystem3.js +6 -180
- package/src/engine/graphics3/ParticleEmitterSystem.d.ts +76 -0
- package/src/engine/graphics3/ParticleEmitterSystem.d.ts.map +1 -0
- package/src/engine/graphics3/ParticleEmitterSystem.js +289 -0
- package/src/engine/graphics3/ParticleEmitterSystem3.d.ts +6 -72
- package/src/engine/graphics3/ParticleEmitterSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/ParticleEmitterSystem3.js +6 -285
- package/src/engine/graphics3/PathDisplaySystem.d.ts +70 -0
- package/src/engine/graphics3/PathDisplaySystem.d.ts.map +1 -0
- package/src/engine/graphics3/PathDisplaySystem.js +309 -0
- package/src/engine/graphics3/PathDisplaySystem3.d.ts +6 -66
- package/src/engine/graphics3/PathDisplaySystem3.d.ts.map +1 -1
- package/src/engine/graphics3/PathDisplaySystem3.js +6 -305
- package/src/engine/graphics3/Pickable.d.ts +1 -1
- package/src/engine/graphics3/Pickable.js +65 -65
- package/src/engine/graphics3/PickingQuery.d.ts +1 -1
- package/src/engine/graphics3/PickingQuery.js +48 -48
- package/src/engine/graphics3/PickingSystem.d.ts +67 -0
- package/src/engine/graphics3/PickingSystem.d.ts.map +1 -0
- package/src/engine/graphics3/PickingSystem.js +273 -0
- package/src/engine/graphics3/PickingSystem3.d.ts +6 -63
- package/src/engine/graphics3/PickingSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/PickingSystem3.js +6 -269
- package/src/engine/graphics3/ShadedGeometrySystem.d.ts +47 -0
- package/src/engine/graphics3/ShadedGeometrySystem.d.ts.map +1 -0
- package/src/engine/graphics3/ShadedGeometrySystem.js +169 -0
- package/src/engine/graphics3/ShadedGeometrySystem3.d.ts +6 -43
- package/src/engine/graphics3/ShadedGeometrySystem3.d.ts.map +1 -1
- package/src/engine/graphics3/ShadedGeometrySystem3.js +6 -165
- package/src/engine/graphics3/TerrainSystem.d.ts +80 -0
- package/src/engine/graphics3/TerrainSystem.d.ts.map +1 -0
- package/src/engine/graphics3/TerrainSystem.js +566 -0
- package/src/engine/graphics3/TerrainSystem3.d.ts +6 -76
- package/src/engine/graphics3/TerrainSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/TerrainSystem3.js +6 -562
- package/src/engine/graphics3/TooltipComponentSystem.d.ts +65 -0
- package/src/engine/graphics3/TooltipComponentSystem.d.ts.map +1 -0
- package/src/engine/graphics3/TooltipComponentSystem.js +328 -0
- package/src/engine/graphics3/TooltipComponentSystem3.d.ts +6 -61
- package/src/engine/graphics3/TooltipComponentSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/TooltipComponentSystem3.js +6 -324
- package/src/engine/graphics3/Trail3DSystem.d.ts +73 -0
- package/src/engine/graphics3/Trail3DSystem.d.ts.map +1 -0
- package/src/engine/graphics3/Trail3DSystem.js +221 -0
- package/src/engine/graphics3/Trail3DSystem3.d.ts +6 -69
- package/src/engine/graphics3/Trail3DSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/Trail3DSystem3.js +6 -217
- package/src/engine/graphics3/VolumetricLightMap.d.ts +2 -2
- package/src/engine/graphics3/VolumetricLightMap.js +2 -2
- package/src/engine/graphics3/VolumetricLightMapSystem.d.ts +98 -0
- package/src/engine/graphics3/VolumetricLightMapSystem.d.ts.map +1 -0
- package/src/engine/graphics3/VolumetricLightMapSystem.js +261 -0
- package/src/engine/graphics3/VolumetricLightMapSystem3.d.ts +6 -94
- package/src/engine/graphics3/VolumetricLightMapSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/VolumetricLightMapSystem3.js +10 -261
- package/src/engine/graphics3/WaterSystem.d.ts +59 -0
- package/src/engine/graphics3/WaterSystem.d.ts.map +1 -0
- package/src/engine/graphics3/WaterSystem.js +293 -0
- package/src/engine/graphics3/WaterSystem3.d.ts +6 -55
- package/src/engine/graphics3/WaterSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/WaterSystem3.js +6 -289
- package/src/engine/graphics3/animation/AnimationGraphController.d.ts +1 -1
- package/src/engine/graphics3/animation/AnimationGraphController.js +518 -518
- package/src/engine/graphics3/animation/ClipListPlayer.d.ts +1 -1
- package/src/engine/graphics3/animation/ClipListPlayer.js +263 -263
- package/src/engine/graphics3/animation/ClipPlayback.d.ts +2 -2
- package/src/engine/graphics3/animation/ClipPlayback.js +84 -84
- package/src/engine/graphics3/decal/graph_build_decal_clusters.d.ts.map +1 -1
- package/src/engine/graphics3/decal/graph_build_decal_clusters.js +6 -8
- package/src/engine/graphics3/decal/shader_cluster_assign_decals.d.ts +0 -7
- package/src/engine/graphics3/decal/shader_cluster_assign_decals.d.ts.map +1 -1
- package/src/engine/graphics3/decal/shader_cluster_assign_decals.js +1 -1
- package/src/engine/graphics3/decal/shader_cull_decals_frustum.d.ts +0 -4
- package/src/engine/graphics3/decal/shader_cull_decals_frustum.d.ts.map +1 -1
- package/src/engine/graphics3/decal/shader_cull_decals_frustum.js +1 -1
- package/src/engine/graphics3/highlight/pack_highlight_table.d.ts +2 -2
- package/src/engine/graphics3/highlight/pack_highlight_table.d.ts.map +1 -1
- package/src/engine/graphics3/highlight/pack_highlight_table.js +74 -74
- package/src/engine/graphics3/pose/query_entity_node_world_pose.d.ts +1 -1
- package/src/engine/graphics3/pose/query_entity_node_world_pose.js +101 -101
- package/src/engine/graphics3/preview/make_model_thumbnail.d.ts +3 -3
- package/src/engine/graphics3/preview/make_model_thumbnail.d.ts.map +1 -1
- package/src/engine/graphics3/preview/make_model_thumbnail.js +48 -48
- package/src/engine/graphics3/shade_camera_projection_ray.d.ts +1 -1
- package/src/engine/graphics3/shade_camera_projection_ray.js +77 -77
- package/src/engine/graphics3/shade_node_to_entity_composition.d.ts +1 -1
- package/src/engine/graphics3/shade_node_to_entity_composition.js +84 -84
- package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.d.ts +16 -2
- package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.d.ts.map +1 -1
- package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.js +28 -4
- package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.d.ts +1 -1
- package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.d.ts.map +1 -1
- package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.js +5 -2
- package/src/shade/device/IMMEDIATE_DATA_PLAN_2026_08_28.md +564 -451
- package/src/shade/device/ShadeGPUCommandContext.d.ts +18 -2
- package/src/shade/device/ShadeGPUCommandContext.d.ts.map +1 -1
- package/src/shade/device/ShadeGPUCommandContext.js +994 -940
- package/src/shade/device/immediate_data_supported.d.ts +33 -0
- package/src/shade/device/immediate_data_supported.d.ts.map +1 -0
- package/src/shade/device/immediate_data_supported.js +53 -0
- package/src/shade/device/mock/SoftwareGPUCommandEncoder.d.ts +18 -0
- package/src/shade/device/mock/SoftwareGPUCommandEncoder.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUCommandEncoder.js +24 -0
- package/src/shade/device/mock/SoftwareGPUComputePassEncoder.d.ts +7 -0
- package/src/shade/device/mock/SoftwareGPUComputePassEncoder.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUComputePassEncoder.js +49 -1
- package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUDevice.js +20 -2
- package/src/shade/device/mock/SoftwareGPUImmediateData.d.ts +65 -0
- package/src/shade/device/mock/SoftwareGPUImmediateData.d.ts.map +1 -0
- package/src/shade/device/mock/SoftwareGPUImmediateData.js +160 -0
- package/src/shade/device/mock/SoftwareGPURenderPassEncoder.d.ts +7 -0
- package/src/shade/device/mock/SoftwareGPURenderPassEncoder.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPURenderPassEncoder.js +50 -0
- package/src/shade/device/mock/pipeline_immediate_size.d.ts +11 -0
- package/src/shade/device/mock/pipeline_immediate_size.d.ts.map +1 -0
- package/src/shade/device/mock/pipeline_immediate_size.js +18 -0
- package/src/shade/device/pipeline/PipelineLayoutManager.d.ts.map +1 -1
- package/src/shade/device/pipeline/PipelineLayoutManager.js +1 -0
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js +0 -1
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.js +0 -1
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.js +133 -134
- package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.js +202 -202
- package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +249 -249
- package/src/shade/renderer/GraphicsContext.d.ts +9 -2
- package/src/shade/renderer/GraphicsContext.d.ts.map +1 -1
- package/src/shade/renderer/GraphicsContext.js +13 -1
- package/src/shade/renderer/STATIC_GRAPHICS_ENGINE_ASSETS.js +1 -1
- package/src/shade/renderer/animation/pose/PosePlayback.d.ts +2 -1
- package/src/shade/renderer/animation/pose/PosePlayback.d.ts.map +1 -1
- package/src/shade/renderer/animation/pose/PosePlayback.js +2 -1
- package/src/shade/renderer/animation/shader_animation_apply.d.ts.map +1 -1
- package/src/shade/renderer/animation/shader_animation_apply.js +128 -129
- package/src/shade/renderer/animation/shader_animation_pose_resolve.d.ts.map +1 -1
- package/src/shade/renderer/animation/shader_animation_pose_resolve.js +176 -177
- package/src/shade/renderer/animation/shader_animation_tick.d.ts.map +1 -1
- package/src/shade/renderer/animation/shader_animation_tick.js +125 -126
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_geometry_sphere_derive.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_geometry_sphere_derive.js +98 -99
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.js +212 -213
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_scatter.js +120 -121
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_skinned_mesh_bounds_refresh.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_skinned_mesh_bounds_refresh.js +75 -76
- package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/shader_meshlet_apply_skinning.js +371 -372
- package/src/shade/renderer/animation/skinning/shader_skin_matrix_prep.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/shader_skin_matrix_prep.js +104 -105
- package/src/shade/renderer/atmosphere/GPUSky.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/GPUSky.js +145 -142
- package/src/shade/renderer/atmosphere/MULTISCATTER_LUT_CONFIG.d.ts +34 -0
- package/src/shade/renderer/atmosphere/MULTISCATTER_LUT_CONFIG.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/MULTISCATTER_LUT_CONFIG.js +36 -0
- package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.d.ts +20 -0
- package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.js +25 -0
- package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.d.ts +14 -1
- package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.js +163 -177
- package/src/shade/renderer/atmosphere/chunk_multiscatter_sample_direction.d.ts +20 -0
- package/src/shade/renderer/atmosphere/chunk_multiscatter_sample_direction.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/chunk_multiscatter_sample_direction.js +46 -0
- package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.d.ts +11 -1
- package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.js +57 -27
- package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.d.ts +19 -1
- package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.js +69 -33
- package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.d.ts +13 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.js +35 -35
- package/src/shade/renderer/atmosphere/chunk_sky_lut_params.d.ts +13 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_params.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_params.js +38 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_texel_to_unit.d.ts +17 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_texel_to_unit.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_texel_to_unit.js +29 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_uv.d.ts +21 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_uv.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_uv.js +42 -0
- package/src/shade/renderer/atmosphere/shader_multiscatter_lut.d.ts +2 -2
- package/src/shade/renderer/atmosphere/shader_multiscatter_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/shader_multiscatter_lut.js +164 -84
- package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.js +215 -204
- package/src/shade/renderer/atmosphere/shader_transmittance_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/shader_transmittance_lut.js +79 -67
- package/src/shade/renderer/buffer/graph_inspect_gpu_buffer.js +136 -136
- package/src/shade/renderer/buffer/table/GPUDatabase.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUDatabase.js +2 -3
- package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js +319 -319
- package/src/shade/renderer/buffer/util/shader_buffer_copy_storage_to_storage.d.ts.map +1 -1
- package/src/shade/renderer/buffer/util/shader_buffer_copy_storage_to_storage.js +41 -42
- package/src/shade/renderer/buffer/util/shader_buffer_intra_copy_regions.d.ts.map +1 -1
- package/src/shade/renderer/buffer/util/shader_buffer_intra_copy_regions.js +83 -84
- package/src/shade/renderer/dynamic/shader_dynamic_mesh.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/shader_dynamic_mesh.js +177 -170
- package/src/shade/renderer/extension/RENDER_EXTENSION_DESIGN.md +918 -918
- package/src/shade/renderer/geometry/bvh/record_blas_refit.js +4 -4
- package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.d.ts.map +1 -1
- package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.js +121 -122
- package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.js +774 -774
- package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.d.ts +1 -1
- package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.d.ts.map +1 -1
- package/src/shade/renderer/geometry/meshlet/shader_meshlet_metadata_address_patch.js +69 -70
- package/src/shade/renderer/global_illumination/lpv/placement/graph_generate_probe_locations.js +367 -367
- package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.js +184 -184
- package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +1115 -1115
- package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +217 -217
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.js +142 -143
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.js +0 -1
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.js +140 -141
- package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.js +0 -1
- package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.js +0 -1
- package/src/shade/renderer/light/cluster/cull/graph_cull_lights.d.ts.map +1 -1
- package/src/shade/renderer/light/cluster/cull/graph_cull_lights.js +191 -198
- package/src/shade/renderer/light/cluster/cull/shader_cull_lights_frustum.d.ts +0 -6
- package/src/shade/renderer/light/cluster/cull/shader_cull_lights_frustum.d.ts.map +1 -1
- package/src/shade/renderer/light/cluster/cull/shader_cull_lights_frustum.js +120 -120
- package/src/shade/renderer/light/cluster/cull/shader_cull_lights_hzb.d.ts +0 -4
- package/src/shade/renderer/light/cluster/cull/shader_cull_lights_hzb.d.ts.map +1 -1
- package/src/shade/renderer/light/cluster/cull/shader_cull_lights_hzb.js +112 -112
- package/src/shade/renderer/light/cluster/graph_assign_clsuters.d.ts.map +1 -1
- package/src/shade/renderer/light/cluster/graph_assign_clsuters.js +10 -9
- package/src/shade/renderer/light/cluster/shader_cluster_assign_lights.d.ts +0 -6
- package/src/shade/renderer/light/cluster/shader_cluster_assign_lights.d.ts.map +1 -1
- package/src/shade/renderer/light/cluster/shader_cluster_assign_lights.js +1 -1
- package/src/shade/renderer/lightmap/bake/raster/shader_lightmap_to_viz_buffer.js +222 -222
- package/src/shade/renderer/lightmap/bake/tile/shader_lightmap_tile_composit.js +81 -81
- package/src/shade/renderer/material/GPUMaterialContext.js +380 -380
- package/src/shade/renderer/material/standard/fragment_gbuffer_vt.js +169 -169
- package/src/shade/renderer/object_property/shader_object_property_process.d.ts.map +1 -1
- package/src/shade/renderer/object_property/shader_object_property_process.js +83 -84
- package/src/shade/renderer/object_property/shader_refresh_all_mesh_bounds.d.ts.map +1 -1
- package/src/shade/renderer/object_property/shader_refresh_all_mesh_bounds.js +57 -58
- package/src/shade/renderer/particles/prototypeParticleSystem.js +2 -3
- package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_emit.js +117 -118
- package/src/shade/renderer/particles/shaders/shader_particle_finalize.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_finalize.js +77 -79
- package/src/shade/renderer/particles/shaders/shader_particle_render.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_render.js +190 -183
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +99 -100
- package/src/shade/renderer/particles/sort/shader_particle_sort.d.ts.map +1 -1
- package/src/shade/renderer/particles/sort/shader_particle_sort.js +158 -161
- package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +184 -184
- package/src/shade/renderer/postprocess/denoise/graph_atorus_denoise_luma.js +119 -119
- package/src/shade/renderer/postprocess/dof/raymarch/graph_postprocess_dof.js +3 -4
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.js +266 -267
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.js +270 -271
- package/src/shade/renderer/postprocess/gtao/GTAO.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/GTAO.js +4 -0
- package/src/shade/renderer/postprocess/nss/shader_nss_concat.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_concat.js +68 -69
- package/src/shade/renderer/postprocess/nss/shader_nss_conv_layer.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_conv_layer.js +225 -226
- package/src/shade/renderer/postprocess/nss/shader_nss_extract_feedback.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_extract_feedback.js +49 -50
- package/src/shade/renderer/postprocess/nss/shader_nss_postprocess.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_postprocess.js +291 -292
- package/src/shade/renderer/postprocess/nss/shader_nss_preprocess.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_preprocess.js +230 -231
- package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.d.ts +16 -2
- package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.js +12 -12
- package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.js +341 -345
- package/src/shade/renderer/rasterize/bucket/shader_count_meshlets_by_material.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/shader_count_meshlets_by_material.js +68 -69
- package/src/shade/renderer/rasterize/bucket/shader_make_meshlet_indirect_draw_commands_by_material.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/shader_make_meshlet_indirect_draw_commands_by_material.js +59 -60
- package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.d.ts +0 -2
- package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.js +57 -57
- package/src/shade/renderer/rasterize/bucket/shader_sort_meshlets_by_material.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/shader_sort_meshlets_by_material.js +64 -65
- package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.js +168 -169
- package/src/shade/renderer/rasterize/compute/graph_mesh_sphere_cull.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/compute/graph_mesh_sphere_cull.js +160 -161
- package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.js +109 -110
- package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way_full.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way_full.js +115 -116
- package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_classify_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_classify_bucket.js +139 -140
- package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_count_by_rasterization_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_count_by_rasterization_bucket.js +91 -92
- package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_rasterization_bucket_sort.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/mesh/shader_instances_rasterization_bucket_sort.js +88 -89
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_count_by_rasterization_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_count_by_rasterization_bucket.js +90 -91
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_extract_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_extract_bucket.js +65 -66
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_rasterization_bucket_sort.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_rasterization_bucket_sort.js +89 -90
- package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.js +169 -170
- package/src/shade/renderer/rasterize/expand/mesh/graph_expand_meshes_to_meshlets.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/mesh/graph_expand_meshes_to_meshlets.js +7 -3
- package/src/shade/renderer/rasterize/expand/mesh/shader_mesh_expand_to_meshlets_prefix.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/mesh/shader_mesh_expand_to_meshlets_prefix.js +89 -90
- package/src/shade/renderer/rasterize/expand/mesh/shader_meshes_to_meshlet_counts.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/mesh/shader_meshes_to_meshlet_counts.js +61 -62
- package/src/shade/renderer/rasterize/expand/pass1/filter_meshlets.2-way.compute.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/pass1/filter_meshlets.2-way.compute.js +153 -154
- package/src/shade/renderer/rasterize/fast/graph_extract_meshes_from_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/fast/graph_extract_meshes_from_bucket.js +77 -81
- package/src/shade/renderer/rasterize/native/depth/shadow_rasterization_alpha_tested_pass_descriptor.js +144 -144
- package/src/shade/renderer/rasterize/native/depth/shadow_rasterization_pass_descriptor.js +88 -88
- package/src/shade/renderer/rasterize/native/oit/shader_oit_generate_moments.js +217 -217
- package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments.js +179 -179
- package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments_ibl.js +178 -178
- package/src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.js +194 -194
- package/src/shade/renderer/rasterize/native/viz/viz_rasterization_opaque_pass_descriptor.js +76 -76
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.js +5 -1
- package/src/shade/renderer/restir/di/shader_restir_di_denoise.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/shader_restir_di_denoise.js +136 -137
- package/src/shade/renderer/restir/di/shader_restir_di_resample.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/shader_restir_di_resample.js +129 -130
- package/src/shade/renderer/restir/di/shader_restir_di_resolve.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/shader_restir_di_resolve.js +99 -100
- package/src/shade/renderer/restir/di/shader_restir_di_spatial.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/shader_restir_di_spatial.js +116 -117
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +383 -383
- package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy_naive.js +123 -123
- package/src/shade/renderer/scene/hierarchy/shader_nodes_record_input_positions.d.ts.map +1 -1
- package/src/shade/renderer/scene/hierarchy/shader_nodes_record_input_positions.js +64 -65
- package/src/shade/renderer/scene/hierarchy/shader_nodes_update_transform_hierarchy.d.ts.map +1 -1
- package/src/shade/renderer/scene/hierarchy/shader_nodes_update_transform_hierarchy.js +372 -373
- package/src/shade/renderer/scene/hierarchy/shader_nodes_update_transform_hierarchy_naive.d.ts.map +1 -1
- package/src/shade/renderer/scene/hierarchy/shader_nodes_update_transform_hierarchy_naive.js +111 -112
- package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.d.ts.map +1 -1
- package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.js +0 -1
- package/src/shade/renderer/shader/ComputeShader.d.ts +24 -3
- package/src/shade/renderer/shader/ComputeShader.d.ts.map +1 -1
- package/src/shade/renderer/shader/ComputeShader.js +350 -292
- package/src/shade/renderer/shader/ImageShader.d.ts.map +1 -1
- package/src/shade/renderer/shader/ImageShader.js +217 -214
- package/src/shade/renderer/shader/ShaderDescriptor.d.ts +5 -0
- package/src/shade/renderer/shader/ShaderDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/ShaderDescriptor.js +46 -0
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.d.ts +18 -0
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.js +32 -0
- package/src/shade/renderer/shader/chunk/atmosphere/PLANET_CENTER_DECLARATION.d.ts +7 -0
- package/src/shade/renderer/shader/chunk/atmosphere/PLANET_CENTER_DECLARATION.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/PLANET_CENTER_DECLARATION.js +17 -6
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.d.ts +21 -0
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.js +69 -0
- package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_contains_aabb3.d.ts +9 -0
- package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_contains_aabb3.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_contains_aabb3.js +22 -0
- package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_from_transformed_corners.d.ts +16 -0
- package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_from_transformed_corners.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_from_transformed_corners.js +41 -0
- package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_m4.d.ts +11 -0
- package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_m4.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_m4.js +15 -19
- package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_plane_matrix.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_plane_matrix.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_plane_matrix.js +44 -0
- package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_octahedral_unit_decode.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_octahedral_unit_decode.js +1 -4
- package/src/shade/renderer/shader/compiler/CodeChunk.d.ts +7 -1
- package/src/shade/renderer/shader/compiler/CodeChunk.d.ts.map +1 -1
- package/src/shade/renderer/shader/compiler/CodeChunk.js +37 -2
- package/src/shade/renderer/shader/graph/compute/compute_binding_read_names.d.ts.map +1 -1
- package/src/shade/renderer/shader/graph/compute/compute_binding_read_names.js +6 -0
- package/src/shade/renderer/shader/graph/compute/graph_compute_indirect_pass.js +1 -1
- package/src/shade/renderer/shader/graph/compute/graph_compute_pass.js +1 -1
- package/src/shade/renderer/shader/graph/graph_image_pass.js +1 -1
- package/src/shade/renderer/shader/graph/graph_prepare_bindings.d.ts.map +1 -1
- package/src/shade/renderer/shader/graph/graph_prepare_bindings.js +7 -0
- package/src/shade/renderer/shader/graph/graph_prepare_pass_input_data.d.ts +3 -1
- package/src/shade/renderer/shader/graph/graph_prepare_pass_input_data.d.ts.map +1 -1
- package/src/shade/renderer/shader/graph/graph_prepare_pass_input_data.js +12 -1
- package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/pass/RenderPassDescriptor.js +1 -0
- package/src/shade/renderer/shader/resource/IMMEDIATE_DATA.d.ts +21 -0
- package/src/shade/renderer/shader/resource/IMMEDIATE_DATA.d.ts.map +1 -0
- package/src/shade/renderer/shader/resource/IMMEDIATE_DATA.js +21 -0
- package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts +59 -1
- package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.js +195 -2
- package/src/shade/renderer/shader/type/type_has_arrays.d.ts +14 -0
- package/src/shade/renderer/shader/type/type_has_arrays.d.ts.map +1 -0
- package/src/shade/renderer/shader/type/type_has_arrays.js +33 -0
- package/src/shade/renderer/shader/util/compute_infer_workgroup_size_from_source.d.ts +47 -0
- package/src/shade/renderer/shader/util/compute_infer_workgroup_size_from_source.d.ts.map +1 -0
- package/src/shade/renderer/shader/util/compute_infer_workgroup_size_from_source.js +448 -0
- package/src/shade/renderer/shadow/map/csm/graph_csm_setup_cascades.js +3 -3
- package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.js +3 -3
- package/src/shade/renderer/shadow/ray/staged/trace/graph_trace_rays.js +2 -2
- package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.js +4 -4
- package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.d.ts.map +1 -1
- package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.js +231 -232
- package/src/shade/renderer/view/GPUViewSkyContext.d.ts.map +1 -1
- package/src/shade/renderer/view/GPUViewSkyContext.js +169 -173
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +1 -1
- package/src/shade/renderer/volumetrics/NOTES.md +238 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_local_light_shadow.js +145 -145
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sun_optical_depth.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sun_optical_depth.js +38 -15
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts +14 -2
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +591 -577
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts +17 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.js +20 -2
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.js +29 -18
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_scattering_lut.js +260 -260
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_sun_shadow_volume.d.ts +53 -3
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_sun_shadow_volume.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_sun_shadow_volume.js +175 -59
- package/src/shade/renderer/volumetrics/taa/shader_volumetrics_taa.d.ts +0 -2
- package/src/shade/renderer/volumetrics/taa/shader_volumetrics_taa.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/taa/shader_volumetrics_taa.js +17 -6
- package/src/shade/renderer/water/shader_water.js +246 -246
- package/src/shade/vitest.setup.mjs +1 -1
- package/src/shade/wgsl/emulator/ComputeShaderEmulator.js +291 -291
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +8 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.js +1325 -1297
- package/src/view/minimap/Minimap.d.ts +2 -2
- package/src/view/minimap/Minimap.d.ts.map +1 -1
- package/src/view/minimap/Minimap.js +225 -225
- package/src/view/minimap/dom/MinimapCameraView.d.ts +3 -3
- package/src/view/minimap/dom/MinimapCameraView.d.ts.map +1 -1
- package/src/view/minimap/dom/MinimapCameraView.js +206 -206
- package/src/shade/renderer/shadow/map/csm/shader/shader_setup_cascades.d.ts +0 -3
- package/src/shade/renderer/shadow/map/csm/shader/shader_setup_cascades.d.ts.map +0 -1
- package/src/shade/renderer/shadow/map/csm/shader/shader_setup_cascades.js +0 -20
- package/src/shade/renderer/volumetrics/VOLUMETRICS_WORKGROUP_RESOLUTION.d.ts +0 -2
- package/src/shade/renderer/volumetrics/VOLUMETRICS_WORKGROUP_RESOLUTION.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/VOLUMETRICS_WORKGROUP_RESOLUTION.js +0 -1
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
import { assert } from "../../../../core/assert.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* WGSL blankspace, as the set of code points with the Unicode `Pattern_White_Space` property.
|
|
5
|
+
*
|
|
6
|
+
* Spelled out rather than using `\s`, which is wrong in both directions here: it omits next line
|
|
7
|
+
* (U+0085) and the two bidi marks that WGSL counts as blankspace, and it adds no-break space, the
|
|
8
|
+
* ogham space mark, the en/em quad family and the byte order mark, which WGSL does not.
|
|
9
|
+
*
|
|
10
|
+
* @see https://www.w3.org/TR/WGSL/#blankspace-and-line-breaks
|
|
11
|
+
* @type {string}
|
|
12
|
+
*/
|
|
13
|
+
const BLANKSPACE = '[\\u0020\\u0009\\u000A\\u000B\\u000C\\u000D\\u0085\\u200E\\u200F\\u2028\\u2029]';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* A WGSL `int_literal`, being a `decimal_int_literal` or a `hex_int_literal`.
|
|
17
|
+
*
|
|
18
|
+
* The hexadecimal form is tried first, otherwise `0x40` would match the bare `0` of the decimal
|
|
19
|
+
* form and leave `x40` behind. The decimal form rejects a leading zero on a non-zero number, which
|
|
20
|
+
* WGSL forbids so that `012` cannot be misread as octal by someone arriving from another language.
|
|
21
|
+
*
|
|
22
|
+
* @see https://www.w3.org/TR/WGSL/#syntax-int_literal
|
|
23
|
+
* @type {string}
|
|
24
|
+
*/
|
|
25
|
+
const INT_LITERAL = '(?:0[xX][0-9a-fA-F]+[iu]?|[1-9][0-9]*[iu]?|0[iu]?)';
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* A WGSL `ident_pattern_token`.
|
|
29
|
+
*
|
|
30
|
+
* Deliberately looser than the grammar, which also excludes the keywords and the lone underscore.
|
|
31
|
+
* Nothing is lost by admitting them: a name is only ever looked up among the module's constants,
|
|
32
|
+
* and `const if = 1;` is no more a declaration than `if` is an identifier.
|
|
33
|
+
*
|
|
34
|
+
* No identifier may begin with a digit, which is what lets a matched argument be sorted into
|
|
35
|
+
* literal or name by its first code point alone.
|
|
36
|
+
*
|
|
37
|
+
* @see https://www.w3.org/TR/WGSL/#identifiers
|
|
38
|
+
* @type {string}
|
|
39
|
+
*/
|
|
40
|
+
const IDENTIFIER = '(?:[_\\p{XID_Start}][\\p{XID_Continue}]*)';
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* One argument of `@workgroup_size`: an integer literal, or a name that may resolve to one.
|
|
44
|
+
*
|
|
45
|
+
* @type {string}
|
|
46
|
+
*/
|
|
47
|
+
const ARGUMENT = `(?:${INT_LITERAL}|${IDENTIFIER})`;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* `@workgroup_size` up to and including its opening parenthesis.
|
|
51
|
+
*
|
|
52
|
+
* `'@'` and `'workgroup_size'` are separate tokens in the grammar, and the tokenizer discards
|
|
53
|
+
* blankspace ahead of every token, so `@ workgroup_size (` is as valid as `@workgroup_size(`. The
|
|
54
|
+
* lookahead stops `@workgroup_size_hint(...)` from matching, because the longest-match rule reads
|
|
55
|
+
* that as a single identifier token that merely starts with the name we are looking for.
|
|
56
|
+
*
|
|
57
|
+
* @see https://www.w3.org/TR/WGSL/#syntax-workgroup_size_attr
|
|
58
|
+
* @type {RegExp}
|
|
59
|
+
*/
|
|
60
|
+
const ATTRIBUTE_HEAD = new RegExp(
|
|
61
|
+
`@${BLANKSPACE}*workgroup_size(?!\\p{XID_Continue})${BLANKSPACE}*\\(`,
|
|
62
|
+
'gu'
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* The argument list of `@workgroup_size`, matched sticky from just past the opening parenthesis.
|
|
67
|
+
*
|
|
68
|
+
* One, two or three arguments, with a single optional trailing comma before the closing
|
|
69
|
+
* parenthesis. Requiring `)` immediately after the arguments is what makes a compound expression
|
|
70
|
+
* such as `BLOCK_DIM / 2u` fail to match outright rather than match some prefix of itself.
|
|
71
|
+
*
|
|
72
|
+
* @type {RegExp}
|
|
73
|
+
*/
|
|
74
|
+
const ATTRIBUTE_ARGUMENTS = new RegExp(
|
|
75
|
+
`${BLANKSPACE}*(${ARGUMENT})`
|
|
76
|
+
+ `(?:${BLANKSPACE}*,${BLANKSPACE}*(${ARGUMENT}))?`
|
|
77
|
+
+ `(?:${BLANKSPACE}*,${BLANKSPACE}*(${ARGUMENT}))?`
|
|
78
|
+
+ `${BLANKSPACE}*(?:,${BLANKSPACE}*)?\\)`,
|
|
79
|
+
'uy'
|
|
80
|
+
);
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* A `const` declaration whose value is written as a plain integer literal.
|
|
84
|
+
*
|
|
85
|
+
* This is one level of aliasing and no more: the value must be the literal itself, so
|
|
86
|
+
* `const BLOCK_DIM = 256u;` and `const BLOCK_DIM: u32 = 256u;` are read, while
|
|
87
|
+
* `const HALF_BLOCK = BLOCK_DIM / 2u;` does not match at all and that name stays unresolved. One
|
|
88
|
+
* level is the whole of what a shader needs in order to state its block size once, and stopping
|
|
89
|
+
* there keeps this a scanner rather than the beginnings of a const-expression evaluator.
|
|
90
|
+
*
|
|
91
|
+
* The lookaround around `const` keeps it a whole token, so neither `myconst` nor `const_assert` is
|
|
92
|
+
* mistaken for the keyword.
|
|
93
|
+
*
|
|
94
|
+
* @see https://www.w3.org/TR/WGSL/#const-decls
|
|
95
|
+
* @type {RegExp}
|
|
96
|
+
*/
|
|
97
|
+
const CONST_DECLARATION = new RegExp(
|
|
98
|
+
`(?<!\\p{XID_Continue})const(?!\\p{XID_Continue})`
|
|
99
|
+
+ `${BLANKSPACE}*(${IDENTIFIER})${BLANKSPACE}*`
|
|
100
|
+
+ `(?::${BLANKSPACE}*${IDENTIFIER}${BLANKSPACE}*)?`
|
|
101
|
+
+ `=${BLANKSPACE}*(${INT_LITERAL})${BLANKSPACE}*;`,
|
|
102
|
+
'gu'
|
|
103
|
+
);
|
|
104
|
+
|
|
105
|
+
const SOLIDUS = 0x2F;
|
|
106
|
+
const ASTERISK = 0x2A;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Code points that end a line-ending comment, being the WGSL line breaks.
|
|
110
|
+
*
|
|
111
|
+
* Carriage return terminates the comment whether or not a line feed follows it; leaving that line
|
|
112
|
+
* feed behind is harmless, as it is blankspace either way.
|
|
113
|
+
*
|
|
114
|
+
* @see https://www.w3.org/TR/WGSL/#blankspace-and-line-breaks
|
|
115
|
+
* @param {number} code_point
|
|
116
|
+
* @returns {boolean}
|
|
117
|
+
*/
|
|
118
|
+
function is_line_break(code_point) {
|
|
119
|
+
return code_point === 0x000A
|
|
120
|
+
|| code_point === 0x000B
|
|
121
|
+
|| code_point === 0x000C
|
|
122
|
+
|| code_point === 0x000D
|
|
123
|
+
|| code_point === 0x0085
|
|
124
|
+
|| code_point === 0x2028
|
|
125
|
+
|| code_point === 0x2029;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Replace every comment with a single space, which is the first step the spec takes when parsing a
|
|
130
|
+
* module, before it has any notion of tokens or attributes.
|
|
131
|
+
*
|
|
132
|
+
* This has to happen before the search, and it cannot be folded into the search as another
|
|
133
|
+
* alternative in a regular expression: WGSL block comments nest, and the spec points out that this
|
|
134
|
+
* puts them outside the regular languages. A commented-out `@workgroup_size(1)` sitting above a
|
|
135
|
+
* real entry point is otherwise indistinguishable from the real thing.
|
|
136
|
+
*
|
|
137
|
+
* An unterminated block comment is not a legal comment at all, so such a module is already invalid.
|
|
138
|
+
* It is treated as running to the end of the source, which is the reading that declines to find an
|
|
139
|
+
* attribute inside the wreckage rather than inventing one.
|
|
140
|
+
*
|
|
141
|
+
* @see https://www.w3.org/TR/WGSL/#parsing
|
|
142
|
+
* @param {string} code WGSL source
|
|
143
|
+
* @returns {string}
|
|
144
|
+
*/
|
|
145
|
+
function strip_comments(code) {
|
|
146
|
+
if (!code.includes('/')) {
|
|
147
|
+
// no comment can exist without a solidus, and most shaders reach here
|
|
148
|
+
return code;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
const length = code.length;
|
|
152
|
+
|
|
153
|
+
let result = '';
|
|
154
|
+
let copy_from = 0;
|
|
155
|
+
let i = 0;
|
|
156
|
+
|
|
157
|
+
while (i < length) {
|
|
158
|
+
|
|
159
|
+
if (code.charCodeAt(i) !== SOLIDUS) {
|
|
160
|
+
i++;
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
const next = code.charCodeAt(i + 1);
|
|
165
|
+
|
|
166
|
+
if (next === SOLIDUS) {
|
|
167
|
+
|
|
168
|
+
result += code.slice(copy_from, i) + ' ';
|
|
169
|
+
|
|
170
|
+
i += 2;
|
|
171
|
+
|
|
172
|
+
while (i < length && !is_line_break(code.charCodeAt(i))) {
|
|
173
|
+
i++;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
copy_from = i;
|
|
177
|
+
|
|
178
|
+
} else if (next === ASTERISK) {
|
|
179
|
+
|
|
180
|
+
result += code.slice(copy_from, i) + ' ';
|
|
181
|
+
|
|
182
|
+
i += 2;
|
|
183
|
+
|
|
184
|
+
let depth = 1;
|
|
185
|
+
|
|
186
|
+
while (i < length && depth > 0) {
|
|
187
|
+
|
|
188
|
+
const head = code.charCodeAt(i);
|
|
189
|
+
const tail = code.charCodeAt(i + 1);
|
|
190
|
+
|
|
191
|
+
if (head === SOLIDUS && tail === ASTERISK) {
|
|
192
|
+
depth++;
|
|
193
|
+
i += 2;
|
|
194
|
+
} else if (head === ASTERISK && tail === SOLIDUS) {
|
|
195
|
+
depth--;
|
|
196
|
+
i += 2;
|
|
197
|
+
} else {
|
|
198
|
+
i++;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
copy_from = i;
|
|
204
|
+
|
|
205
|
+
} else {
|
|
206
|
+
i++;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
return result + code.slice(copy_from);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* The start of an attribute, for quoting back in a diagnostic.
|
|
216
|
+
*
|
|
217
|
+
* Quoted rather than located by offset: the search runs over the comment-stripped source, whose
|
|
218
|
+
* offsets drift from the caller's source by however much comment text was removed ahead of them, so
|
|
219
|
+
* any index reported here would point somewhere subtly wrong in the file the caller is reading.
|
|
220
|
+
*
|
|
221
|
+
* @param {string} source comment-stripped WGSL
|
|
222
|
+
* @param {number} index
|
|
223
|
+
* @returns {string}
|
|
224
|
+
*/
|
|
225
|
+
function quote_attribute(source, index) {
|
|
226
|
+
const LIMIT = 64;
|
|
227
|
+
|
|
228
|
+
const excerpt = source.slice(index, index + LIMIT);
|
|
229
|
+
|
|
230
|
+
return source.length > index + LIMIT
|
|
231
|
+
? `'${excerpt}...'`
|
|
232
|
+
: `'${excerpt}'`;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Read one integer literal as a number.
|
|
237
|
+
*
|
|
238
|
+
* The `i`/`u` suffix is dropped; it records the literal's type, which has no bearing on its value.
|
|
239
|
+
*
|
|
240
|
+
* @param {string} literal
|
|
241
|
+
* @returns {number}
|
|
242
|
+
*/
|
|
243
|
+
function literal_to_number(literal) {
|
|
244
|
+
const suffix = literal.charCodeAt(literal.length - 1);
|
|
245
|
+
|
|
246
|
+
const digits = (suffix === 0x69 /* i */ || suffix === 0x75 /* u */)
|
|
247
|
+
? literal.slice(0, -1)
|
|
248
|
+
: literal;
|
|
249
|
+
|
|
250
|
+
return Number(digits);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Whether a matched argument is an integer literal rather than a name.
|
|
255
|
+
*
|
|
256
|
+
* The argument came out of {@link ARGUMENT}, so it is one or the other, and no identifier may begin
|
|
257
|
+
* with a digit — the first code point settles it.
|
|
258
|
+
*
|
|
259
|
+
* @param {string} argument
|
|
260
|
+
* @returns {boolean}
|
|
261
|
+
*/
|
|
262
|
+
function is_int_literal(argument) {
|
|
263
|
+
const first = argument.charCodeAt(0);
|
|
264
|
+
|
|
265
|
+
return first >= 0x30 /* 0 */ && first <= 0x39 /* 9 */;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* Every name the module binds directly to an integer literal with `const`.
|
|
270
|
+
*
|
|
271
|
+
* A name declared twice with disagreeing values maps to `null` rather than to either of them. WGSL
|
|
272
|
+
* lets a function-scope `const` shadow a module-scope one, and telling those apart is a question of
|
|
273
|
+
* scope, which this scanner does not track — so a name that means two things is taken to mean
|
|
274
|
+
* neither.
|
|
275
|
+
*
|
|
276
|
+
* @param {string} source comment-stripped WGSL
|
|
277
|
+
* @returns {Map<string, number|null>} name to value, or to `null` where declarations disagree
|
|
278
|
+
*/
|
|
279
|
+
function collect_integer_constants(source) {
|
|
280
|
+
const result = new Map();
|
|
281
|
+
|
|
282
|
+
CONST_DECLARATION.lastIndex = 0;
|
|
283
|
+
|
|
284
|
+
let declaration;
|
|
285
|
+
|
|
286
|
+
while ((declaration = CONST_DECLARATION.exec(source)) !== null) {
|
|
287
|
+
|
|
288
|
+
const name = declaration[1];
|
|
289
|
+
const value = literal_to_number(declaration[2]);
|
|
290
|
+
|
|
291
|
+
const existing = result.get(name);
|
|
292
|
+
|
|
293
|
+
result.set(name, (existing === undefined || existing === value) ? value : null);
|
|
294
|
+
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
return result;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
/**
|
|
301
|
+
* Recover a compute entry point's workgroup size from its WGSL source.
|
|
302
|
+
*
|
|
303
|
+
* Follows the `workgroup_size_attr` grammar, so every spelling below is read alike, and the omitted
|
|
304
|
+
* dimensions default to `1`:
|
|
305
|
+
*
|
|
306
|
+
* ```wgsl
|
|
307
|
+
* @workgroup_size(64) // -> [64, 1, 1]
|
|
308
|
+
* @workgroup_size(8, 8) // -> [8, 8, 1]
|
|
309
|
+
* @workgroup_size( 8 , 8 , 4 , ) // -> [8, 8, 4], blankspace anywhere, trailing comma
|
|
310
|
+
* @workgroup_size(0x40u) // -> [64, 1, 1], hexadecimal, and the i/u type suffixes
|
|
311
|
+
* ```
|
|
312
|
+
*
|
|
313
|
+
* An argument may also name a `const` that the same module binds directly to an integer literal,
|
|
314
|
+
* which is how a shader states its block size once and then uses it in both the attribute and the
|
|
315
|
+
* body:
|
|
316
|
+
*
|
|
317
|
+
* ```wgsl
|
|
318
|
+
* const BLOCK_DIM = 256u;
|
|
319
|
+
* @workgroup_size(BLOCK_DIM) // -> [256, 1, 1]
|
|
320
|
+
* ```
|
|
321
|
+
*
|
|
322
|
+
* Comments count as blankspace and are removed first, so they may sit between any two tokens of the
|
|
323
|
+
* attribute, and an attribute that is itself commented out is correctly not found.
|
|
324
|
+
*
|
|
325
|
+
* **One level of aliasing, and no arithmetic.** WGSL permits any const-expression or
|
|
326
|
+
* override-expression, so `@workgroup_size(BLOCK_DIM / 2u)` is legal, and so is
|
|
327
|
+
* `@workgroup_size(WG_X)` for an `override WG_X` whose value only arrives with the pipeline.
|
|
328
|
+
* Neither is resolvable from the source text alone. Such a shader throws rather than being guessed
|
|
329
|
+
* at, because every caller for this number divides a thread count by it, and a wrong divisor
|
|
330
|
+
* silently dispatches the wrong fraction of the workload. A loud failure is recoverable; a
|
|
331
|
+
* plausible one is not.
|
|
332
|
+
*
|
|
333
|
+
* Entry points that disagree are an error for the same reason. A module may hold several, and
|
|
334
|
+
* choosing between two conflicting sizes would be choosing at random.
|
|
335
|
+
*
|
|
336
|
+
* @param {string} code WGSL source
|
|
337
|
+
* @returns {[number, number, number]} `[x, y, z]`
|
|
338
|
+
* @throws {Error} if no `@workgroup_size` attribute is present, if its arguments are neither
|
|
339
|
+
* integer literals nor names resolving to one, if a dimension is not a positive integer, or if
|
|
340
|
+
* entry points disagree on the size
|
|
341
|
+
*
|
|
342
|
+
* @author Alex Goldring
|
|
343
|
+
* @copyright Company Named Limited (c) 2026
|
|
344
|
+
*/
|
|
345
|
+
export function compute_infer_workgroup_size_from_source(code) {
|
|
346
|
+
assert.isString(code, 'code');
|
|
347
|
+
|
|
348
|
+
const source = strip_comments(code);
|
|
349
|
+
|
|
350
|
+
ATTRIBUTE_HEAD.lastIndex = 0;
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* Built on first demand, as most shaders spell the size out and never ask for it.
|
|
354
|
+
* @type {Map<string, number|null>|null}
|
|
355
|
+
*/
|
|
356
|
+
let constants = null;
|
|
357
|
+
|
|
358
|
+
let result = null;
|
|
359
|
+
|
|
360
|
+
let head;
|
|
361
|
+
|
|
362
|
+
while ((head = ATTRIBUTE_HEAD.exec(source)) !== null) {
|
|
363
|
+
|
|
364
|
+
ATTRIBUTE_ARGUMENTS.lastIndex = head.index + head[0].length;
|
|
365
|
+
|
|
366
|
+
const args = ATTRIBUTE_ARGUMENTS.exec(source);
|
|
367
|
+
|
|
368
|
+
if (args === null) {
|
|
369
|
+
throw new Error(
|
|
370
|
+
`@workgroup_size does not have one to three arguments, each an integer literal or a`
|
|
371
|
+
+ ` name, and nothing else can be read from source: ${quote_attribute(source, head.index)}`
|
|
372
|
+
);
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
const size = [1, 1, 1];
|
|
376
|
+
|
|
377
|
+
for (let i = 0; i < 3; i++) {
|
|
378
|
+
|
|
379
|
+
const argument = args[i + 1];
|
|
380
|
+
|
|
381
|
+
if (argument === undefined) {
|
|
382
|
+
// "The second parameter, if provided, specifies the y dimension, otherwise is
|
|
383
|
+
// assumed to be 1."
|
|
384
|
+
continue;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
if (is_int_literal(argument)) {
|
|
388
|
+
size[i] = literal_to_number(argument);
|
|
389
|
+
continue;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
if (constants === null) {
|
|
393
|
+
constants = collect_integer_constants(source);
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
const value = constants.get(argument);
|
|
397
|
+
|
|
398
|
+
if (value === undefined) {
|
|
399
|
+
throw new Error(
|
|
400
|
+
`@workgroup_size argument '${argument}' is not an integer literal, and the module`
|
|
401
|
+
+ ` has no 'const ${argument} = <integer literal>;' to resolve it by — an override,`
|
|
402
|
+
+ ` or a const bound to an expression, cannot be read from source:`
|
|
403
|
+
+ ` ${quote_attribute(source, head.index)}`
|
|
404
|
+
);
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
if (value === null) {
|
|
408
|
+
throw new Error(
|
|
409
|
+
`@workgroup_size argument '${argument}' has conflicting 'const' declarations, so`
|
|
410
|
+
+ ` which of them the attribute sees cannot be told from source:`
|
|
411
|
+
+ ` ${quote_attribute(source, head.index)}`
|
|
412
|
+
);
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
size[i] = value;
|
|
416
|
+
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
for (let i = 0; i < 3; i++) {
|
|
420
|
+
const dimension = size[i];
|
|
421
|
+
|
|
422
|
+
if (!Number.isSafeInteger(dimension) || dimension < 1) {
|
|
423
|
+
// "A shader-creation error results if any specified parameter is a const-expression
|
|
424
|
+
// that evaluates to a non-positive value."
|
|
425
|
+
throw new Error(
|
|
426
|
+
`@workgroup_size has dimension ${'xyz'[i]}=${dimension},`
|
|
427
|
+
+ ` expected a positive integer: ${quote_attribute(source, head.index)}`
|
|
428
|
+
);
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
if (result === null) {
|
|
433
|
+
result = size;
|
|
434
|
+
} else if (result[0] !== size[0] || result[1] !== size[1] || result[2] !== size[2]) {
|
|
435
|
+
throw new Error(
|
|
436
|
+
`source declares more than one workgroup size, [${result}] and [${size}]`
|
|
437
|
+
+ ` in ${quote_attribute(source, head.index)}, so no single size can be inferred`
|
|
438
|
+
);
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
if (result === null) {
|
|
444
|
+
throw new Error('source does not declare a @workgroup_size attribute');
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
return result;
|
|
448
|
+
}
|
|
@@ -27,14 +27,14 @@ export function graph_csm_setup_cascades({
|
|
|
27
27
|
|
|
28
28
|
const encoder = context.encoder;
|
|
29
29
|
|
|
30
|
-
shader_depth_reduce.
|
|
30
|
+
shader_depth_reduce.dispatchThreads({
|
|
31
31
|
encoder,
|
|
32
32
|
bindings: {
|
|
33
33
|
tDepth: depth,
|
|
34
34
|
output,
|
|
35
35
|
},
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
thread_count_x: depth.width,
|
|
37
|
+
thread_count_y: depth.height,
|
|
38
38
|
});
|
|
39
39
|
|
|
40
40
|
}
|
|
@@ -41,10 +41,10 @@ export function graph_gen_rays({
|
|
|
41
41
|
|
|
42
42
|
const scene_ctx = view.scene;
|
|
43
43
|
|
|
44
|
-
shader_generate_rays.
|
|
44
|
+
shader_generate_rays.dispatchThreads({
|
|
45
45
|
encoder: context.encoder,
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
thread_count_x: resolution[0],
|
|
47
|
+
thread_count_y: resolution[1],
|
|
48
48
|
bindings: {
|
|
49
49
|
settings,
|
|
50
50
|
camera: view.camera.buffer.buffer,
|
|
@@ -50,9 +50,9 @@ export function graph_trace_rays({
|
|
|
50
50
|
// sees a different sample pattern from each glass occluder hit.
|
|
51
51
|
const seed = (view.frame_index | 0) >>> 0;
|
|
52
52
|
|
|
53
|
-
shader_trace_rays.
|
|
53
|
+
shader_trace_rays.dispatchThreads({
|
|
54
54
|
encoder: context.encoder,
|
|
55
|
-
|
|
55
|
+
thread_count_x: resolution[0] * resolution[1],
|
|
56
56
|
bindings: {
|
|
57
57
|
resolution_width: context.encoder.allocateTransientValueBuffer(u32, resolution[0]),
|
|
58
58
|
random_seed: context.encoder.allocateTransientValueBuffer(u32, seed),
|
|
@@ -147,7 +147,7 @@ export class CascadedSceneSDF {
|
|
|
147
147
|
*/
|
|
148
148
|
const blas = geometries.blas;
|
|
149
149
|
|
|
150
|
-
shader.
|
|
150
|
+
shader.dispatchThreads({
|
|
151
151
|
encoder: command_ctx,
|
|
152
152
|
bindings: {
|
|
153
153
|
output_texture: this.#texture.obtainView(),
|
|
@@ -161,9 +161,9 @@ export class CascadedSceneSDF {
|
|
|
161
161
|
meshlet_metadata: geometries.meshlets.buffer_metadata,
|
|
162
162
|
meshlet_data: geometries.meshlets.buffer_data,
|
|
163
163
|
},
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
164
|
+
thread_count_x: size[0],
|
|
165
|
+
thread_count_y: size[1],
|
|
166
|
+
thread_count_z: size[2],
|
|
167
167
|
});
|
|
168
168
|
|
|
169
169
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build_shader_vt_feedback.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/texture/virtual/build_shader_vt_feedback.js"],"names":[],"mappings":"AAkDA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH;IAJ6B,eAAe,EAAjC,SAAS;IACM,aAAa,EAA5B,MAAM;IACJ,aAAa,
|
|
1
|
+
{"version":3,"file":"build_shader_vt_feedback.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/texture/virtual/build_shader_vt_feedback.js"],"names":[],"mappings":"AAkDA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH;IAJ6B,eAAe,EAAjC,SAAS;IACM,aAAa,EAA5B,MAAM;IACJ,aAAa,CAiKzB;AA5MD;;;;;;;;GAQG;AACH,qDAI8B;AAS9B,2CAA4C;0BA9BlB,oCAAoC;8BAChC,+BAA+B;6BAjBhC,mCAAmC"}
|