@woosh/meep-engine 3.17.1 → 3.18.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/editor/actions/concrete/ComponentAddAction.d.ts +1 -0
- package/editor/actions/concrete/ComponentAddAction.d.ts.map +1 -1
- package/editor/actions/concrete/ComponentAddAction.js +4 -0
- package/editor/actions/concrete/ComponentRemoveAction.d.ts +1 -0
- package/editor/actions/concrete/ComponentRemoveAction.d.ts.map +1 -1
- package/editor/actions/concrete/ComponentRemoveAction.js +4 -0
- package/editor/actions/concrete/EntityCreateAction.d.ts +1 -0
- package/editor/actions/concrete/EntityCreateAction.d.ts.map +1 -1
- package/editor/actions/concrete/EntityCreateAction.js +7 -0
- package/editor/actions/concrete/EntityRemoveAction.d.ts +1 -0
- package/editor/actions/concrete/EntityRemoveAction.d.ts.map +1 -1
- package/editor/actions/concrete/EntityRemoveAction.js +4 -0
- package/editor/actions/concrete/PatchTerrainHeightAction.d.ts +10 -0
- package/editor/actions/concrete/PatchTerrainHeightAction.d.ts.map +1 -1
- package/editor/actions/concrete/PatchTerrainHeightAction.js +107 -85
- package/editor/actions/concrete/TransformModifyAction.d.ts +1 -0
- package/editor/actions/concrete/TransformModifyAction.d.ts.map +1 -1
- package/editor/actions/concrete/TransformModifyAction.js +4 -0
- package/editor/particles/effect/ParticleEffectDocument.d.ts.map +1 -1
- package/editor/particles/effect/ParticleEffectDocument.js +10 -6
- package/editor/particles/effect/ParticleReferenceSimulation.d.ts.map +1 -1
- package/editor/particles/effect/ParticleReferenceSimulation.js +98 -4
- package/editor/particles/effect/make_starter_particle_effect.d.ts.map +1 -1
- package/editor/particles/effect/make_starter_particle_effect.js +0 -2
- package/editor/tools/engine/ToolEngine.d.ts +30 -0
- package/editor/tools/engine/ToolEngine.d.ts.map +1 -1
- package/editor/tools/engine/ToolEngine.js +257 -188
- package/editor/view/ecs/EntityList.d.ts.map +1 -1
- package/editor/view/ecs/EntityList.js +6 -5
- package/editor/view/particles/effect/ParticleEmitterInspectorView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleEmitterInspectorView.js +17 -9
- package/package.json +1 -1
- package/src/CODEC_LAYOUT_VERIFICATION.md +1 -2
- package/src/core/binary/meshopt/MESHOPT_VERTEX_BLOCK.d.ts +56 -0
- package/src/core/binary/meshopt/MESHOPT_VERTEX_BLOCK.d.ts.map +1 -0
- package/src/core/binary/meshopt/MESHOPT_VERTEX_BLOCK.js +73 -0
- package/src/core/binary/meshopt/meshopt_decode_vertex_buffer.d.ts.map +1 -1
- package/src/core/binary/meshopt/meshopt_decode_vertex_buffer.js +18 -63
- package/src/core/binary/meshopt/meshopt_encode_byte_group.d.ts +53 -0
- package/src/core/binary/meshopt/meshopt_encode_byte_group.d.ts.map +1 -0
- package/src/core/binary/meshopt/meshopt_encode_byte_group.js +140 -0
- package/src/core/binary/meshopt/meshopt_encode_data_block.d.ts +32 -0
- package/src/core/binary/meshopt/meshopt_encode_data_block.d.ts.map +1 -0
- package/src/core/binary/meshopt/meshopt_encode_data_block.js +77 -0
- package/src/core/binary/meshopt/meshopt_encode_index_sequence.d.ts +46 -0
- package/src/core/binary/meshopt/meshopt_encode_index_sequence.d.ts.map +1 -0
- package/src/core/binary/meshopt/meshopt_encode_index_sequence.js +146 -0
- package/src/core/binary/meshopt/meshopt_encode_vertex_buffer.d.ts +40 -0
- package/src/core/binary/meshopt/meshopt_encode_vertex_buffer.d.ts.map +1 -0
- package/src/core/binary/meshopt/meshopt_encode_vertex_buffer.js +700 -0
- package/src/core/binary/meshopt/meshopt_write_uint_var.d.ts +24 -0
- package/src/core/binary/meshopt/meshopt_write_uint_var.d.ts.map +1 -0
- package/src/core/binary/meshopt/meshopt_write_uint_var.js +39 -0
- package/src/core/math/random/seededRandom_Mulberry32.d.ts.map +1 -1
- package/src/core/math/random/seededRandom_Mulberry32.js +4 -2
- package/src/core/process/undo/Action.d.ts +19 -0
- package/src/core/process/undo/Action.d.ts.map +1 -1
- package/src/core/process/undo/Action.js +17 -0
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +78 -0
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -0
- package/src/engine/graphics3/GPUParticleEmitterSystem.js +310 -0
- package/src/engine/graphics3/GraphicsEngine.d.ts +17 -0
- package/src/engine/graphics3/GraphicsEngine.d.ts.map +1 -1
- package/src/engine/graphics3/GraphicsEngine.js +30 -10
- package/src/engine/graphics3/particles/particle_gpu_records.d.ts.map +1 -1
- package/src/engine/graphics3/particles/particle_gpu_records.js +0 -2
- package/src/engine/interpolation/InterpolationSystem.d.ts +7 -0
- package/src/engine/interpolation/InterpolationSystem.d.ts.map +1 -1
- package/src/engine/interpolation/InterpolationSystem.js +10 -0
- package/src/engine/network/NetworkSession.d.ts.map +1 -1
- package/src/engine/network/NetworkSession.js +14 -34
- package/src/engine/network/time/RenderPlayout.d.ts +76 -0
- package/src/engine/network/time/RenderPlayout.d.ts.map +1 -0
- package/src/engine/network/time/RenderPlayout.js +163 -0
- package/src/engine/network/transport/adapters/WebSocketTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/WebSocketTransport.js +11 -4
- package/src/engine/physics/ecs/PhysicsSystem.d.ts +4 -12
- package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
- package/src/engine/physics/ecs/PhysicsSystem.js +39 -13
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/engine/sound/simulation/core/VolumeField.d.ts.map +1 -1
- package/src/engine/sound/simulation/core/VolumeField.js +4 -1
- package/src/format/scene/gltf/MESHOPT_COMPRESSION_PLAN.md +23 -2
- package/src/shade/playground/particle_system/README.md +139 -139
- package/src/shade/playground/particle_system/particle_prototype.d.ts.map +1 -1
- package/src/shade/playground/particle_system/particle_prototype.js +0 -2
- package/src/shade/playground/particle_system/particle_scene.d.ts +6 -9
- package/src/shade/playground/particle_system/particle_scene.d.ts.map +1 -1
- package/src/shade/playground/particle_system/particle_scene.js +6 -13
- package/src/shade/playground/ssr_reprojection/README.md +103 -0
- package/src/shade/playground/ssr_reprojection/SpatialFilterProbe.d.ts +17 -0
- package/src/shade/playground/ssr_reprojection/SpatialFilterProbe.d.ts.map +1 -0
- package/src/shade/playground/ssr_reprojection/SpatialFilterProbe.js +68 -0
- package/src/shade/playground/ssr_reprojection/index.html +79 -0
- package/src/shade/playground/ssr_reprojection/main.d.ts +2 -0
- package/src/shade/playground/ssr_reprojection/main.d.ts.map +1 -0
- package/src/shade/playground/ssr_reprojection/main.js +245 -0
- package/src/shade/playground/ssr_reprojection/scene.d.ts +18 -0
- package/src/shade/playground/ssr_reprojection/scene.d.ts.map +1 -0
- package/src/shade/playground/ssr_reprojection/scene.js +51 -0
- package/src/shade/renderer/Renderer.d.ts +2 -23
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +185 -218
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts +5 -8
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
- package/src/shade/renderer/animation/GPUAnimationManager.js +12 -12
- package/src/shade/renderer/buffer/table/GPUTypedTable.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUTypedTable.js +6 -0
- package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js +7 -0
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_sample_specular.d.ts +4 -0
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_sample_specular.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_sample_specular.js +51 -0
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_specular.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_specular.js +5 -35
- package/src/shade/renderer/particles/DESIGN.md +703 -514
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts +16 -4
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
- package/src/shade/renderer/particles/GPUParticleSystem.js +1189 -991
- package/src/shade/renderer/particles/ParticleConstants.d.ts +64 -0
- package/src/shade/renderer/particles/ParticleConstants.d.ts.map +1 -1
- package/src/shade/renderer/particles/ParticleConstants.js +71 -0
- package/src/shade/renderer/particles/bounds/chunk_particle_bounds.d.ts +57 -0
- package/src/shade/renderer/particles/bounds/chunk_particle_bounds.d.ts.map +1 -0
- package/src/shade/renderer/particles/bounds/chunk_particle_bounds.js +181 -0
- package/src/shade/renderer/particles/bounds/chunk_particle_bounds_unknown.d.ts +7 -0
- package/src/shade/renderer/particles/bounds/chunk_particle_bounds_unknown.d.ts.map +1 -0
- package/src/shade/renderer/particles/bounds/chunk_particle_bounds_unknown.js +12 -0
- package/src/shade/renderer/particles/bounds/graph_particle_bounds.d.ts +33 -0
- package/src/shade/renderer/particles/bounds/graph_particle_bounds.d.ts.map +1 -0
- package/src/shade/renderer/particles/bounds/graph_particle_bounds.js +67 -0
- package/src/shade/renderer/particles/bounds/shader_particle_bounds.d.ts +40 -0
- package/src/shade/renderer/particles/bounds/shader_particle_bounds.d.ts.map +1 -0
- package/src/shade/renderer/particles/bounds/shader_particle_bounds.js +187 -0
- package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts +15 -2
- package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts.map +1 -1
- package/src/shade/renderer/particles/coherence/graph_particle_bucket.js +14 -8
- package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.d.ts +58 -4
- package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.d.ts.map +1 -1
- package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.js +79 -4
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STATE.d.ts +23 -1
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STATE.d.ts.map +1 -1
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STATE.js +35 -2
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts +4 -2
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.js +5 -8
- package/src/shade/renderer/particles/data/particle_emitter_record.d.ts.map +1 -1
- package/src/shade/renderer/particles/data/particle_emitter_record.js +0 -6
- package/src/shade/renderer/particles/graph_particles.d.ts +25 -3
- package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles.js +108 -31
- package/src/shade/renderer/particles/graph_particles_avboit.d.ts +6 -4
- package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles_avboit.js +5 -5
- package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts +5 -0
- package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/EmitterRegistry.js +27 -6
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts +4 -0
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.js +6 -1
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts +35 -27
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/ParticleEmitter.js +424 -425
- package/src/shade/renderer/particles/shaders/chunk_particle_emitter_warmup.d.ts +20 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_emitter_warmup.d.ts.map +1 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_render_math.d.ts +4 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_render_math.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_render_math.js +38 -2
- package/src/shade/renderer/particles/shaders/chunk_particle_spawn_budget.d.ts +22 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_spawn_budget.d.ts.map +1 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_spawn_budget.js +42 -0
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_occupancy.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_occupancy.js +53 -22
- package/src/shade/renderer/particles/shaders/shader_particle_emitter_tick.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_emitter_tick.js +213 -216
- package/src/shade/renderer/particles/shaders/shader_particle_reclaim.d.ts +50 -0
- package/src/shade/renderer/particles/shaders/shader_particle_reclaim.d.ts.map +1 -0
- package/src/shade/renderer/particles/shaders/shader_particle_render.js +1 -1
- package/src/shade/renderer/particles/warmup/chunk_particle_warmup_step.d.ts +36 -0
- package/src/shade/renderer/particles/warmup/chunk_particle_warmup_step.d.ts.map +1 -0
- package/src/shade/renderer/particles/warmup/chunk_particle_warmup_step.js +102 -0
- package/src/shade/renderer/particles/warmup/graph_particle_warmup.d.ts +102 -0
- package/src/shade/renderer/particles/warmup/graph_particle_warmup.d.ts.map +1 -0
- package/src/shade/renderer/particles/warmup/graph_particle_warmup.js +329 -0
- package/src/shade/renderer/particles/warmup/shader_particle_warmup.d.ts +112 -0
- package/src/shade/renderer/particles/warmup/shader_particle_warmup.d.ts.map +1 -0
- package/src/shade/renderer/particles/warmup/shader_particle_warmup.js +318 -0
- package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance.d.ts +35 -0
- package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance.d.ts.map +1 -0
- package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance.js +108 -0
- package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance_wide.d.ts +3 -0
- package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance_wide.d.ts.map +1 -0
- package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance_wide.js +70 -0
- package/src/shade/renderer/particles/warmup/warmup_schedule.d.ts +62 -0
- package/src/shade/renderer/particles/warmup/warmup_schedule.d.ts.map +1 -0
- package/src/shade/renderer/particles/warmup/warmup_schedule.js +55 -0
- package/src/shade/renderer/postprocess/PostProcess.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/PostProcess.js +2 -1
- package/src/shade/renderer/postprocess/ssr/REPROJECTION_PROPOSAL.md +286 -0
- package/src/shade/renderer/postprocess/ssr/SSR.d.ts +57 -21
- package/src/shade/renderer/postprocess/ssr/SSR.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/SSR.js +230 -129
- package/src/shade/renderer/postprocess/ssr/SSRReprojectionMode.d.ts +11 -0
- package/src/shade/renderer/postprocess/ssr/SSRReprojectionMode.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/ssr/SSRReprojectionMode.js +6 -0
- package/src/shade/renderer/postprocess/ssr/chunk_ssr_metadata.d.ts +4 -0
- package/src/shade/renderer/postprocess/ssr/chunk_ssr_metadata.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/ssr/chunk_ssr_metadata.js +32 -0
- package/src/shade/renderer/postprocess/ssr/chunk_ssr_spatial_variance.d.ts +4 -0
- package/src/shade/renderer/postprocess/ssr/chunk_ssr_spatial_variance.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/ssr/chunk_ssr_spatial_variance.js +41 -0
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_reprojection.d.ts +3 -0
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_reprojection.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_reprojection.js +30 -0
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_sample_history.d.ts +4 -0
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_sample_history.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_sample_history.js +70 -0
- package/src/shade/renderer/postprocess/ssr/resolve/build_ssr_resolve_shader.d.ts +21 -0
- package/src/shade/renderer/postprocess/ssr/resolve/build_ssr_resolve_shader.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/ssr/resolve/build_ssr_resolve_shader.js +363 -0
- package/src/shade/renderer/postprocess/ssr/resolve/chunk_get_neighbour_weight.js +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_Brick4.d.ts +2 -0
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_Brick4.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_Brick4.js +24 -0
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.d.ts +1 -6
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.js +16 -332
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.d.ts +1 -6
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.js +25 -358
- package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.d.ts +0 -5
- package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.js +201 -276
- package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.d.ts +1 -0
- package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.js +167 -143
- package/src/shade/renderer/shader/graph/graph_create_buffer.d.ts +15 -0
- package/src/shade/renderer/shader/graph/graph_create_buffer.d.ts.map +1 -0
- package/src/shade/renderer/shader/graph/graph_create_buffer.js +20 -0
- package/src/shade/renderer/view/GPUViewContext.d.ts +3 -4
- package/src/shade/renderer/view/GPUViewContext.d.ts.map +1 -1
- package/src/shade/renderer/view/GPUViewContext.js +5 -5
- package/src/core/binary/meshopt/__meshopt_test_streams.d.ts +0 -24
- package/src/core/binary/meshopt/__meshopt_test_streams.d.ts.map +0 -1
- package/src/core/binary/meshopt/__meshopt_test_streams.js +0 -237
- package/src/core/geom/3d/atlas/atlas_test_fixtures.d.ts +0 -84
- package/src/core/geom/3d/atlas/atlas_test_fixtures.d.ts.map +0 -1
- package/src/core/geom/3d/atlas/atlas_test_fixtures.js +0 -266
- package/src/engine/asset/loaders/gltf_test_fixtures.d.ts +0 -97
- package/src/engine/asset/loaders/gltf_test_fixtures.d.ts.map +0 -1
- package/src/engine/asset/loaders/gltf_test_fixtures.js +0 -359
- package/src/engine/sound/simulation/core/OcclusionSolver.d.ts +0 -29
- package/src/engine/sound/simulation/core/OcclusionSolver.d.ts.map +0 -1
- package/src/shade/renderer/animation/skin_test_fixtures.d.ts +0 -86
- package/src/shade/renderer/animation/skin_test_fixtures.d.ts.map +0 -1
- package/src/shade/renderer/animation/skin_test_fixtures.js +0 -250
- package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_test_fixtures.d.ts +0 -16
- package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_test_fixtures.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_test_fixtures.js +0 -27
- package/src/shade/renderer/particles/particle_test_fixtures.d.ts +0 -151
- package/src/shade/renderer/particles/particle_test_fixtures.d.ts.map +0 -1
- package/src/shade/renderer/particles/particle_test_fixtures.js +0 -229
- package/src/shade/renderer/particles/shaders/chunk_particle_emitter_world_sphere.js +0 -23
- package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.js +0 -457
|
@@ -201,16 +201,6 @@ export class Renderer {
|
|
|
201
201
|
*/
|
|
202
202
|
feature_particles_enabled = false;
|
|
203
203
|
|
|
204
|
-
/**
|
|
205
|
-
* Most particles alive at once in a scene — the pool every emitter of that scene draws its
|
|
206
|
-
* records from. Read once, when the scene's {@link GPUParticleSystem} is created on the first
|
|
207
|
-
* frame {@link feature_particles_enabled} is on for it; the pool does not grow afterwards, so
|
|
208
|
-
* set this before that frame. Left undefined, the system's own default applies.
|
|
209
|
-
*
|
|
210
|
-
* @type {number|undefined}
|
|
211
|
-
*/
|
|
212
|
-
particle_capacity = undefined;
|
|
213
|
-
|
|
214
204
|
feature_ssr_enabled = false;
|
|
215
205
|
feature_ssao_enabled = true;
|
|
216
206
|
/**
|
|
@@ -397,21 +387,6 @@ export class Renderer {
|
|
|
397
387
|
*/
|
|
398
388
|
get dof_unreal() { return this.#depth_of_field_unreal; }
|
|
399
389
|
|
|
400
|
-
/**
|
|
401
|
-
* When true and {@link indirect_lighting_mode} is Brick4, run a single fused
|
|
402
|
-
* pass that produces the resolved indirect lighting directly (combining the
|
|
403
|
-
* brick4 diffuse, brick4 specular and indirect resolve passes). Trades a
|
|
404
|
-
* bit of cache pressure inside the pass for substantially less memory
|
|
405
|
-
* bandwidth: no intermediate rgba16float diffuse/specular targets, the
|
|
406
|
-
* g-buffer is read once, and a single brick4 probe pair is shared between
|
|
407
|
-
* the diffuse and specular evaluations.
|
|
408
|
-
*
|
|
409
|
-
* SSR is mutually exclusive with the fused path (it needs the standalone
|
|
410
|
-
* specular target as input), so when SSR is enabled the split path is used.
|
|
411
|
-
* @type {boolean}
|
|
412
|
-
*/
|
|
413
|
-
fused_indirect = true;
|
|
414
|
-
|
|
415
390
|
/**
|
|
416
391
|
* RCAS
|
|
417
392
|
* @type {boolean}
|
|
@@ -796,8 +771,7 @@ export class Renderer {
|
|
|
796
771
|
}
|
|
797
772
|
|
|
798
773
|
/**
|
|
799
|
-
*
|
|
800
|
-
* based on the active indirect lighting mode.
|
|
774
|
+
* Build and composite deferred indirect lighting, including fused and SSR paths.
|
|
801
775
|
*
|
|
802
776
|
* @param {object} params
|
|
803
777
|
* @param {FrameGraph} params.graph
|
|
@@ -805,6 +779,7 @@ export class Renderer {
|
|
|
805
779
|
* @param {GPUSceneContext} params.scene_ctx
|
|
806
780
|
* @param {number} params.bent_normals - graph resource ID
|
|
807
781
|
* @param {number} params.current_color_out - graph resource ID (scene color, needed for SSR)
|
|
782
|
+
* @param {number} params.gr_texture_depth_previous
|
|
808
783
|
* @param {number} params.gr_texture_depth_current
|
|
809
784
|
* @param {number} params.gr_texture_hzb
|
|
810
785
|
* @param {number} params.gr_texture_material_albedo_ao
|
|
@@ -816,7 +791,7 @@ export class Renderer {
|
|
|
816
791
|
* @param {number} params.gr_buffer_camera_current
|
|
817
792
|
* @param {number} params.gr_buffer_camera_previous
|
|
818
793
|
* @param {Vector2} params.resolution
|
|
819
|
-
* @returns {
|
|
794
|
+
* @returns {number} Updated scene-color graph resource ID
|
|
820
795
|
*/
|
|
821
796
|
#graph_indirect_lighting({
|
|
822
797
|
graph,
|
|
@@ -826,6 +801,7 @@ export class Renderer {
|
|
|
826
801
|
current_color_out,
|
|
827
802
|
//
|
|
828
803
|
gr_texture_depth_current,
|
|
804
|
+
gr_texture_depth_previous,
|
|
829
805
|
gr_texture_hzb,
|
|
830
806
|
gr_texture_material_albedo_ao,
|
|
831
807
|
gr_texture_pbr,
|
|
@@ -838,24 +814,136 @@ export class Renderer {
|
|
|
838
814
|
resolution,
|
|
839
815
|
}) {
|
|
840
816
|
|
|
841
|
-
const mode = this.indirect_lighting_mode;
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
817
|
+
const mode = this.indirect_lighting_mode;
|
|
818
|
+
// Prefer fusion where supported to avoid intermediate diffuse/specular
|
|
819
|
+
// targets and repeated G-buffer reads. This is a local graph policy.
|
|
820
|
+
const prefer_fused = true;
|
|
821
|
+
const lpv = scene_ctx.light_probe_volume;
|
|
822
|
+
let diffuse_pass;
|
|
823
|
+
let specular_pass;
|
|
824
|
+
let ssr_inputs;
|
|
825
|
+
|
|
826
|
+
// Each mode owns its diffuse/specular pair and any fused implementation.
|
|
827
|
+
// SSR overrides specular below using the same explicitly selected mode.
|
|
828
|
+
switch (mode) {
|
|
829
|
+
case ShadeIndirectLightingMode.IBL:
|
|
830
|
+
ssr_inputs = { input_environment: gr_texture_environment };
|
|
831
|
+
diffuse_pass = {
|
|
832
|
+
shader: shader_diffuse_IBL,
|
|
833
|
+
inputs: {
|
|
834
|
+
tBentNormals: bent_normals,
|
|
835
|
+
tGBufferAlbedo: gr_texture_material_albedo_ao,
|
|
836
|
+
tEnvironment: gr_texture_environment,
|
|
837
|
+
},
|
|
838
|
+
};
|
|
839
|
+
specular_pass = {
|
|
840
|
+
shader: shader_specular_IBL,
|
|
841
|
+
inputs: {
|
|
842
|
+
tBentNormals: bent_normals,
|
|
843
|
+
tNormals: gr_texture_normal,
|
|
844
|
+
tDepth: gr_texture_depth_current,
|
|
845
|
+
tPBR: gr_texture_pbr,
|
|
846
|
+
tEnvironment: gr_texture_environment,
|
|
847
|
+
camera: gr_buffer_camera_current,
|
|
848
|
+
},
|
|
849
|
+
};
|
|
850
|
+
break;
|
|
845
851
|
|
|
846
|
-
|
|
852
|
+
case ShadeIndirectLightingMode.Brick4:
|
|
853
|
+
// SSR needs its own specular resolve and denoising passes.
|
|
854
|
+
if (prefer_fused && !this.feature_ssr_enabled) {
|
|
855
|
+
[current_color_out] = graph_image_pass({
|
|
856
|
+
graph,
|
|
857
|
+
shader: shader_brick4_indirect_lighting,
|
|
858
|
+
output: [current_color_out],
|
|
859
|
+
input_depth: gr_texture_depth_current,
|
|
860
|
+
load_op: "load",
|
|
861
|
+
inputs: {
|
|
862
|
+
tDepth: gr_texture_depth_current,
|
|
863
|
+
tGBufferNormals: gr_texture_normal,
|
|
864
|
+
tBentNormals: bent_normals,
|
|
865
|
+
tGBufferAlbedo: gr_texture_material_albedo_ao,
|
|
866
|
+
tGBufferPBR: gr_texture_pbr,
|
|
867
|
+
tSTBN_vec2: STATIC_GRAPHICS_ENGINE_ASSETS.stbn_vec2,
|
|
868
|
+
view: view_ctx.uniform_buffer.buffer,
|
|
869
|
+
camera: gr_buffer_camera_current,
|
|
870
|
+
//
|
|
871
|
+
brick4: scene_ctx.volumetric_light_map.buffer,
|
|
872
|
+
tSplitSum: STATIC_GRAPHICS_ENGINE_ASSETS.split_sum,
|
|
873
|
+
},
|
|
874
|
+
});
|
|
875
|
+
return current_color_out;
|
|
876
|
+
}
|
|
877
|
+
ssr_inputs = { brick4: scene_ctx.volumetric_light_map };
|
|
878
|
+
diffuse_pass = {
|
|
879
|
+
shader: shader_brick4_diffuse,
|
|
880
|
+
inputs: {
|
|
881
|
+
tDepth: gr_texture_depth_current,
|
|
882
|
+
tBentNormals: bent_normals,
|
|
883
|
+
tAlbedoAO: gr_texture_material_albedo_ao,
|
|
884
|
+
tSTBN_vec2: STATIC_GRAPHICS_ENGINE_ASSETS.stbn_vec2,
|
|
885
|
+
camera: gr_buffer_camera_current,
|
|
886
|
+
view: view_ctx.uniform_buffer.buffer,
|
|
887
|
+
brick4: scene_ctx.volumetric_light_map.buffer,
|
|
888
|
+
},
|
|
889
|
+
};
|
|
890
|
+
specular_pass = {
|
|
891
|
+
shader: shader_brick4_specular,
|
|
892
|
+
inputs: {
|
|
893
|
+
tDepth: gr_texture_depth_current,
|
|
894
|
+
tNormals: gr_texture_normal,
|
|
895
|
+
tPBR: gr_texture_pbr,
|
|
896
|
+
tSTBN_vec2: STATIC_GRAPHICS_ENGINE_ASSETS.stbn_vec2,
|
|
897
|
+
camera: gr_buffer_camera_current,
|
|
898
|
+
view: view_ctx.uniform_buffer.buffer,
|
|
899
|
+
brick4: scene_ctx.volumetric_light_map.buffer,
|
|
900
|
+
},
|
|
901
|
+
};
|
|
902
|
+
break;
|
|
847
903
|
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
904
|
+
case ShadeIndirectLightingMode.LPV:
|
|
905
|
+
ssr_inputs = { lpv, input_environment: gr_texture_environment };
|
|
906
|
+
diffuse_pass = {
|
|
907
|
+
shader: shader_diffuse_LPV,
|
|
908
|
+
inputs: {
|
|
909
|
+
camera: gr_buffer_camera_current,
|
|
910
|
+
tDepth: gr_texture_depth_current,
|
|
911
|
+
tBentNormals: bent_normals,
|
|
912
|
+
tGBufferAlbedo: gr_texture_material_albedo_ao,
|
|
913
|
+
lpv_atlas_radiance: lpv.atlas.texture_radiance,
|
|
914
|
+
lpv_atlas_depth: lpv.atlas.texture_depth,
|
|
915
|
+
lpv_lookup: lpv.buffer_mesh_bvh,
|
|
916
|
+
lpv_metadata: lpv.buffer_metadata,
|
|
917
|
+
lpv_mesh: lpv.buffer_mesh,
|
|
918
|
+
lpv_probes: lpv.buffer_probes,
|
|
919
|
+
},
|
|
920
|
+
};
|
|
921
|
+
// Without SSR, LPV uses environment-map specular.
|
|
922
|
+
specular_pass = {
|
|
923
|
+
shader: shader_specular_IBL,
|
|
924
|
+
inputs: {
|
|
925
|
+
tBentNormals: bent_normals,
|
|
926
|
+
tNormals: gr_texture_normal,
|
|
927
|
+
tDepth: gr_texture_depth_current,
|
|
928
|
+
tPBR: gr_texture_pbr,
|
|
929
|
+
tEnvironment: gr_texture_environment,
|
|
930
|
+
camera: gr_buffer_camera_current,
|
|
931
|
+
},
|
|
932
|
+
};
|
|
933
|
+
break;
|
|
851
934
|
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
if (this.feature_ssr_enabled && mode !== ShadeIndirectLightingMode.Brick4) {
|
|
935
|
+
default:
|
|
936
|
+
throw new Error(`Unsupported indirect lighting mode: ${mode}`);
|
|
937
|
+
}
|
|
856
938
|
|
|
857
|
-
|
|
858
|
-
|
|
939
|
+
let indirect_specular;
|
|
940
|
+
if (this.feature_ssr_enabled) {
|
|
941
|
+
const ssr = this.#postprocess.ssr.graph_pass({
|
|
942
|
+
graph,
|
|
943
|
+
...ssr_inputs,
|
|
944
|
+
view_ctx,
|
|
945
|
+
jitter: view_ctx.jitter,
|
|
946
|
+
input_depth_previous: gr_texture_depth_previous,
|
|
859
947
|
input_depth: gr_texture_depth_current,
|
|
860
948
|
input_hzb: gr_texture_hzb,
|
|
861
949
|
input_scene_color: current_color_out,
|
|
@@ -864,118 +952,53 @@ export class Renderer {
|
|
|
864
952
|
input_normal: gr_texture_normal,
|
|
865
953
|
input_velocity: gr_velocity,
|
|
866
954
|
input_occlusion: gr_occlusion_clip,
|
|
867
|
-
input_environment: gr_texture_environment,
|
|
868
955
|
camera_current: gr_buffer_camera_current,
|
|
869
956
|
camera_previous: gr_buffer_camera_previous,
|
|
870
|
-
|
|
957
|
+
indirect_lighting_mode: mode,
|
|
871
958
|
resolution,
|
|
872
959
|
});
|
|
873
960
|
|
|
874
961
|
indirect_specular = ssr.denoised;
|
|
875
|
-
|
|
876
|
-
} else if (mode === ShadeIndirectLightingMode.Brick4) {
|
|
877
|
-
|
|
878
|
-
// Brick4 specular from volumetric lightmap
|
|
879
|
-
[indirect_specular] = graph_image_pass({
|
|
880
|
-
graph,
|
|
881
|
-
shader: shader_brick4_specular,
|
|
882
|
-
input_depth: gr_texture_depth_current,
|
|
883
|
-
inputs: {
|
|
884
|
-
tDepth: gr_texture_depth_current,
|
|
885
|
-
tNormals: gr_texture_normal,
|
|
886
|
-
tPBR: gr_texture_pbr,
|
|
887
|
-
tSTBN_vec2: STATIC_GRAPHICS_ENGINE_ASSETS.stbn_vec2,
|
|
888
|
-
camera: gr_buffer_camera_current,
|
|
889
|
-
view: view_ctx.uniform_buffer.buffer,
|
|
890
|
-
brick4: scene_ctx.volumetric_light_map.buffer,
|
|
891
|
-
},
|
|
892
|
-
output_resolution: view_ctx.resolution,
|
|
893
|
-
});
|
|
894
|
-
|
|
895
962
|
} else {
|
|
896
|
-
// IBL / LPV fallback — environment map specular
|
|
897
963
|
[indirect_specular] = graph_image_pass({
|
|
898
964
|
graph,
|
|
899
|
-
|
|
965
|
+
...specular_pass,
|
|
900
966
|
input_depth: gr_texture_depth_current,
|
|
901
|
-
inputs: {
|
|
902
|
-
tBentNormals: bent_normals,
|
|
903
|
-
tNormals: gr_texture_normal,
|
|
904
|
-
tDepth: gr_texture_depth_current,
|
|
905
|
-
tPBR: gr_texture_pbr,
|
|
906
|
-
tEnvironment: gr_texture_environment,
|
|
907
|
-
camera: gr_buffer_camera_current,
|
|
908
|
-
},
|
|
909
967
|
output_resolution: view_ctx.resolution,
|
|
910
968
|
});
|
|
911
969
|
}
|
|
912
970
|
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
case ShadeIndirectLightingMode.IBL:
|
|
920
|
-
// Environment map irradiance
|
|
921
|
-
[indirect_diffuse] = graph_image_pass({
|
|
922
|
-
graph,
|
|
923
|
-
shader: shader_diffuse_IBL,
|
|
924
|
-
input_depth: gr_texture_depth_current,
|
|
925
|
-
inputs: {
|
|
926
|
-
tBentNormals: bent_normals,
|
|
927
|
-
tGBufferAlbedo: gr_texture_material_albedo_ao,
|
|
928
|
-
tEnvironment: gr_texture_environment,
|
|
929
|
-
},
|
|
930
|
-
output_resolution: view_ctx.resolution,
|
|
931
|
-
});
|
|
932
|
-
break;
|
|
933
|
-
|
|
934
|
-
case ShadeIndirectLightingMode.Brick4:
|
|
935
|
-
// Brick4 diffuse from volumetric lightmap
|
|
936
|
-
[indirect_diffuse] = graph_image_pass({
|
|
937
|
-
graph,
|
|
938
|
-
shader: shader_brick4_diffuse,
|
|
939
|
-
input_depth: gr_texture_depth_current,
|
|
940
|
-
inputs: {
|
|
941
|
-
tDepth: gr_texture_depth_current,
|
|
942
|
-
tBentNormals: bent_normals,
|
|
943
|
-
tAlbedoAO: gr_texture_material_albedo_ao,
|
|
944
|
-
tSTBN_vec2: STATIC_GRAPHICS_ENGINE_ASSETS.stbn_vec2,
|
|
945
|
-
camera: gr_buffer_camera_current,
|
|
946
|
-
view: view_ctx.uniform_buffer.buffer,
|
|
947
|
-
brick4: scene_ctx.volumetric_light_map.buffer,
|
|
948
|
-
},
|
|
949
|
-
output_resolution: view_ctx.resolution,
|
|
950
|
-
});
|
|
951
|
-
break;
|
|
971
|
+
const [indirect_diffuse] = graph_image_pass({
|
|
972
|
+
graph,
|
|
973
|
+
...diffuse_pass,
|
|
974
|
+
input_depth: gr_texture_depth_current,
|
|
975
|
+
output_resolution: view_ctx.resolution,
|
|
976
|
+
});
|
|
952
977
|
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
break;
|
|
976
|
-
}
|
|
978
|
+
// resolve indirect lighting
|
|
979
|
+
[current_color_out] = graph_image_pass({
|
|
980
|
+
graph,
|
|
981
|
+
shader: shader_resolve_indirect_lighting,
|
|
982
|
+
output: [current_color_out],
|
|
983
|
+
input_depth: gr_texture_depth_current,
|
|
984
|
+
load_op: "load",
|
|
985
|
+
inputs: {
|
|
986
|
+
tIndirectDiffuse: indirect_diffuse,
|
|
987
|
+
tIndirectSpecular: indirect_specular,
|
|
988
|
+
//
|
|
989
|
+
tGBufferNormals: gr_texture_normal,
|
|
990
|
+
tBentNormals: bent_normals,
|
|
991
|
+
tGBufferAlbedo: gr_texture_material_albedo_ao,
|
|
992
|
+
tGBufferPBR: gr_texture_pbr,
|
|
993
|
+
tDepth: gr_texture_depth_current,
|
|
994
|
+
//
|
|
995
|
+
camera: gr_buffer_camera_current,
|
|
996
|
+
//
|
|
997
|
+
tSplitSum: STATIC_GRAPHICS_ENGINE_ASSETS.split_sum,
|
|
998
|
+
},
|
|
999
|
+
});
|
|
977
1000
|
|
|
978
|
-
return
|
|
1001
|
+
return current_color_out;
|
|
979
1002
|
}
|
|
980
1003
|
|
|
981
1004
|
/**
|
|
@@ -983,6 +1006,9 @@ export class Renderer {
|
|
|
983
1006
|
*/
|
|
984
1007
|
#postprocess
|
|
985
1008
|
|
|
1009
|
+
/** SSR settings, available after initialize(). @returns {import("./postprocess/ssr/SSR.js").SSR} */
|
|
1010
|
+
get ssr() { return this.#postprocess.ssr; }
|
|
1011
|
+
|
|
986
1012
|
/**
|
|
987
1013
|
* @type {ReSTIRDI}
|
|
988
1014
|
*/
|
|
@@ -1021,7 +1047,7 @@ export class Renderer {
|
|
|
1021
1047
|
let system = this.#particle_systems.get(scene_ctx);
|
|
1022
1048
|
|
|
1023
1049
|
if (system === undefined) {
|
|
1024
|
-
system = new GPUParticleSystem(this.#graphics, scene_ctx
|
|
1050
|
+
system = new GPUParticleSystem(this.#graphics, scene_ctx);
|
|
1025
1051
|
this.#particle_systems.set(scene_ctx, system);
|
|
1026
1052
|
}
|
|
1027
1053
|
|
|
@@ -2203,85 +2229,26 @@ export class Renderer {
|
|
|
2203
2229
|
output: [current_color_out],
|
|
2204
2230
|
});
|
|
2205
2231
|
|
|
2206
|
-
{
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
|
|
2214
|
-
|
|
2215
|
-
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
tGBufferAlbedo: gr_texture_material_albedo_ao,
|
|
2227
|
-
tGBufferPBR: gr_texture_pbr,
|
|
2228
|
-
tSTBN_vec2: STATIC_GRAPHICS_ENGINE_ASSETS.stbn_vec2,
|
|
2229
|
-
view: view_ctx.uniform_buffer.buffer,
|
|
2230
|
-
camera: gr_buffer_camera_current,
|
|
2231
|
-
//
|
|
2232
|
-
brick4: scene_ctx.volumetric_light_map.buffer,
|
|
2233
|
-
tSplitSum: STATIC_GRAPHICS_ENGINE_ASSETS.split_sum,
|
|
2234
|
-
},
|
|
2235
|
-
});
|
|
2236
|
-
|
|
2237
|
-
} else {
|
|
2238
|
-
|
|
2239
|
-
const { indirect_specular, indirect_diffuse } = this.#graph_indirect_lighting({
|
|
2240
|
-
graph,
|
|
2241
|
-
view_ctx,
|
|
2242
|
-
scene_ctx,
|
|
2243
|
-
bent_normals,
|
|
2244
|
-
current_color_out,
|
|
2245
|
-
//
|
|
2246
|
-
gr_texture_depth_current,
|
|
2247
|
-
gr_texture_hzb,
|
|
2248
|
-
gr_texture_material_albedo_ao,
|
|
2249
|
-
gr_texture_pbr,
|
|
2250
|
-
gr_texture_normal,
|
|
2251
|
-
gr_texture_environment,
|
|
2252
|
-
gr_velocity,
|
|
2253
|
-
gr_occlusion_clip,
|
|
2254
|
-
gr_buffer_camera_current,
|
|
2255
|
-
gr_buffer_camera_previous,
|
|
2256
|
-
resolution,
|
|
2257
|
-
});
|
|
2258
|
-
|
|
2259
|
-
// resolve indirect lighting
|
|
2260
|
-
[current_color_out] = graph_image_pass({
|
|
2261
|
-
graph,
|
|
2262
|
-
shader: shader_resolve_indirect_lighting,
|
|
2263
|
-
output: [current_color_out],
|
|
2264
|
-
input_depth: gr_texture_depth_current,
|
|
2265
|
-
load_op: "load",
|
|
2266
|
-
inputs: {
|
|
2267
|
-
tIndirectDiffuse: indirect_diffuse,
|
|
2268
|
-
tIndirectSpecular: indirect_specular,
|
|
2269
|
-
//
|
|
2270
|
-
tGBufferNormals: gr_texture_normal,
|
|
2271
|
-
tBentNormals: bent_normals,
|
|
2272
|
-
tGBufferAlbedo: gr_texture_material_albedo_ao,
|
|
2273
|
-
tGBufferPBR: gr_texture_pbr,
|
|
2274
|
-
tDepth: gr_texture_depth_current,
|
|
2275
|
-
//
|
|
2276
|
-
camera: gr_buffer_camera_current,
|
|
2277
|
-
//
|
|
2278
|
-
tSplitSum: STATIC_GRAPHICS_ENGINE_ASSETS.split_sum,
|
|
2279
|
-
},
|
|
2280
|
-
});
|
|
2281
|
-
|
|
2282
|
-
}
|
|
2283
|
-
|
|
2284
|
-
}
|
|
2232
|
+
current_color_out = this.#graph_indirect_lighting({
|
|
2233
|
+
graph,
|
|
2234
|
+
view_ctx,
|
|
2235
|
+
scene_ctx,
|
|
2236
|
+
bent_normals,
|
|
2237
|
+
current_color_out,
|
|
2238
|
+
//
|
|
2239
|
+
gr_texture_depth_current,
|
|
2240
|
+
gr_texture_depth_previous,
|
|
2241
|
+
gr_texture_hzb,
|
|
2242
|
+
gr_texture_material_albedo_ao,
|
|
2243
|
+
gr_texture_pbr,
|
|
2244
|
+
gr_texture_normal,
|
|
2245
|
+
gr_texture_environment,
|
|
2246
|
+
gr_velocity,
|
|
2247
|
+
gr_occlusion_clip,
|
|
2248
|
+
gr_buffer_camera_current,
|
|
2249
|
+
gr_buffer_camera_previous,
|
|
2250
|
+
resolution,
|
|
2251
|
+
});
|
|
2285
2252
|
|
|
2286
2253
|
// Composite volumetric fog over the finalized opaque + background + indirect colour.
|
|
2287
2254
|
// A dedicated pass (not inline in the shading shaders) because indirect lighting is added
|
|
@@ -478,14 +478,11 @@ export class GPUAnimationManager {
|
|
|
478
478
|
* clamped to {@link MAX_DT_SECONDS} to keep a stall from
|
|
479
479
|
* leaking multiple seconds into the next tick.
|
|
480
480
|
*
|
|
481
|
-
*
|
|
482
|
-
*
|
|
483
|
-
*
|
|
484
|
-
*
|
|
485
|
-
*
|
|
486
|
-
* With nothing registered no GPU work is encoded beyond the
|
|
487
|
-
* database flush — safe to call every frame regardless of
|
|
488
|
-
* registration state.
|
|
481
|
+
* Clip tick/apply/resolve gate on bound tracks; hierarchy propagation runs
|
|
482
|
+
* every frame, before skin matrix prep and skinning. CPU-driven nodes need it
|
|
483
|
+
* too: scene uploads seed global with the previous pose, and propagation
|
|
484
|
+
* composes the current one. On idle frames it advances prev_global so motion
|
|
485
|
+
* vectors settle to zero. Skin passes still gate on registered skins.
|
|
489
486
|
*
|
|
490
487
|
* @param {ShadeGPUCommandContext} cmd_ctx
|
|
491
488
|
* @param {number} dt_seconds wall-clock seconds since last call
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUAnimationManager.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/animation/GPUAnimationManager.js"],"names":[],"mappings":"AAiIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH;IA6OI;;;;OAIG;IACH,sCAHW,MAAM,kCAgBhB;IAED;;OAEG;IACH,4BAEC;IAED;;;;;;;;;;;;OAYG;IACH,gCAEC;IAED;;;;;;;;;;OAUG;IACH,qCAEC;IAED;;;;;;OAMG;IACH,gCAEC;IAED;;;;;;;;;;OAUG;IACH,mCAEC;IAED;;;;;;;;;;;;OAYG;IACH,4CAFW,MAAM,QA6BhB;IAED;;;;;OAKG;IACH,kBAHW,MAAM,GACJ;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAC,CAK3D;IAED;;;;;;;;;;;;OAYG;IACH,gCAHW,MAAM,GACJ,MAAM,CAOlB;IAED;;;;;;;;;;;OAWG;IACH,kCAFa,MAAM,CA+BlB;IAED;;;;;;;;;;;;;;OAcG;IACH,oBAJW;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAEhD,MAAM,CA2BlB;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH;eAPc,MAAM;qBACA,MAAM;mBACR,MAAM;kBACP,MAAM;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC;QAEhE,MAAM,CAkElB;IAgCD;;;;;;;;;;;;;;;;;OAiBG;IACH,kBAHW,MAAM,QACN,MAAM,QAKhB;IAED;;;;;;;;OAQG;IACH,2BAHW,MAAM,QACN,MAAM,QAKhB;IAED;;;;;;;;;;;;;;OAcG;IACH,6BAHW,MAAM,UACN,MAAM,QAKhB;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,mBAHW,MAAM,SACN,MAAM,QAShB;IAED;;;;;;;OAOG;IACH,qBAHW,MAAM,SACN,MAAM,QAShB;IAED;;;;;;;;;;;OAWG;IACH,eAFW,MAAM,QAShB;IAED;;;;;;;;;OASG;IACH,cAFW,MAAM,QAShB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH;gBAJe,MAAM;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,YAAY,GAAG,MAAM,EAAE,CAAA;SAAE,CAAC;QAEhE,MAAM,CAoElB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,2BAFa,MAAM,CA0FlB;IAyLD;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,yCAFa,MAAM,CAsElB;IAwDD;;;;;;;;;;;;;;;OAeG;IACH,yBAFW,MAAM,QAoChB;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,yBAFW,MAAM,QA6ChB;IAqHD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,8CAIC;IAoBD;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,iEA2CC;IAED
|
|
1
|
+
{"version":3,"file":"GPUAnimationManager.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/animation/GPUAnimationManager.js"],"names":[],"mappings":"AAiIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH;IA6OI;;;;OAIG;IACH,sCAHW,MAAM,kCAgBhB;IAED;;OAEG;IACH,4BAEC;IAED;;;;;;;;;;;;OAYG;IACH,gCAEC;IAED;;;;;;;;;;OAUG;IACH,qCAEC;IAED;;;;;;OAMG;IACH,gCAEC;IAED;;;;;;;;;;OAUG;IACH,mCAEC;IAED;;;;;;;;;;;;OAYG;IACH,4CAFW,MAAM,QA6BhB;IAED;;;;;OAKG;IACH,kBAHW,MAAM,GACJ;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAC,CAK3D;IAED;;;;;;;;;;;;OAYG;IACH,gCAHW,MAAM,GACJ,MAAM,CAOlB;IAED;;;;;;;;;;;OAWG;IACH,kCAFa,MAAM,CA+BlB;IAED;;;;;;;;;;;;;;OAcG;IACH,oBAJW;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAEhD,MAAM,CA2BlB;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH;eAPc,MAAM;qBACA,MAAM;mBACR,MAAM;kBACP,MAAM;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC;QAEhE,MAAM,CAkElB;IAgCD;;;;;;;;;;;;;;;;;OAiBG;IACH,kBAHW,MAAM,QACN,MAAM,QAKhB;IAED;;;;;;;;OAQG;IACH,2BAHW,MAAM,QACN,MAAM,QAKhB;IAED;;;;;;;;;;;;;;OAcG;IACH,6BAHW,MAAM,UACN,MAAM,QAKhB;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,mBAHW,MAAM,SACN,MAAM,QAShB;IAED;;;;;;;OAOG;IACH,qBAHW,MAAM,SACN,MAAM,QAShB;IAED;;;;;;;;;;;OAWG;IACH,eAFW,MAAM,QAShB;IAED;;;;;;;;;OASG;IACH,cAFW,MAAM,QAShB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH;gBAJe,MAAM;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,YAAY,GAAG,MAAM,EAAE,CAAA;SAAE,CAAC;QAEhE,MAAM,CAoElB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,2BAFa,MAAM,CA0FlB;IAyLD;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,yCAFa,MAAM,CAsElB;IAwDD;;;;;;;;;;;;;;;OAeG;IACH,yBAFW,MAAM,QAoChB;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,yBAFW,MAAM,QA6ChB;IAqHD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,8CAIC;IAoBD;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,iEA2CC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,kDAFW,MAAM,QAmChB;IA8FD,gBAYC;;CACJ;4BAn6D2B,gCAAgC"}
|
|
@@ -1806,14 +1806,11 @@ export class GPUAnimationManager {
|
|
|
1806
1806
|
* clamped to {@link MAX_DT_SECONDS} to keep a stall from
|
|
1807
1807
|
* leaking multiple seconds into the next tick.
|
|
1808
1808
|
*
|
|
1809
|
-
*
|
|
1810
|
-
*
|
|
1811
|
-
*
|
|
1812
|
-
*
|
|
1813
|
-
*
|
|
1814
|
-
* With nothing registered no GPU work is encoded beyond the
|
|
1815
|
-
* database flush — safe to call every frame regardless of
|
|
1816
|
-
* registration state.
|
|
1809
|
+
* Clip tick/apply/resolve gate on bound tracks; hierarchy propagation runs
|
|
1810
|
+
* every frame, before skin matrix prep and skinning. CPU-driven nodes need it
|
|
1811
|
+
* too: scene uploads seed global with the previous pose, and propagation
|
|
1812
|
+
* composes the current one. On idle frames it advances prev_global so motion
|
|
1813
|
+
* vectors settle to zero. Skin passes still gate on registered skins.
|
|
1817
1814
|
*
|
|
1818
1815
|
* @param {ShadeGPUCommandContext} cmd_ctx
|
|
1819
1816
|
* @param {number} dt_seconds wall-clock seconds since last call
|
|
@@ -1829,16 +1826,19 @@ export class GPUAnimationManager {
|
|
|
1829
1826
|
// Flush database + drain pending registrations.
|
|
1830
1827
|
this.update(cmd_ctx);
|
|
1831
1828
|
|
|
1832
|
-
//
|
|
1833
|
-
// do, and resolve + hierarchy propagation cascade from
|
|
1834
|
-
// apply. Skipping them keeps the per-frame cost at "one
|
|
1835
|
-
// database update" when the scene has no clip animation.
|
|
1829
|
+
// Only clip evaluation is conditional. Every scene needs current globals.
|
|
1836
1830
|
const apply_groups = this.#database
|
|
1837
1831
|
.get('animation_bound_track_groups')
|
|
1838
1832
|
.dispatch_group_count(ANIMATION_APPLY_WORKGROUP_SIZE);
|
|
1839
1833
|
|
|
1840
1834
|
if (apply_groups > 0) {
|
|
1841
1835
|
this.#encode_clip_passes(cmd_ctx, dt, apply_groups);
|
|
1836
|
+
} else {
|
|
1837
|
+
// CPU uploads seed global with the previous pose. Even without clips,
|
|
1838
|
+
// compose current globals and advance prev_global before skinning/rendering.
|
|
1839
|
+
const graph = new FrameGraph("GPUAnimationManager/TransformHierarchy");
|
|
1840
|
+
graph_scene_update_transform_hierarchy({ graph, scene: this.#scene_context });
|
|
1841
|
+
cmd_ctx.encodeGraph(graph);
|
|
1842
1842
|
}
|
|
1843
1843
|
|
|
1844
1844
|
// Skin matrix prep + skinning deformation. Both no-op when
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUTypedTable.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/buffer/table/GPUTypedTable.js"],"names":[],"mappings":"AAuCA;;;GAGG;AACH;IAmDI;;;OAGG;IACH,iDAOC;IA5DD;;OAEG;IACH,oCAAW;IAEX;;;;OAIG;IACH,OAFU,IAAI,MAAM,EAAC,eAAe,CAAC,CAEnB;IAElB;;;;OAIG;IACH,uBAFU,YAAY,CAE6D;IAEnF;;;;;OAKG;IACH,iBAFU,MAAM,CAEe;IAE/B;;;;OAIG;IACH,WAFU,MAAM,CAES;IAEzB;;;;;;OAMG;IACH,oBAFU,MAAM,CAEkB;IAElC;;;OAGG;IACH,kBAFU,iBAAe,SAAS,CAEjB;IAejB;;;;;OAKG;IACH,WAHW,CAAC,GACC,MAAM,CAQlB;IAED;;;;;OAKG;IACH,sBAFW,MAAM,QAkChB;IAED;;;;;;;;;;OAUG;IACH,cAcC;IAoED;;;;;;OAMG;IACH,mBAJW,MAAM,GACJ,CAAC,GAAC,SAAS,CA4BvB;IAgDD;;;OAGG;IACH,cAsBC;IA+BD;;;;OAIG;IACH,mBAHW,MAAM,SACN,CAAC,
|
|
1
|
+
{"version":3,"file":"GPUTypedTable.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/buffer/table/GPUTypedTable.js"],"names":[],"mappings":"AAuCA;;;GAGG;AACH;IAmDI;;;OAGG;IACH,iDAOC;IA5DD;;OAEG;IACH,oCAAW;IAEX;;;;OAIG;IACH,OAFU,IAAI,MAAM,EAAC,eAAe,CAAC,CAEnB;IAElB;;;;OAIG;IACH,uBAFU,YAAY,CAE6D;IAEnF;;;;;OAKG;IACH,iBAFU,MAAM,CAEe;IAE/B;;;;OAIG;IACH,WAFU,MAAM,CAES;IAEzB;;;;;;OAMG;IACH,oBAFU,MAAM,CAEkB;IAElC;;;OAGG;IACH,kBAFU,iBAAe,SAAS,CAEjB;IAejB;;;;;OAKG;IACH,WAHW,CAAC,GACC,MAAM,CAQlB;IAED;;;;;OAKG;IACH,sBAFW,MAAM,QAkChB;IAED;;;;;;;;;;OAUG;IACH,cAcC;IAoED;;;;;;OAMG;IACH,mBAJW,MAAM,GACJ,CAAC,GAAC,SAAS,CA4BvB;IAgDD;;;OAGG;IACH,cAsBC;IA+BD;;;;OAIG;IACH,mBAHW,MAAM,SACN,CAAC,QAkFX;IAED;;;OAGG;IACH,2BAIC;IAED;;OAEG;IACH,oBAEC;IAED;;;;;;;;;;OAUG;IACH,+BAEC;IAED;;;;;;;;;;OAUG;IACH,mCAJW,WAAW,UACX,MAAM,GACL,MAAM,CAoBjB;IAED;;;;;;;;;;;;OAYG;IACH,kCAMC;IAED;;;;;;;;;;;;;;OAcG;IACH,mCAHW,MAAM,GACL,MAAM,CAKjB;IAED,gBAEC;;CACJ;gCAjkB+B,sBAAsB;6BAPzB,yCAAyC;uBAC/C,mCAAmC"}
|
|
@@ -464,6 +464,12 @@ export class GPUTypedTable {
|
|
|
464
464
|
write_wgsl_type_value(value, upload_buffer, type);
|
|
465
465
|
upload_buffer.position = tail;
|
|
466
466
|
} else {
|
|
467
|
+
// Reserve the whole stride up front. The writes below only reach the last
|
|
468
|
+
// field, so on a type with tail padding they would leave the buffer short of
|
|
469
|
+
// the tail we are about to move `position` to — and `position` is what
|
|
470
|
+
// GPUDatabase.update copies out to, past the end of `data`.
|
|
471
|
+
upload_buffer.ensureCapacity(tail + step_size);
|
|
472
|
+
|
|
467
473
|
upload_buffer.writeUint32(element_index);
|
|
468
474
|
write_wgsl_type_value(value, upload_buffer, type);
|
|
469
475
|
upload_buffer.position = tail + step_size;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUSingleTypeTable.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js"],"names":[],"mappings":"AAsEA;;;GAGG;AACH;IAsCI;;;;;OAKG;IACH,uDAkBC;IA7DD;;;OAGG;IACH,0BAAK;IAEL;;;OAGG;IACH,2BAAM;IAEN;;;OAGG;IACH,sBAA2E;IAE3E;;;OAGG;IACH,kBAAyB;IAOzB;;;OAGG;IACH,+BAEC;IA4BD;;;OAGG;IACH,WAFW,MAAM,QAQhB;IAED;;;OAGG;IACH,QAFY,MAAM,CAIjB;IAED;;;;OAIG;IACH,WAHW,MAAM,
|
|
1
|
+
{"version":3,"file":"GPUSingleTypeTable.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js"],"names":[],"mappings":"AAsEA;;;GAGG;AACH;IAsCI;;;;;OAKG;IACH,uDAkBC;IA7DD;;;OAGG;IACH,0BAAK;IAEL;;;OAGG;IACH,2BAAM;IAEN;;;OAGG;IACH,sBAA2E;IAE3E;;;OAGG;IACH,kBAAyB;IAOzB;;;OAGG;IACH,+BAEC;IA4BD;;;OAGG;IACH,WAFW,MAAM,QAQhB;IAED;;;OAGG;IACH,QAFY,MAAM,CAIjB;IAED;;;;OAIG;IACH,WAHW,MAAM,kBA6ChB;IAED;;;;OAIG;IACH,aAHW,MAAM,OAiBhB;IAuCD;;;OAGG;IACH,kDAgDC;IAED,0BAQC;IAED,gBAEC;;CACJ"}
|
|
@@ -191,6 +191,13 @@ export class GPUSingleTypeTable {
|
|
|
191
191
|
}
|
|
192
192
|
|
|
193
193
|
upload_buffer.position = tail;
|
|
194
|
+
|
|
195
|
+
// Reserve the whole stride up front. The writes below only reach the last field,
|
|
196
|
+
// so on a type that pads out to `aligned_size` they would leave the buffer short
|
|
197
|
+
// of the tail rounded up to below — and that tail is what `update` copies out to,
|
|
198
|
+
// past the end of `data`.
|
|
199
|
+
upload_buffer.ensureCapacity(tail + stride);
|
|
200
|
+
|
|
194
201
|
upload_buffer.writeUint32(id);
|
|
195
202
|
write_wgsl_type_value(value, upload_buffer, this.type);
|
|
196
203
|
|
package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_sample_specular.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_brick4_sample_specular.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_sample_specular.js"],"names":[],"mappings":"AAMA,6EAA6E;AAC7E,qDA2CE;0BAjDwB,0CAA0C"}
|