@woosh/meep-engine 3.11.3 → 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/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/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/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/shader_multiscatter_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/shader_multiscatter_lut.js +0 -1
- 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 +4 -7
- 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/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.js +2 -2
- 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.map +1 -1
- package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.js +0 -1
- 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/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/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/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 -296
- package/src/shade/renderer/shader/ImageShader.js +217 -217
- 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 +20 -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/volumetrics/GPUViewVolumetrics.js +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +12 -15
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts +3 -2
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.js +3 -2
- 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/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
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The renderer meep 3 talks to: Shade behind the shape `GraphicsEngine` presented.
|
|
3
|
+
*
|
|
4
|
+
* It implements the **bootstrap seam** and nothing else — `{viewport, domElement, camera,
|
|
5
|
+
* on.{preRender, postRender, contextLost, contextRestored, contextFailed}, needDraw, autoDraw,
|
|
6
|
+
* start(), stop(), render(), updateSize()}` — because that is what `Engine` needs in order to boot,
|
|
7
|
+
* and because the facade is deliberately not allowed to grow past §4.2 (D14).
|
|
8
|
+
*
|
|
9
|
+
* **Three things have been let through since, each by name.** {@link add_extension} /
|
|
10
|
+
* {@link remove_extension} (E9), because an extension has to survive the restart that replaces the
|
|
11
|
+
* renderer holding it, and
|
|
12
|
+
* {@link scene_context} (E13, D29), because the managers a system needs — animation above all —
|
|
13
|
+
* hang off Shade's per-scene GPU state and there is no other door to them. Both take or return
|
|
14
|
+
* something the caller already owns; neither hands out the renderer.
|
|
15
|
+
*
|
|
16
|
+
* {@link renderer} is the third, and much the widest: it hands the renderer straight out, so
|
|
17
|
+
* everything the other two are shaped to avoid is reachable through it. It is an escape hatch for
|
|
18
|
+
* callers that have no other route, not a migration target — the old engine's 44
|
|
19
|
+
* `.renderer`/`getRenderer()` call sites are each still a migration item.
|
|
20
|
+
*
|
|
21
|
+
* What is deliberately absent, and stays absent: `getRenderer()` (the old engine's accessor, and
|
|
22
|
+
* the shape those call sites are being ported off), `layers` (CPU visibility dies with GPU
|
|
23
|
+
* culling), `scene` (entities reach the scene through the mesh system, not through the facade),
|
|
24
|
+
* and the three-shaped material manager.
|
|
25
|
+
*
|
|
26
|
+
* **Lifecycle differs from the old engine on purpose.** `GraphicsEngine` starts inside the `Engine`
|
|
27
|
+
* constructor, which is why stopping an engine used to leave a restarted one with no renderer at
|
|
28
|
+
* all. This one starts from `Engine.start()` and stops symmetrically, so `start → stop → start`
|
|
29
|
+
* returns a working renderer (E1).
|
|
30
|
+
*/
|
|
31
|
+
export class GraphicsEngine {
|
|
32
|
+
/**
|
|
33
|
+
* Duck-type the rest of the engine checks instead of `instanceof`, which is the convention
|
|
34
|
+
* the legacy `CameraSystem` already used and `HeadsUpDisplaySystem` was moved onto in Phase 0.
|
|
35
|
+
*
|
|
36
|
+
* @returns {boolean}
|
|
37
|
+
*/
|
|
38
|
+
get isGraphicsEngine(): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Danger zone.
|
|
41
|
+
* Be careful with what you do, with great Renderer comes great responsibility.
|
|
42
|
+
* @returns {Renderer|null}
|
|
43
|
+
*/
|
|
44
|
+
get renderer(): Renderer;
|
|
45
|
+
/**
|
|
46
|
+
* The camera, in the shape the engine's existing consumers read it — `projectionMatrix` and
|
|
47
|
+
* `matrixWorldInverse`, which is what `HeadsUpDisplaySystem` multiplies together. The real
|
|
48
|
+
* Shade camera is on its `camera` property.
|
|
49
|
+
*
|
|
50
|
+
* @type {ShadeCameraAdapter}
|
|
51
|
+
*/
|
|
52
|
+
camera: ShadeCameraAdapter;
|
|
53
|
+
on: {
|
|
54
|
+
/**
|
|
55
|
+
* **The camera-finalized phase.** Camera matrices are final and the frame has not been
|
|
56
|
+
* submitted — which is what §2.1 already defines `preRender` to mean, so the old
|
|
57
|
+
* engine's `visibilityConstructionStarted` / `visibilityConstructionEnded` do not
|
|
58
|
+
* survive as signals of their own. Their subscribers — the legacy camera and light
|
|
59
|
+
* systems, the editor's symbolic display — landed here when their systems were ported.
|
|
60
|
+
*
|
|
61
|
+
* @type {Signal}
|
|
62
|
+
*/
|
|
63
|
+
preRender: Signal;
|
|
64
|
+
/**
|
|
65
|
+
* The frame has been submitted. Note that submitted is not finished — the GPU is still
|
|
66
|
+
* working when this fires, on this renderer as on the last one.
|
|
67
|
+
*
|
|
68
|
+
* @type {Signal}
|
|
69
|
+
*/
|
|
70
|
+
postRender: Signal;
|
|
71
|
+
/**
|
|
72
|
+
* The GPU device was lost. Nothing renders after this.
|
|
73
|
+
*
|
|
74
|
+
* @type {Signal}
|
|
75
|
+
*/
|
|
76
|
+
contextLost: Signal;
|
|
77
|
+
/**
|
|
78
|
+
* **Never fires.** Kept because the contract has it and subscribers expect the shape,
|
|
79
|
+
* but Shade does not recover a lost device (R6): everything the renderer built lived on
|
|
80
|
+
* it, and a message plus a reload is the honest response. A subscriber here is waiting
|
|
81
|
+
* for something that will not happen.
|
|
82
|
+
*
|
|
83
|
+
* @type {Signal<number>}
|
|
84
|
+
*/
|
|
85
|
+
contextRestored: any;
|
|
86
|
+
/**
|
|
87
|
+
* There will be no rendering — no WebGPU, no adapter, or hardware below the floor.
|
|
88
|
+
* Carries a {@link ShadeDeviceFailure}, whose `message` is written to be shown.
|
|
89
|
+
*
|
|
90
|
+
* @type {Signal<ShadeDeviceFailure>}
|
|
91
|
+
*/
|
|
92
|
+
contextFailed: any;
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* @type {Vector1}
|
|
96
|
+
*/
|
|
97
|
+
pixelRatio: Vector1;
|
|
98
|
+
/**
|
|
99
|
+
* Final render resolution in whole device pixels. Zero until the viewport has a size.
|
|
100
|
+
*
|
|
101
|
+
* @readonly
|
|
102
|
+
* @type {Vector2}
|
|
103
|
+
*/
|
|
104
|
+
readonly output_resolution: Vector2;
|
|
105
|
+
/**
|
|
106
|
+
* The DOM element the canvas lives in. Created here rather than in {@link start} so that
|
|
107
|
+
* layout can be wired before a device exists — and so a failed start still leaves something
|
|
108
|
+
* to put a message in.
|
|
109
|
+
*
|
|
110
|
+
* @type {EmptyView}
|
|
111
|
+
*/
|
|
112
|
+
viewport: EmptyView;
|
|
113
|
+
/**
|
|
114
|
+
* @type {HTMLCanvasElement|null}
|
|
115
|
+
*/
|
|
116
|
+
domElement: HTMLCanvasElement | null;
|
|
117
|
+
/**
|
|
118
|
+
* Whether the next frame has anything new to show. With {@link autoDraw} off, this is what
|
|
119
|
+
* gates rendering at all.
|
|
120
|
+
*
|
|
121
|
+
* @type {boolean}
|
|
122
|
+
*/
|
|
123
|
+
needDraw: boolean;
|
|
124
|
+
/**
|
|
125
|
+
* Draw every tick regardless of {@link needDraw}. On-demand rendering — menus and the
|
|
126
|
+
* editor that should not burn frames — is turning this off.
|
|
127
|
+
*
|
|
128
|
+
* @type {boolean}
|
|
129
|
+
*/
|
|
130
|
+
autoDraw: boolean;
|
|
131
|
+
/**
|
|
132
|
+
* @type {number}
|
|
133
|
+
*/
|
|
134
|
+
frameIndex: number;
|
|
135
|
+
/**
|
|
136
|
+
* Trades internal resolution for frame time, and is the only thing in this engine that does.
|
|
137
|
+
*
|
|
138
|
+
* Exposed so that it can be turned off or re-targeted — a measurement that wants a fixed
|
|
139
|
+
* resolution, or a settings screen that offers the choice — and for no other reason: it drives
|
|
140
|
+
* itself from {@link render}, and nothing has to call it.
|
|
141
|
+
*
|
|
142
|
+
* **It targets {@link TARGET_FRAME_RATE}**, which makes it a floor-holder rather than a
|
|
143
|
+
* frame-rate governor: it does nothing at all until a frame costs more than 33 ms, and on
|
|
144
|
+
* hardware that clears the budget it sits at full resolution and never engages.
|
|
145
|
+
*
|
|
146
|
+
* @returns {DynamicResolutionScaling}
|
|
147
|
+
*/
|
|
148
|
+
get dynamic_resolution(): DynamicResolutionScaling;
|
|
149
|
+
/**
|
|
150
|
+
* Draw this scene from now on.
|
|
151
|
+
*
|
|
152
|
+
* The narrowest seam that works: the facade is told what to draw, rather than handing out a
|
|
153
|
+
* graph for anyone to write into. Shade's own `render` takes the scene as an argument, so this
|
|
154
|
+
* matches how the renderer underneath already thinks about it.
|
|
155
|
+
*
|
|
156
|
+
* @param {Scene} scene
|
|
157
|
+
*/
|
|
158
|
+
set_scene(scene: Scene): void;
|
|
159
|
+
/**
|
|
160
|
+
* Set the scene's image-based-lighting source, replacing whatever it was lighting with.
|
|
161
|
+
*
|
|
162
|
+
* No prefiltering happens here, unlike the equivalent on the old engine: Shade convolves the map
|
|
163
|
+
* into its irradiance and roughness mips on the GPU, notices when the texture it was given has
|
|
164
|
+
* been swapped, and redoes that work itself. So this is an assignment and the renderer catches up
|
|
165
|
+
* on the next frame — safe before startup as well as after.
|
|
166
|
+
*
|
|
167
|
+
* The texture must be **octahedral**, which is the projection Shade samples the environment with.
|
|
168
|
+
* `load_environment_map` and `resample_equirectangular_to_octahedral` are the ways in; a cube or
|
|
169
|
+
* equirectangular texture handed over directly would sample as garbage rather than fail.
|
|
170
|
+
*
|
|
171
|
+
* There is deliberately no `set_environment_texture` counterpart. On the old engine that meant
|
|
172
|
+
* "and show it as the skybox too", and Shade has no background of its own to show it on — the
|
|
173
|
+
* visible sky is its own piece of work rather than a second line here.
|
|
174
|
+
*
|
|
175
|
+
* @param {ShadeTexture} texture octahedral-encoded spherical radiance
|
|
176
|
+
*/
|
|
177
|
+
set_environment_map(texture: ShadeTexture): void;
|
|
178
|
+
/**
|
|
179
|
+
* Record work into the frame at a named point in it — §4.8's extensibility surface, and the
|
|
180
|
+
* honest replacement for the old engine's `preRender` / `buffersRendered` / `postRender`
|
|
181
|
+
* signals, each of which maps to a phase.
|
|
182
|
+
*
|
|
183
|
+
* The extension is handed a `FrameContext` when its phase comes round and records with the
|
|
184
|
+
* `graph_*` helpers, exactly as the built-in passes do. Resource handles come from the frame's
|
|
185
|
+
* records rather than from a renderer: the frame graph is what knows which resources a pass
|
|
186
|
+
* touched, and work recorded around it cannot be ordered or aliased against the rest of the
|
|
187
|
+
* frame.
|
|
188
|
+
*
|
|
189
|
+
* **Registering does not require a device.** Extensions are held here and applied to the
|
|
190
|
+
* renderer when one exists, and again after a restart — a system registers at startup without
|
|
191
|
+
* knowing where in the lifecycle it is.
|
|
192
|
+
*
|
|
193
|
+
* @param {RenderExtension} extension
|
|
194
|
+
* @returns {RenderExtension} `extension`, for handing back to {@link remove_extension}
|
|
195
|
+
*/
|
|
196
|
+
add_extension(extension: RenderExtension): RenderExtension;
|
|
197
|
+
/**
|
|
198
|
+
* How many extensions are registered against a phase.
|
|
199
|
+
*
|
|
200
|
+
* Read-only, and here because a system that registers one otherwise has no way to say that it
|
|
201
|
+
* did: the extension is private to the system that owns it, and "start → stop → start leaks
|
|
202
|
+
* nothing" is a property a gate has to be able to state. It says how many, not what they are,
|
|
203
|
+
* and hands out nothing.
|
|
204
|
+
*
|
|
205
|
+
* @param {FramePhase} phase
|
|
206
|
+
* @returns {number}
|
|
207
|
+
*/
|
|
208
|
+
extension_count(phase: FramePhase): number;
|
|
209
|
+
/**
|
|
210
|
+
* Take an extension back out. Identity is the object, so the phase does not have to be
|
|
211
|
+
* repeated.
|
|
212
|
+
*
|
|
213
|
+
* @param {RenderExtension} extension
|
|
214
|
+
* @returns {boolean} whether it was registered
|
|
215
|
+
*/
|
|
216
|
+
remove_extension(extension: RenderExtension): boolean;
|
|
217
|
+
/**
|
|
218
|
+
* Shade's GPU-side state for a scene the caller already owns — and with it the managers that
|
|
219
|
+
* hang off it, of which the animation manager is the one Phase 4 needs.
|
|
220
|
+
*
|
|
221
|
+
* **The one thing D14 lets through, and D29 is why** (E13). The alternative was a system
|
|
222
|
+
* registering a frame pass that draws nothing, purely to be handed `context.view.scene` when
|
|
223
|
+
* its phase came round — which would have made the animation system claim a moment in drawing
|
|
224
|
+
* for work that is not drawing. A named method costs one line of surface and says what it is.
|
|
225
|
+
*
|
|
226
|
+
* **This still hands out no graph.** `scene` is an argument, not a getter: only the system that
|
|
227
|
+
* owns a scene can ask about it, so the coupling §2.1 retires — the facade handing its graph to
|
|
228
|
+
* anyone who asks — is not what this is. What comes back is the renderer's own bookkeeping for
|
|
229
|
+
* that scene, which is Shade's to shape and no one else's.
|
|
230
|
+
*
|
|
231
|
+
* @param {Scene} scene
|
|
232
|
+
* @returns {GPUSceneContext|null} `null` while there is no device — before a successful
|
|
233
|
+
* {@link start} and again after {@link stop}. A restart builds a **new** context, so a caller
|
|
234
|
+
* holding ids the old one issued has to notice the object changed and register again.
|
|
235
|
+
*/
|
|
236
|
+
scene_context(scene: Scene): GPUSceneContext | null;
|
|
237
|
+
/**
|
|
238
|
+
* Draw a scene of somebody else's into a texture of that size, and hand back its pixels.
|
|
239
|
+
*
|
|
240
|
+
* **Tooling only.** This is a GPU readback and I-4 forbids those on any gameplay-affecting path;
|
|
241
|
+
* what it is here for is pictures of things — an asset library's icons, a thumbnail, a capture.
|
|
242
|
+
*
|
|
243
|
+
* **No renderer and no device leave the facade** (D14). What the caller brings is a scene and a
|
|
244
|
+
* camera, both of which it built; what it gets back is a `Sampler2D`. The frame itself goes
|
|
245
|
+
* through `Renderer.render_to_target` (D50), so the picture is drawn by the renderer that is
|
|
246
|
+
* already running, with the geometry and the textures it already holds resident.
|
|
247
|
+
*
|
|
248
|
+
* **The renderer is resized for the call and put back afterwards.** Everything a frame is built
|
|
249
|
+
* out of is sized from the output resolution, so a 64 x 64 picture means a 64 x 64 frame; the
|
|
250
|
+
* temporal history that costs is dropped either way by the resize.
|
|
251
|
+
*
|
|
252
|
+
* @param {Scene} scene
|
|
253
|
+
* @param {Camera} camera
|
|
254
|
+
* @param {number} width texels
|
|
255
|
+
* @param {number} height texels
|
|
256
|
+
* @returns {Promise<Sampler2D>} RGBA, one byte a channel
|
|
257
|
+
* @throws {Error} when there is no device — before a successful {@link start}, or after
|
|
258
|
+
* {@link stop}
|
|
259
|
+
*/
|
|
260
|
+
render_to_sampler(scene: Scene, camera: Camera, width: number, height: number): Promise<Sampler2D>;
|
|
261
|
+
/**
|
|
262
|
+
* Whether there is a device to render with.
|
|
263
|
+
*
|
|
264
|
+
* @returns {boolean}
|
|
265
|
+
*/
|
|
266
|
+
get is_running(): boolean;
|
|
267
|
+
/**
|
|
268
|
+
* Stand a device up and attach its canvas to the viewport.
|
|
269
|
+
*
|
|
270
|
+
* Asynchronous because acquiring a WebGPU device is — there is no synchronous form of it — and
|
|
271
|
+
* because failing to get one is a normal outcome that has to be reported rather than thrown
|
|
272
|
+
* into a constructor. A failure raises `on.contextFailed` with a message written for a person
|
|
273
|
+
* and rethrows, so a caller that wants to handle it can and one that does not still fails
|
|
274
|
+
* loudly.
|
|
275
|
+
*
|
|
276
|
+
* @returns {Promise<void>}
|
|
277
|
+
*/
|
|
278
|
+
start(): Promise<void>;
|
|
279
|
+
/**
|
|
280
|
+
* Tear the device down and let go of the canvas.
|
|
281
|
+
*
|
|
282
|
+
* Symmetric with {@link start}, and that symmetry is the point: the old engine started in a
|
|
283
|
+
* constructor and could not be restarted.
|
|
284
|
+
*/
|
|
285
|
+
stop(): void;
|
|
286
|
+
/**
|
|
287
|
+
* A pointer position in viewport pixels, as a clip-space point.
|
|
288
|
+
*
|
|
289
|
+
* Unchanged from the old engine, down to writing into a caller's vector: it is arithmetic on the
|
|
290
|
+
* viewport size and has nothing to do with which renderer is underneath.
|
|
291
|
+
*
|
|
292
|
+
* @param {Vector2|Vector3} input viewport pixels, origin top-left
|
|
293
|
+
* @param {Vector2|Vector3} result written with −1…1, +Y up
|
|
294
|
+
*/
|
|
295
|
+
normalizeViewportPoint(input: Vector2 | Vector3, result: Vector2 | Vector3): void;
|
|
296
|
+
/**
|
|
297
|
+
* A ray from the eye through a point on the viewport, in world space.
|
|
298
|
+
*
|
|
299
|
+
* Same name, same arguments, same meaning as on the old engine — and the same expectation that
|
|
300
|
+
* `x` and `y` are **clip-space**, which {@link normalizeViewportPoint} is what produces. What is
|
|
301
|
+
* behind it is Shade's camera rather than three's; see {@link shade_camera_projection_ray}.
|
|
302
|
+
*
|
|
303
|
+
* This is the only picking primitive the game actually needs. Every gameplay pick is a terrain
|
|
304
|
+
* raycast — an exact query against the terrain's own representation, which no part of the renderer
|
|
305
|
+
* is involved in — so a working ray is the whole of the renderer's contribution to it.
|
|
306
|
+
*
|
|
307
|
+
* @param {number} x clip space, −1…1
|
|
308
|
+
* @param {number} y clip space, −1…1, +Y up
|
|
309
|
+
* @param {Vector3} source written with the ray's origin
|
|
310
|
+
* @param {Vector3} direction written with a unit direction
|
|
311
|
+
*/
|
|
312
|
+
viewportProjectionRay(x: number, y: number, source: Vector3, direction: Vector3): void;
|
|
313
|
+
/**
|
|
314
|
+
* Size the drawing buffer to the viewport.
|
|
315
|
+
*
|
|
316
|
+
* Shade's `resize` takes a **CSS** size and applies the device pixel ratio itself, which is the
|
|
317
|
+
* opposite of what the old engine's renderer wanted — so what it is given here is the viewport
|
|
318
|
+
* size scaled by the engine's own `pixelRatio` and nothing more. `output_resolution` is then
|
|
319
|
+
* the device-pixel figure, for everything that has to land on the same texel grid.
|
|
320
|
+
*/
|
|
321
|
+
updateSize(): void;
|
|
322
|
+
/**
|
|
323
|
+
* Draw a frame, if there is anything to draw it with.
|
|
324
|
+
*
|
|
325
|
+
* @param {number} [time_delta_seconds]
|
|
326
|
+
* @returns {boolean} whether a frame was submitted
|
|
327
|
+
*/
|
|
328
|
+
render(time_delta_seconds?: number): boolean;
|
|
329
|
+
#private;
|
|
330
|
+
}
|
|
331
|
+
import { Renderer } from "../../shade/renderer/Renderer.js";
|
|
332
|
+
import { ShadeCameraAdapter } from "./ShadeCameraAdapter.js";
|
|
333
|
+
import Signal from "../../core/events/signal/Signal.js";
|
|
334
|
+
import Vector1 from "../../core/geom/Vector1.js";
|
|
335
|
+
import { Vector2 } from "../../core/geom/Vector2.js";
|
|
336
|
+
import EmptyView from "../../view/elements/EmptyView.js";
|
|
337
|
+
import { DynamicResolutionScaling } from "../../shade/renderer/DynamicResolutionScaling.js";
|
|
338
|
+
import { Scene } from "../../shade/renderer/scene/Scene.js";
|
|
339
|
+
import { Sampler2D } from "../graphics/texture/sampler/Sampler2D.js";
|
|
340
|
+
//# sourceMappingURL=GraphicsEngine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GraphicsEngine.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/GraphicsEngine.js"],"names":[],"mappings":"AAkDA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH;IACI;;;;;OAKG;IACH,gCAEC;IAUD;;;;OAIG;IACH,yBAEC;IA0DG;;;;;;OAMG;IACH,QAFU,kBAAkB,CAEsB;IAElD;QACI;;;;;;;;WAQG;mBADO,MAAM;QAIhB;;;;;WAKG;oBADO,MAAM;QAIhB;;;;WAIG;qBADO,MAAM;QAIhB;;;;;;;WAOG;;QAGH;;;;;WAKG;;MAEN;IAED;;OAEG;IACH,YAFU,OAAO,CAEe;IAEhC;;;;;OAKG;IACH,4BAFU,OAAO,CAEyB;IAE1C;;;;;;OAMG;IACH,UAFU,SAAS,CAEY;IAG/B;;OAEG;IACH,YAFU,iBAAiB,GAAC,IAAI,CAEV;IAEtB;;;;;OAKG;IACH,UAFU,OAAO,CAEG;IAEpB;;;;;OAKG;IACH,UAFU,OAAO,CAEG;IAEpB;;OAEG;IACH,YAFU,MAAM,CAEG;IAoBvB;;;;;;;;;;;;OAYG;IACH,mDAEC;IAED;;;;;;;;OAQG;IACH,iBAFW,KAAK,QAoBf;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,iDAOC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,2DAWC;IAED;;;;;;;;;;OAUG;IACH,oCAFa,MAAM,CAclB;IAED;;;;;;OAMG;IACH,8CAFa,OAAO,CAgBnB;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,qBALW,KAAK,GACH,kBAAgB,IAAI,CAehC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,yBARW,KAAK,yBAEL,MAAM,UACN,MAAM,GACJ,QAAQ,SAAS,CAAC,CAwD9B;IAED;;;;OAIG;IACH,0BAEC;IAED;;;;;;;;;;OAUG;IACH,SAFa,QAAQ,IAAI,CAAC,CA4DzB;IAED;;;;;OAKG;IACH,aAiBC;IASD;;;;;;;;OAQG;IACH,8BAHW,OAAO,UAAQ,UACf,OAAO,UAAQ,QAQzB;IAED;;;;;;;;;;;;;;;OAeG;IACH,yBALW,MAAM,KACN,MAAM,6CAMhB;IAED;;;;;;;OAOG;IACH,mBA0BC;IAED;;;;;OAKG;IACH,4BAHW,MAAM,GACJ,OAAO,CAoDnB;;CACJ;yBA7wBwB,kCAAkC;mCAMxB,yBAAyB;mBAbzC,oCAAoC;oBACnC,4BAA4B;wBACxB,4BAA4B;sBAQ9B,kCAAkC;yCAJf,kDAAkD;sBAErE,qCAAqC;0BACjC,0CAA0C"}
|