@woosh/meep-engine 3.18.0 → 3.20.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/build/bundle-worker-image-decoder.js +1 -1
- package/build/bundle-worker-terrain.js +1 -1
- package/editor/view/particles/effect/ParticleCurveEditorView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleCurveEditorView.js +303 -120
- package/editor/view/particles/effect/ParticleGradientEditorView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleGradientEditorView.js +108 -63
- package/editor/view/particles/effect/ParticleGraphEditorView.js +2 -2
- package/editor/view/particles/effect/ParticleNodeParametersView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleNodeParametersView.js +7 -46
- package/editor/view/particles/effect/particle-editor.css +60 -30
- package/package.json +1 -2
- package/samples/engine/README.md +1 -1
- package/src/core/binary/compression/decompress_bytes.d.ts +13 -0
- package/src/core/binary/compression/decompress_bytes.d.ts.map +1 -0
- package/src/core/binary/compression/decompress_bytes.js +28 -0
- package/src/core/collection/array/array_group_by.d.ts.map +1 -1
- package/src/core/collection/array/array_group_by.js +2 -11
- package/src/core/geom/3d/shape/HeightMapShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/HeightMapShape3D.js +4 -9
- package/src/core/model/node-graph/visual/layout/layout_assign_coordinates.js +67 -22
- package/src/core/model/object/optional_clone.d.ts +7 -0
- package/src/core/model/object/optional_clone.d.ts.map +1 -0
- package/src/core/model/object/optional_equality.d.ts +10 -0
- package/src/core/model/object/optional_equality.d.ts.map +1 -0
- package/src/{shade/descriptor/util → core/model/object}/optional_equality.js +2 -2
- package/src/core/model/object/optional_hash.d.ts +9 -0
- package/src/core/model/object/optional_hash.d.ts.map +1 -0
- package/src/{shade/descriptor/util → core/model/object}/optional_hash.js +3 -3
- package/src/engine/asset/Asset.d.ts +1 -1
- package/src/engine/asset/Asset.d.ts.map +1 -1
- package/src/engine/asset/Asset.js +3 -1
- package/src/engine/asset/loaders/image/ImageDecoderWorker.js +12 -27
- package/src/engine/asset/loaders/image/prototypePNG.js +8 -7
- package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.d.ts.map +1 -1
- package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.js +9 -10
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +4 -0
- package/src/engine/graphics/ecs/particles/ParticleEffect.d.ts +266 -0
- package/src/engine/graphics/ecs/particles/ParticleEffect.d.ts.map +1 -0
- package/src/engine/graphics/ecs/particles/ParticleEffect.js +439 -0
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationAdapter.d.ts +58 -0
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationAdapter.d.ts.map +1 -0
- package/src/engine/graphics/ecs/particles/ParticleEffectSerializationAdapter.js +219 -0
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +178 -25
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.js +809 -310
- package/src/format/image/png/PNGReader.d.ts +7 -6
- package/src/format/image/png/PNGReader.d.ts.map +1 -1
- package/src/format/image/png/PNGReader.js +13 -12
- package/src/format/image/png/chunk/png_chunk_decode_iTXt.d.ts +3 -2
- package/src/format/image/png/chunk/png_chunk_decode_iTXt.d.ts.map +1 -1
- package/src/format/image/png/chunk/png_chunk_decode_iTXt.js +5 -4
- package/src/format/image/png/chunk/png_chunk_decode_zTXt.d.ts +3 -2
- package/src/format/image/png/chunk/png_chunk_decode_zTXt.d.ts.map +1 -1
- package/src/format/image/png/chunk/png_chunk_decode_zTXt.js +5 -4
- package/src/format/image/png/png_inflate.d.ts +3 -3
- package/src/format/image/png/png_inflate.d.ts.map +1 -1
- package/src/format/image/png/png_inflate.js +29 -39
- package/src/format/texture/ktx2/ktx2_read.d.ts +4 -4
- package/src/format/texture/ktx2/ktx2_read.d.ts.map +1 -1
- package/src/format/texture/ktx2/ktx2_read.js +18 -21
- package/src/shade/descriptor/binding/BindGroupLayoutDescriptor.js +1 -1
- package/src/shade/descriptor/binding/BindGroupLayoutEntry.js +3 -3
- package/src/shade/descriptor/pipeline/PipelineDescriptorBase.js +1 -1
- package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.js +1 -1
- package/src/shade/descriptor/pipeline/render/ColorTargetState.js +3 -3
- package/src/shade/descriptor/pipeline/render/FragmentState.js +1 -1
- package/src/shade/descriptor/pipeline/render/RenderPipelineDescriptor.js +3 -3
- package/src/shade/playground/particle_ecs/README.md +203 -0
- package/src/shade/playground/particle_ecs/bonfire_editor.d.ts +39 -0
- package/src/shade/playground/particle_ecs/bonfire_editor.d.ts.map +1 -0
- package/src/shade/playground/particle_ecs/bonfire_editor.js +315 -0
- package/src/shade/playground/particle_ecs/bonfire_effects.d.ts +145 -0
- package/src/shade/playground/particle_ecs/bonfire_effects.d.ts.map +1 -0
- package/src/shade/playground/particle_ecs/bonfire_effects.js +202 -0
- package/src/shade/playground/particle_ecs/bonfire_sprites.d.ts +23 -0
- package/src/shade/playground/particle_ecs/bonfire_sprites.d.ts.map +1 -0
- package/src/shade/playground/particle_ecs/bonfire_sprites.js +315 -0
- package/src/shade/playground/particle_ecs/bonfire_world.d.ts +86 -0
- package/src/shade/playground/particle_ecs/bonfire_world.d.ts.map +1 -0
- package/src/shade/playground/particle_ecs/bonfire_world.js +303 -0
- package/src/shade/playground/particle_ecs/effects/embers.json +1634 -0
- package/src/shade/playground/particle_ecs/effects/flame.json +1882 -0
- package/src/shade/playground/particle_ecs/effects/smoke.json +1860 -0
- package/src/shade/playground/particle_ecs/effects/soot.json +1606 -0
- package/src/shade/playground/particle_ecs/index.html +330 -0
- package/src/shade/playground/particle_ecs/main.d.ts +2 -0
- package/src/shade/playground/particle_ecs/main.d.ts.map +1 -0
- package/src/shade/playground/particle_ecs/main.js +566 -0
- package/src/shade/playground/particle_ecs/moonlit_environment.d.ts +16 -0
- package/src/shade/playground/particle_ecs/moonlit_environment.d.ts.map +1 -0
- package/src/shade/playground/particle_ecs/moonlit_environment.js +144 -0
- package/src/shade/playground/particle_editor/README.md +5 -4
- package/src/shade/playground/particle_system/particle_prototype.d.ts +7 -9
- package/src/shade/playground/particle_system/particle_prototype.d.ts.map +1 -1
- package/src/shade/playground/particle_system/particle_prototype.js +7 -9
- package/src/shade/playground/profile_hotkey.d.ts +58 -0
- package/src/shade/playground/profile_hotkey.d.ts.map +1 -0
- package/src/shade/playground/profile_hotkey.js +325 -0
- package/src/shade/playground/ssr_motion/README.md +22 -0
- package/src/shade/playground/ssr_motion/index.html +18 -0
- package/src/shade/playground/ssr_motion/main.d.ts +2 -0
- package/src/shade/playground/ssr_motion/main.d.ts.map +1 -0
- package/src/shade/playground/ssr_motion/main.js +149 -0
- package/src/shade/playground/ssr_variance/README.md +105 -0
- package/src/shade/playground/ssr_variance/capture.d.ts +16 -0
- package/src/shade/playground/ssr_variance/capture.d.ts.map +1 -0
- package/src/shade/playground/ssr_variance/capture.js +96 -0
- package/src/shade/playground/ssr_variance/index.html +23 -0
- package/src/shade/playground/ssr_variance/main.d.ts +2 -0
- package/src/shade/playground/ssr_variance/main.d.ts.map +1 -0
- package/src/shade/playground/ssr_variance/main.js +246 -0
- package/src/shade/playground/ssr_variance/reference.d.ts +18 -0
- package/src/shade/playground/ssr_variance/reference.d.ts.map +1 -0
- package/src/shade/playground/ssr_variance/reference.js +78 -0
- package/src/shade/playground/ssr_variance/scene.d.ts +11 -0
- package/src/shade/playground/ssr_variance/scene.d.ts.map +1 -0
- package/src/shade/playground/ssr_variance/scene.js +61 -0
- package/src/shade/playground/ssr_variance/statistics.d.ts +44 -0
- package/src/shade/playground/ssr_variance/statistics.d.ts.map +1 -0
- package/src/shade/playground/ssr_variance/statistics.js +51 -0
- package/src/shade/renderer/geometry/Geometry.d.ts.map +1 -1
- package/src/shade/renderer/geometry/Geometry.js +4 -7
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts.map +1 -1
- package/src/shade/renderer/loader/gltf/tiny-gltf.js +9 -3
- package/src/shade/renderer/loader/usd/usd_decode_image.d.ts +4 -4
- package/src/shade/renderer/loader/usd/usd_decode_image.d.ts.map +1 -1
- package/src/shade/renderer/loader/usd/usd_decode_image.js +4 -4
- package/src/shade/renderer/material/StandardShadeMaterial.js +2 -2
- package/src/shade/renderer/particles/DESIGN.md +745 -702
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
- package/src/shade/renderer/particles/GPUParticleSystem.js +3 -1
- package/src/shade/renderer/particles/graph/ParticleGroupBuilder.d.ts +1 -1
- package/src/shade/renderer/particles/graph/ParticleGroupBuilder.js +1 -1
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.js +9 -15
- package/src/shade/renderer/particles/graph/particle_group_library.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_group_library.js +8 -3
- package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts +0 -2
- package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_node_parameters.js +0 -9
- package/src/shade/renderer/particles/graph/particle_node_presentation.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_node_presentation.js +0 -10
- package/src/shade/renderer/particles/graph/particle_ramp.d.ts +2 -8
- package/src/shade/renderer/particles/graph/particle_ramp.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_ramp.js +2 -8
- package/src/shade/renderer/particles/graph/validate_particle_graph.js +0 -6
- package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles_avboit.js +13 -4
- package/src/shade/renderer/particles/isa/InstructionStream.d.ts +1 -12
- package/src/shade/renderer/particles/isa/InstructionStream.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/InstructionStream.js +1 -12
- package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts +54 -60
- package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/ParticleVMISA.js +9 -17
- package/src/shade/renderer/particles/isa/particle_assembly.d.ts +0 -1
- package/src/shade/renderer/particles/isa/particle_assembly.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/particle_assembly.js +2 -16
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_graph.d.ts +1 -1
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_graph.js +1 -1
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_lift.js +0 -14
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.js +3 -17
- package/src/shade/renderer/particles/optimizer/particle_program_analysis.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_program_analysis.js +15 -36
- package/src/shade/renderer/particles/optimizer/particle_program_equivalence.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_program_equivalence.js +1 -5
- package/src/shade/renderer/particles/optimizer/particle_program_fuzz.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_program_fuzz.js +1 -8
- package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts +2 -11
- package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_vm_semantics.js +2 -11
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts +11 -4
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/ParticleEmitter.js +431 -424
- package/src/shade/renderer/particles/shaders/chunk_particle_avboit_contribution.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_avboit_contribution.js +13 -0
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts +3 -6
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +49 -17
- package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_emit.js +0 -2
- package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.js +0 -2
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +1 -5
- package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.js +0 -2
- package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts +1 -3
- package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts.map +1 -1
- package/src/shade/renderer/particles/vm/ParticleVMReference.js +4 -20
- package/src/shade/renderer/particles/vm/chunk_particle_vm.d.ts.map +1 -1
- package/src/shade/renderer/particles/vm/chunk_particle_vm.js +2 -5
- package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance.d.ts.map +1 -1
- package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance.js +0 -2
- package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance_wide.d.ts.map +1 -1
- package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance_wide.js +0 -2
- package/src/shade/renderer/postprocess/ssr/SSR.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/SSR.js +2 -1
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_reprojection.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_reprojection.js +20 -5
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_sample_history.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_sample_history.js +19 -5
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.d.ts +4 -0
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.js +137 -0
- package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.d.ts +0 -8
- package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.js +18 -114
- package/src/shade/renderer/scene/Mesh.js +1 -1
- package/src/shade/renderer/texture/ShadeTexture.js +1 -1
- package/src/shade/renderer/texture/source/texel_data_from_ktx2.d.ts +2 -2
- package/src/shade/renderer/texture/source/texel_data_from_ktx2.d.ts.map +1 -1
- package/src/shade/renderer/texture/source/texel_data_from_ktx2.js +3 -3
- package/src/shade/renderer/particles/shaders/chunk_particle_curve_animation.d.ts +0 -19
- package/src/shade/renderer/particles/shaders/chunk_particle_curve_animation.d.ts.map +0 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_curve_animation.js +0 -30
- package/src/shade/renderer/particles/shaders/chunk_particle_curve_disabled.d.ts +0 -11
- package/src/shade/renderer/particles/shaders/chunk_particle_curve_disabled.d.ts.map +0 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_curve_disabled.js +0 -13
- package/src/shade/renderer/particles/shaders/chunk_particle_emitter_warmup.d.ts +0 -20
- package/src/shade/renderer/particles/shaders/chunk_particle_emitter_warmup.d.ts.map +0 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_emitter_world_sphere.d.ts +0 -14
- package/src/shade/renderer/particles/shaders/chunk_particle_emitter_world_sphere.d.ts.map +0 -1
- package/src/shade/renderer/particles/shaders/shader_particle_reclaim.d.ts +0 -50
- package/src/shade/renderer/particles/shaders/shader_particle_reclaim.d.ts.map +0 -1
- package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.d.ts +0 -17
- package/src/shade/renderer/postprocess/ssr/reproject/shader_ffx_denoiser_reflections_reproject.d.ts.map +0 -1
- /package/src/{shade/descriptor/util → core/model/object}/optional_clone.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUParticleSystem.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/particles/GPUParticleSystem.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GPUParticleSystem.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/particles/GPUParticleSystem.js"],"names":[],"mappings":"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"}
|
|
@@ -41,6 +41,8 @@ const WORD = Uint32Array.BYTES_PER_ELEMENT;
|
|
|
41
41
|
const STORAGE = GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC;
|
|
42
42
|
const INDIRECT = GPUBufferUsage.STORAGE | GPUBufferUsage.INDIRECT | GPUBufferUsage.COPY_SRC;
|
|
43
43
|
|
|
44
|
+
const DEFAULT_CAPACITY = 524288;
|
|
45
|
+
|
|
44
46
|
/**
|
|
45
47
|
* The GPU particle system: a feature of a scene, in the mould of `ReSTIRDI` — construct once
|
|
46
48
|
* against a {@link GPUSceneContext}, and contribute the frame's passes through
|
|
@@ -299,7 +301,7 @@ export class GPUParticleSystem {
|
|
|
299
301
|
* @param {number} [options.capacity] max simultaneous particles
|
|
300
302
|
* @param {number} [options.spawn_command_capacity] most {@link spawn} calls one frame keeps
|
|
301
303
|
*/
|
|
302
|
-
constructor(graphics, scene_context, { capacity =
|
|
304
|
+
constructor(graphics, scene_context, { capacity = DEFAULT_CAPACITY, spawn_command_capacity = 256 } = {}) {
|
|
303
305
|
assert.defined(graphics, "graphics");
|
|
304
306
|
assert.defined(scene_context, "scene_context");
|
|
305
307
|
assert.equal(scene_context.isGPUSceneContext, true, "scene_context.isGPUSceneContext !== true");
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*
|
|
10
10
|
* Every stock operation that takes no parameters of its own is a method here, taken from the library
|
|
11
11
|
* rather than listed — a type added to it is callable the same day. The rest — `const`, `swizzle`,
|
|
12
|
-
* `random`, `
|
|
12
|
+
* `random`, `curveLiteral` and the attribute nodes — need a parameter and are reached through
|
|
13
13
|
* {@link #op}, or through the shorthands below where there is an obvious one.
|
|
14
14
|
*
|
|
15
15
|
* A number where a value is expected becomes a literal, so `g.mul(v, 0.5)` is what it looks like.
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
*
|
|
18
18
|
* Every stock operation that takes no parameters of its own is a method here, taken from the library
|
|
19
19
|
* rather than listed — a type added to it is callable the same day. The rest — `const`, `swizzle`,
|
|
20
|
-
* `random`, `
|
|
20
|
+
* `random`, `curveLiteral` and the attribute nodes — need a parameter and are reached through
|
|
21
21
|
* {@link #op}, or through the shorthands below where there is an obvious one.
|
|
22
22
|
*
|
|
23
23
|
* A number where a value is expected becomes a literal, so `g.mul(v, 0.5)` is what it looks like.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParticleNodeRegistry.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/ParticleNodeRegistry.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ParticleNodeRegistry.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/ParticleNodeRegistry.js"],"names":[],"mappings":"AA+qBA;;;;;;;GAOG;AACH,8CAFa,uBAAuB,EAAE,CAIrC;AAED;;;;;GAKG;AACH,oDAJW,MAAM,GACJ,uBAAuB,CAWnC;AA1qBD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;;;;;;;GASG;AACH,kCAFU,QAAQ,CAE2C;AAE7D;;;GAGG;AACH,wCAFU,MAAM,CAE+B;AAE/C;;GAEG;AACH,qCAFU,YAAY,CAEmC;wCAhEjB,8BAA8B;yBAZ7C,oDAAoD;6BAFhD,wDAAwD"}
|
|
@@ -90,12 +90,14 @@ for (const type of PARTICLE_ALL_VALUE_TYPES) {
|
|
|
90
90
|
*
|
|
91
91
|
* IDs are handed out in declaration order rather than by {@link NodeDescription}'s global counter,
|
|
92
92
|
* so they do not drift with unrelated node usage elsewhere in the engine. Appending new node types
|
|
93
|
-
* at the end of the library is therefore safe
|
|
94
|
-
*
|
|
93
|
+
* at the end of the library is therefore safe. Removed types leave their IDs unused so existing
|
|
94
|
+
* serialized graphs retain the same IDs for every remaining type.
|
|
95
95
|
*
|
|
96
96
|
* @type {Map<string, ParticleNodeDescription>}
|
|
97
97
|
*/
|
|
98
|
-
const descriptions_by_name = new Map();
|
|
98
|
+
const descriptions_by_name = new Map();
|
|
99
|
+
|
|
100
|
+
let next_description_id = 0;
|
|
99
101
|
|
|
100
102
|
/**
|
|
101
103
|
* @param {string} name
|
|
@@ -123,7 +125,7 @@ function define(name, inputs, emit, {
|
|
|
123
125
|
const description = new ParticleNodeDescription();
|
|
124
126
|
|
|
125
127
|
description.name = name;
|
|
126
|
-
description.id =
|
|
128
|
+
description.id = next_description_id++;
|
|
127
129
|
|
|
128
130
|
// what an author reads is decided in one table, away from the lowering; see
|
|
129
131
|
// ./particle_node_presentation.js
|
|
@@ -572,14 +574,8 @@ define("compare", ["a", "b"], (s, c) => {
|
|
|
572
574
|
}, MASK_RESULT);
|
|
573
575
|
define("select", ["a", "b", "condition"], (s, c) => s.emit(VM_OP.SELECT, c.out, c.in("a"), c.in("b"), c.in("condition"), c.width), blend_controlled_by("condition"));
|
|
574
576
|
|
|
575
|
-
//
|
|
576
|
-
|
|
577
|
-
// a curve read wider than a scalar is the broadcast for free.
|
|
578
|
-
define("curve", ["t"], (s, c) => s.curve(c.out, c.parameters.handle, c.in("t"), c.width), {
|
|
579
|
-
infer_types: () => ({ output: PARTICLE_TYPE_F32, inputs: { t: PARTICLE_TYPE_F32 } }),
|
|
580
|
-
operation_width: ({ demand }) => demand,
|
|
581
|
-
input_widths: () => ({ t: 1 }),
|
|
582
|
-
});
|
|
577
|
+
// ID 39 belonged to the removed animation-table sampler. Keep it unused.
|
|
578
|
+
next_description_id++;
|
|
583
579
|
|
|
584
580
|
// --- semantic sources ---
|
|
585
581
|
// Appended rather than filed with the other sources, because a node type's id is its position in
|
|
@@ -665,9 +661,7 @@ function expanding(name, inputs, output, body) {
|
|
|
665
661
|
return description;
|
|
666
662
|
}
|
|
667
663
|
|
|
668
|
-
// One curve, written into the program
|
|
669
|
-
// host's animation-curve table and this one *is* the curve, the way `color` is a colour rather than
|
|
670
|
-
// the name of one.
|
|
664
|
+
// One authored curve, written into the program as arithmetic.
|
|
671
665
|
expanding(
|
|
672
666
|
"curveLiteral",
|
|
673
667
|
[{ name: "t", type: PARTICLE_TYPE_F32 }],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"particle_group_library.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/particle_group_library.js"],"names":[],"mappings":"AAoBA;;;;;;;;;;GAUG;AACH,+CAHW,OAAO,wBAAwB,EAAE,iBAAiB,GAChD,OAAO,wBAAwB,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"particle_group_library.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/particle_group_library.js"],"names":[],"mappings":"AAoBA;;;;;;;;;;GAUG;AACH,+CAHW,OAAO,wBAAwB,EAAE,iBAAiB,GAChD,OAAO,wBAAwB,EAAE,iBAAiB,CAqB9D;AAED;;;;GAIG;AACH,mCAFa,OAAO,wBAAwB,EAAE,iBAAiB,EAAE,CAIhE;AAED;;;;;GAKG;AACH,yCAHW,MAAM,GACJ,OAAO,wBAAwB,EAAE,iBAAiB,GAAC,SAAS,CAIxE;AAED;;;;;GAKG;AACH,6CAHW,MAAM,GACJ,OAAO,CAInB"}
|
|
@@ -38,9 +38,14 @@ export function register_particle_group(group) {
|
|
|
38
38
|
|
|
39
39
|
// The group node itself, and the two boundary blocks its body is wired to: a view that opens the
|
|
40
40
|
// group draws those, and everything drawn needs a box generated for it.
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
// Stock types leave holes when removed. Allocate after their highest ID rather than relying
|
|
42
|
+
// on NodeDescription's global counter, which counts constructions, not reserved IDs.
|
|
43
|
+
let id = Math.max(...PARTICLE_NODE_REGISTRY.nodes.keys()) + 1;
|
|
44
|
+
|
|
45
|
+
for (const description of [group.description, group.inputNode.description, group.outputNode.description]) {
|
|
46
|
+
description.id = id++;
|
|
47
|
+
PARTICLE_NODE_REGISTRY.addNode(description);
|
|
48
|
+
}
|
|
44
49
|
|
|
45
50
|
return group;
|
|
46
51
|
}
|
|
@@ -91,8 +91,6 @@ export const PARTICLE_PARAMETER_KIND: Readonly<{
|
|
|
91
91
|
ENUM: "enum";
|
|
92
92
|
/** one to four lane selectors in `[0, 4)`, one per output lane */
|
|
93
93
|
SWIZZLE: "swizzle";
|
|
94
|
-
/** a non-negative integer — a curve handle */
|
|
95
|
-
INTEGER: "integer";
|
|
96
94
|
/**
|
|
97
95
|
* an {@link ../../../../engine/animation/curve/AnimationCurve.js AnimationCurve}, as the
|
|
98
96
|
* `{keys: [...]}` record that class writes and reads
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"particle_node_parameters.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/particle_node_parameters.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"particle_node_parameters.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/particle_node_parameters.js"],"names":[],"mappings":"AA+LA;;;;;;;;;;;;;;;;;GAiBG;AACH,sDAHW,MAAM,GACJ,MAAM,CAIlB;AAwBD;;;;;;GAMG;AACH,+CAJW,MAAM,GACJ,qBAAqB,EAAE,CAcnC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,uDANW,MAAM;IAEyD,MAAM,GAArE,OAAO,6BAA6B,EAAE,cAAc;IAElD,MAAM,CAmBlB;AAED;;;;GAIG;AACH,2CAFa,MAAM;IAAC,WAAW,EAAE,OAAO,8BAA8B,EAAE,uBAAuB,CAAC;IAAC,UAAU,EAAE,qBAAqB,EAAE,CAAA;CAAC,CAAC,CAOrI;;;;sCApRS,MAAM;AApBhB;;;;;;;;;;;;;;;;GAgBG;AAEH;;;GAGG;AACH;IACI,0FAA0F;;IAE1F,kFAAkF;;IAElF,mFAAmF;;IAEnF,2EAA2E;;IAE3E,kEAAkE;;IAElE;;;OAGG;;IAEH;;;OAGG;;GAEJ;AAEH;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;;GASG;AACH,gDAFU,MAAM,EAAE,CAWf;AAEH;;;;;GAKG;AACH;QAFiB,MAAM,GAAE,MAAM;EAI7B;AAEF;;;;;GAKG;AACH;QAFiB,MAAM,GAAE,qBAAqB,EAAE;EAuF7C;;;;;;;;UAtIW,MAAM;;;;UACN,MAAM;;;;;;;;;;YAGC,MAAM;;;;;;;;YACb,OAAO;;;;kBAIP,MAAM"}
|
|
@@ -37,8 +37,6 @@ export const PARTICLE_PARAMETER_KIND = Object.freeze({
|
|
|
37
37
|
ENUM: "enum",
|
|
38
38
|
/** one to four lane selectors in `[0, 4)`, one per output lane */
|
|
39
39
|
SWIZZLE: "swizzle",
|
|
40
|
-
/** a non-negative integer — a curve handle */
|
|
41
|
-
INTEGER: "integer",
|
|
42
40
|
/**
|
|
43
41
|
* an {@link ../../../../engine/animation/curve/AnimationCurve.js AnimationCurve}, as the
|
|
44
42
|
* `{keys: [...]}` record that class writes and reads
|
|
@@ -172,13 +170,6 @@ export const PARTICLE_NODE_PARAMETER_SCHEMA = Object.freeze({
|
|
|
172
170
|
description: "Which input lane each output lane reads; one to four of them, and that count is the result's width.",
|
|
173
171
|
}],
|
|
174
172
|
|
|
175
|
-
curve: [{
|
|
176
|
-
name: "handle",
|
|
177
|
-
kind: PARTICLE_PARAMETER_KIND.INTEGER,
|
|
178
|
-
default: 0,
|
|
179
|
-
description: "Row of the animation-curve table to sample.",
|
|
180
|
-
}],
|
|
181
|
-
|
|
182
173
|
curveLiteral: [{
|
|
183
174
|
name: "curve",
|
|
184
175
|
kind: PARTICLE_PARAMETER_KIND.CURVE,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"particle_node_presentation.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/particle_node_presentation.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"particle_node_presentation.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/particle_node_presentation.js"],"names":[],"mappings":"AAiUA;;;;;;;GAOG;AACH,iDAHW,MAAM,GACJ;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CAIvD;AAjSD;;;;;;;;GAQG;AACH;QAFiB,MAAM,GAAE;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC;EA8QjE"}
|
|
@@ -301,17 +301,7 @@ export const PARTICLE_NODE_PRESENTATION = Object.freeze({
|
|
|
301
301
|
},
|
|
302
302
|
|
|
303
303
|
// --- ramps ---
|
|
304
|
-
// Two ways to have a curve, and the labels say which is which. The table one came first and was
|
|
305
|
-
// called just "Curve"; it is renamed here rather than leaving the new one to explain itself,
|
|
306
|
-
// because "the one that samples the host's table" is the surprising half of the pair and the
|
|
307
|
-
// one an author has to have decided to want.
|
|
308
|
-
curve: {
|
|
309
|
-
label: "Curve Table",
|
|
310
|
-
icon: `M5 18C10 18 9 6 19 6 ${dot(5, 18, 1.6)} ${dot(19, 6, 1.6)}`,
|
|
311
|
-
help: "sample a row of the host's animation-curve table at t",
|
|
312
|
-
},
|
|
313
304
|
curveLiteral: {
|
|
314
|
-
// the same curve with its keys on it: this one is the curve rather than a handle to one
|
|
315
305
|
label: "Curve",
|
|
316
306
|
icon: `M4 19C10 19 8 5 20 5 ${dot(4, 19, 1.8)} ${dot(12, 12, 1.8)} ${dot(20, 5, 1.8)}`,
|
|
317
307
|
help: "a curve of your own, written into the program: t in, its value out",
|
|
@@ -128,14 +128,8 @@ export function roll_out_particle_gradient(g: import("./ParticleGroupBuilder.js"
|
|
|
128
128
|
* {@link ./ParticleNodeDescription.js ParticleNodeDescription#expand}), and this is what they expand
|
|
129
129
|
* *into*: stock nodes, which is to say VM instructions, with the curve rolled out along them.
|
|
130
130
|
*
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
* There is a `CURVE` opcode, and it is not this. That one samples a row of the animation-curve table
|
|
134
|
-
* a host uploads, which is the right answer for a curve an author is dragging around at runtime and
|
|
135
|
-
* the wrong one for a curve that is part of the effect: it costs a table, a row, a handle to keep in
|
|
136
|
-
* step with it, and a texture fetch. A ramp with four stops rolls out to about twenty instructions
|
|
137
|
-
* of pure arithmetic, needs nothing from the host, and constant-folds where an author has left a
|
|
138
|
-
* segment flat.
|
|
131
|
+
* A ramp with four stops rolls out to about twenty instructions of pure arithmetic, needs nothing
|
|
132
|
+
* from the host, and constant-folds where an author has left a segment flat.
|
|
139
133
|
*
|
|
140
134
|
* ## How a piecewise function becomes straight-line code
|
|
141
135
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"particle_ramp.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/particle_ramp.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"particle_ramp.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/particle_ramp.js"],"names":[],"mappings":"AAqFA;;;;;;;;GAQG;AACH,0CAFa,sBAAsB,CASlC;AAED;;;;GAIG;AACH,6CAFa,oBAAoB,EAAE,CAOlC;AAUD;;;;;;;;;GASG;AACH,+CAFa,OAAO,CAanB;AAED;;;;;GAKG;AACH,kDAFa,OAAO,CAanB;AAED;;;;;;;;;GASG;AACH,2CAHW,sBAAsB,GACpB,gBAAgB,EAAE,CAI9B;AAED;;;;;;GAMG;AACH,gDAHW,sBAAsB,GACpB,cAAc,CAQ1B;AAED;;;;;GAKG;AACH,qDAHW,cAAc,GACZ,sBAAsB,CAWlC;AAED;;;;;GAKG;AACH,+CAHW,oBAAoB,EAAE,GACpB,oBAAoB,EAAE,CAMlC;AAED;;;;;;;GAOG;AACH,gDAJW,oBAAoB,EAAE,KACtB,MAAM,GACJ,MAAM,EAAE,CAsBpB;AA8BD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,2CALW,OAAO,2BAA2B,EAAE,oBAAoB,iBAExD,sBAAsB,OA+ChC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,8CANW,OAAO,2BAA2B,EAAE,oBAAoB,iBAExD,oBAAoB,EAAE,cACtB,MAAM,OA8BhB;AAzYD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAEH;;;;;;;;;GASG;AAEH;;;;GAIG;AAEH;;;;;;GAMG;AAEH;;;GAGG;AACH,iDAFU,MAAM,CAEoC;;;;;;UAxBtC,MAAM;WACN,MAAM;eACN,MAAM;gBACN,MAAM;;;;;qCAMP;IAAC,IAAI,EAAE,gBAAgB,EAAE,CAAA;CAAC;;;;;;mCAQ1B;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAC;+BA5EjB,sDAAsD"}
|
|
@@ -11,14 +11,8 @@ import { AnimationCurve } from "../../../../engine/animation/curve/AnimationCurv
|
|
|
11
11
|
* {@link ./ParticleNodeDescription.js ParticleNodeDescription#expand}), and this is what they expand
|
|
12
12
|
* *into*: stock nodes, which is to say VM instructions, with the curve rolled out along them.
|
|
13
13
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* There is a `CURVE` opcode, and it is not this. That one samples a row of the animation-curve table
|
|
17
|
-
* a host uploads, which is the right answer for a curve an author is dragging around at runtime and
|
|
18
|
-
* the wrong one for a curve that is part of the effect: it costs a table, a row, a handle to keep in
|
|
19
|
-
* step with it, and a texture fetch. A ramp with four stops rolls out to about twenty instructions
|
|
20
|
-
* of pure arithmetic, needs nothing from the host, and constant-folds where an author has left a
|
|
21
|
-
* segment flat.
|
|
14
|
+
* A ramp with four stops rolls out to about twenty instructions of pure arithmetic, needs nothing
|
|
15
|
+
* from the host, and constant-folds where an author has left a segment flat.
|
|
22
16
|
*
|
|
23
17
|
* ## How a piecewise function becomes straight-line code
|
|
24
18
|
*
|
|
@@ -231,12 +231,6 @@ function check_parameters(node, description, layout, error) {
|
|
|
231
231
|
}
|
|
232
232
|
break;
|
|
233
233
|
|
|
234
|
-
case PARTICLE_PARAMETER_KIND.INTEGER:
|
|
235
|
-
if (!Number.isInteger(value) || value < 0) {
|
|
236
|
-
error(node.id, `Parameter '${parameter.name}' must be a non-negative whole number.`);
|
|
237
|
-
}
|
|
238
|
-
break;
|
|
239
|
-
|
|
240
234
|
// A curve and a gradient are the only parameters with a shape underneath them, and both
|
|
241
235
|
// are written out into instructions rather than read at runtime — so a malformed one is
|
|
242
236
|
// a compile that throws rather than a value that misbehaves, and it is worth catching
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph_particles_avboit.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/particles/graph_particles_avboit.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graph_particles_avboit.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/particles/graph_particles_avboit.js"],"names":[],"mappings":"AAuCA;;;;;;;;;;;;;;;GAeG;AACH;IARkG,KAAK,EAA5F,OAAO,2DAA2D,EAAE,UAAU;IAC/D,MAAM,EAArB,MAAM;IACoB,kBAAkB,EAA5C,UAAU,MAAM,CAAC;IACF,SAAS,EAAxB,MAAM;IACS,gBAAgB,EAA/B,MAAM;IACS,mBAAmB,EAAlC,MAAM;IACJ,MAAM,CA8ClB;AAED;;;;;;;;;;;;;;;GAeG;AACH;IAZkG,KAAK,EAA5F,OAAO,2DAA2D,EAAE,UAAU;IAC/D,MAAM,EAArB,MAAM;IACS,IAAI,EAAnB,MAAM;IACwD,MAAM,EAApE;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC;IAC9B,KAAK;IACT,aAAa;IACjB,IAAI,EAAnB,MAAM;IACS,KAAK,EAApB,MAAM;IACS,gBAAgB,EAA/B,MAAM;IACS,SAAS,EAAxB,MAAM;IACJ;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CA8EjE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH;IAjBkG,KAAK,EAA5F,OAAO,2DAA2D,EAAE,UAAU;IACnB,QAAQ,EAAnE,OAAO,2BAA2B,EAAE,cAAc;IACnC,MAAM,EAArB,MAAM;IACS,aAAa,EAA5B,MAAM;IACS,IAAI,EAAnB,MAAM;IACS,QAAQ,EAAvB,MAAM;IACS,eAAe,EAA9B,MAAM;IACS,oBAAoB,EAAnC,MAAM;IACsE,YAAY,EAAxF;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC;IAC5C,KAAK;IACT,aAAa;IACjB,IAAI,EAAnB,MAAM;IACS,KAAK,EAApB,MAAM;IACS,gBAAgB,EAA/B,MAAM;IACS,SAAS,EAAxB,MAAM;IACJ;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAC,CA2G/E"}
|
|
@@ -6,7 +6,9 @@ import { AVBOIT_OCCUPANCY_SETTINGS_STRUCT } from "../rasterize/native/avboit/sha
|
|
|
6
6
|
import { STATIC_GRAPHICS_ENGINE_ASSETS } from "../STATIC_GRAPHICS_ENGINE_ASSETS.js";
|
|
7
7
|
import { shader_particle_avboit_occupancy } from "./shaders/shader_particle_avboit_occupancy.js";
|
|
8
8
|
import {
|
|
9
|
-
|
|
9
|
+
PARTICLE_AVBOIT_DRAW_ALPHA_PIPELINE,
|
|
10
|
+
PARTICLE_AVBOIT_DRAW_ADDITIVE_PIPELINE,
|
|
11
|
+
PARTICLE_AVBOIT_DRAW_GENERAL_PIPELINE,
|
|
10
12
|
PARTICLE_AVBOIT_DRAW_RESOURCES,
|
|
11
13
|
} from "./shaders/shader_particle_avboit_draw.js";
|
|
12
14
|
import {
|
|
@@ -268,7 +270,7 @@ export function graph_particle_avboit_draw({
|
|
|
268
270
|
// allowed because the attachment is read-only.
|
|
269
271
|
const pass_encoder = encoder.constructRenderPass({
|
|
270
272
|
label: "Particle AVBOIT Draw",
|
|
271
|
-
pipeline:
|
|
273
|
+
pipeline: PARTICLE_AVBOIT_DRAW_ALPHA_PIPELINE,
|
|
272
274
|
bindings,
|
|
273
275
|
colorAttachments: [
|
|
274
276
|
attachment(data.color),
|
|
@@ -281,8 +283,15 @@ export function graph_particle_avboit_draw({
|
|
|
281
283
|
depthReadOnly: true,
|
|
282
284
|
},
|
|
283
285
|
});
|
|
284
|
-
|
|
285
|
-
|
|
286
|
+
// All three use the alive list; their vertex stages select disjoint particle groups.
|
|
287
|
+
// Premultiplied particles can both cover and emit, so they retain the general pipeline.
|
|
288
|
+
const args = resources.get(data.draw_args);
|
|
289
|
+
pass_encoder.drawIndirect(args, 0);
|
|
290
|
+
pass_encoder.setPipeline(graphics.render_pipelines.obtain(PARTICLE_AVBOIT_DRAW_ADDITIVE_PIPELINE));
|
|
291
|
+
pass_encoder.drawIndirect(args, 0);
|
|
292
|
+
pass_encoder.setPipeline(graphics.render_pipelines.obtain(PARTICLE_AVBOIT_DRAW_GENERAL_PIPELINE));
|
|
293
|
+
pass_encoder.drawIndirect(args, 0);
|
|
294
|
+
pass_encoder.end();
|
|
286
295
|
}
|
|
287
296
|
|
|
288
297
|
const pass_data = {};
|
|
@@ -17,7 +17,7 @@ export class InstructionStream {
|
|
|
17
17
|
* A source is what its slot's role in the ISA says: for a register-role slot, a register operand
|
|
18
18
|
* word — a slot index, or `vm_register(slot, pattern)` to read it through a swizzle — or a
|
|
19
19
|
* literal from `vm_immediate(value)`; for any other role, the raw value (an attribute offset, a
|
|
20
|
-
* component count, a builtin id, a
|
|
20
|
+
* component count, a builtin id, a pool index). The kinds word 0 carries follow
|
|
21
21
|
* from that, and register operands are stored in their canonical spelling.
|
|
22
22
|
*
|
|
23
23
|
* `width` is the lane count the operation spans. Left out, it is the opcode's natural width —
|
|
@@ -123,17 +123,6 @@ export class InstructionStream {
|
|
|
123
123
|
* @returns {InstructionStream}
|
|
124
124
|
*/
|
|
125
125
|
random(dst: number, width?: number): InstructionStream;
|
|
126
|
-
/**
|
|
127
|
-
* @param {number} dst
|
|
128
|
-
* @param {number} curve_handle
|
|
129
|
-
* @param {number|{kind: number, word: number}} t a register operand word or a literal, read one lane
|
|
130
|
-
* @param {number} [width]
|
|
131
|
-
* @returns {InstructionStream}
|
|
132
|
-
*/
|
|
133
|
-
curve(dst: number, curve_handle: number, t: number | {
|
|
134
|
-
kind: number;
|
|
135
|
-
word: number;
|
|
136
|
-
}, width?: number): InstructionStream;
|
|
137
126
|
/**
|
|
138
127
|
* @returns {InstructionStream}
|
|
139
128
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InstructionStream.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/isa/InstructionStream.js"],"names":[],"mappings":"AAkCA;;;;;;GAMG;AACH;IACI,yCAAyC;IACzC,cADW,MAAM,EAAE,EAAE,CACH;IAClB,iEAAiE;IACjE,gBADW,MAAM,CACE;IAsBnB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,SARW,MAAM,QACN,MAAM,OACN,MAAM,GAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,OACnC,MAAM,GAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,OACnC,MAAM,GAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,UACnC,MAAM,GACJ,iBAAiB,CA6D7B;IAED;;;;;;OAMG;IACH,iBAHW,UAAU,MAAM,CAAC,GACf,iBAAiB,CAS7B;IAID;;;;;OAKG;IACH,SALW,MAAM,OACN,MAAM,UACN,MAAM,GACJ,iBAAiB,CAI7B;IAED;;;;;;;;OAQG;IACH,eALW,MAAM,OACN,MAAM,SACN,MAAM,GACJ,iBAAiB,CAI7B;IAED;;;;;OAKG;IACH,eALW,MAAM,kBACN,MAAM,UACN,MAAM,GACJ,iBAAiB,CAI7B;IAED;;;;;;;;;OASG;IACH,cANW,MAAM,eACN,MAAM,mBACN,MAAM,UACN,MAAM,GACJ,iBAAiB,CAK7B;IAED;;;;;;;;OAQG;IACH,kBALW,MAAM,GAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,eACnC,MAAM,mBACN,MAAM,GACJ,iBAAiB,CAK7B;IAED;;;;;OAKG;IACH,iBALW,MAAM,cACN,MAAM,UACN,MAAM,GACJ,iBAAiB,CAI7B;IAED;;;OAGG;IACH,gBAHW,MAAM,GAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,GACjC,iBAAiB,CAI7B;IAED;;;;;;;;OAQG;IACH,YAJW,MAAM,UACN,MAAM,GACJ,iBAAiB,CAI7B;IAED
|
|
1
|
+
{"version":3,"file":"InstructionStream.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/isa/InstructionStream.js"],"names":[],"mappings":"AAkCA;;;;;;GAMG;AACH;IACI,yCAAyC;IACzC,cADW,MAAM,EAAE,EAAE,CACH;IAClB,iEAAiE;IACjE,gBADW,MAAM,CACE;IAsBnB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,SARW,MAAM,QACN,MAAM,OACN,MAAM,GAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,OACnC,MAAM,GAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,OACnC,MAAM,GAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,UACnC,MAAM,GACJ,iBAAiB,CA6D7B;IAED;;;;;;OAMG;IACH,iBAHW,UAAU,MAAM,CAAC,GACf,iBAAiB,CAS7B;IAID;;;;;OAKG;IACH,SALW,MAAM,OACN,MAAM,UACN,MAAM,GACJ,iBAAiB,CAI7B;IAED;;;;;;;;OAQG;IACH,eALW,MAAM,OACN,MAAM,SACN,MAAM,GACJ,iBAAiB,CAI7B;IAED;;;;;OAKG;IACH,eALW,MAAM,kBACN,MAAM,UACN,MAAM,GACJ,iBAAiB,CAI7B;IAED;;;;;;;;;OASG;IACH,cANW,MAAM,eACN,MAAM,mBACN,MAAM,UACN,MAAM,GACJ,iBAAiB,CAK7B;IAED;;;;;;;;OAQG;IACH,kBALW,MAAM,GAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,eACnC,MAAM,mBACN,MAAM,GACJ,iBAAiB,CAK7B;IAED;;;;;OAKG;IACH,iBALW,MAAM,cACN,MAAM,UACN,MAAM,GACJ,iBAAiB,CAI7B;IAED;;;OAGG;IACH,gBAHW,MAAM,GAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,GACjC,iBAAiB,CAI7B;IAED;;;;;;;;OAQG;IACH,YAJW,MAAM,UACN,MAAM,GACJ,iBAAiB,CAI7B;IAED;;OAEG;IACH,QAFa,iBAAiB,CAI7B;IAED;;OAEG;IACH,gCAEC;IAED;;OAEG;IACH,WAFa,WAAW,CAWvB;;CACJ"}
|
|
@@ -72,7 +72,7 @@ export class InstructionStream {
|
|
|
72
72
|
* A source is what its slot's role in the ISA says: for a register-role slot, a register operand
|
|
73
73
|
* word — a slot index, or `vm_register(slot, pattern)` to read it through a swizzle — or a
|
|
74
74
|
* literal from `vm_immediate(value)`; for any other role, the raw value (an attribute offset, a
|
|
75
|
-
* component count, a builtin id, a
|
|
75
|
+
* component count, a builtin id, a pool index). The kinds word 0 carries follow
|
|
76
76
|
* from that, and register operands are stored in their canonical spelling.
|
|
77
77
|
*
|
|
78
78
|
* `width` is the lane count the operation spans. Left out, it is the opcode's natural width —
|
|
@@ -259,17 +259,6 @@ export class InstructionStream {
|
|
|
259
259
|
return this.emit(VM_OP.RANDOM, dst, 0, 0, 0, width);
|
|
260
260
|
}
|
|
261
261
|
|
|
262
|
-
/**
|
|
263
|
-
* @param {number} dst
|
|
264
|
-
* @param {number} curve_handle
|
|
265
|
-
* @param {number|{kind: number, word: number}} t a register operand word or a literal, read one lane
|
|
266
|
-
* @param {number} [width]
|
|
267
|
-
* @returns {InstructionStream}
|
|
268
|
-
*/
|
|
269
|
-
curve(dst, curve_handle, t, width = undefined) {
|
|
270
|
-
return this.emit(VM_OP.CURVE, dst, curve_handle, t, 0, width);
|
|
271
|
-
}
|
|
272
|
-
|
|
273
262
|
/**
|
|
274
263
|
* @returns {InstructionStream}
|
|
275
264
|
*/
|
|
@@ -156,8 +156,7 @@ export function vm_repack_instruction(words: ArrayLike<number>): number[];
|
|
|
156
156
|
* @property {number} slot source slot, `0..2`
|
|
157
157
|
* @property {number} kind a {@link VM_KIND}, never `NONE`
|
|
158
158
|
* @property {number} word the source word as encoded
|
|
159
|
-
* @property {number} lanes how many lanes the instruction reads of it: the operation's width
|
|
160
|
-
* for a slot the ISA marks scalar
|
|
159
|
+
* @property {number} lanes how many lanes the instruction reads of it: the operation's width
|
|
161
160
|
* @property {number} span register slots the operand reaches from its base, for a register; `0` for a
|
|
162
161
|
* literal
|
|
163
162
|
*/
|
|
@@ -165,9 +164,8 @@ export function vm_repack_instruction(words: ArrayLike<number>): number[];
|
|
|
165
164
|
* Visit every source operand of an instruction — every slot whose kind is not `NONE` — with how
|
|
166
165
|
* many lanes the opcode reads of it and how far into the file it reaches.
|
|
167
166
|
*
|
|
168
|
-
*
|
|
169
|
-
*
|
|
170
|
-
* reaches as far as its widest selector among the lanes read.
|
|
167
|
+
* A source is read as wide as the operation runs, and a register operand reaches as far as its
|
|
168
|
+
* widest selector among the lanes read.
|
|
171
169
|
*
|
|
172
170
|
* @param {ArrayLike<number>} words an instruction stream
|
|
173
171
|
* @param {number} base index of the instruction's first word
|
|
@@ -229,7 +227,7 @@ export function vm_register_kinds(op: number): number;
|
|
|
229
227
|
* A source word means what its kind says — see {@link VM_KIND}:
|
|
230
228
|
*
|
|
231
229
|
* - `NONE`: not an operand the VM resolves — an unused slot, or a raw field the opcode reads for
|
|
232
|
-
* itself: an attribute offset, a component count, a builtin id, a
|
|
230
|
+
* itself: an attribute offset, a component count, a builtin id, a pool index.
|
|
233
231
|
* - `REG`: a register operand. Bits 0..7 are the first slot, bits 8..15 a swizzle — see below.
|
|
234
232
|
* - `IMM`: the word IS the `f32` bit pattern of a literal, read in every lane. A scalar or a
|
|
235
233
|
* lane-uniform vector costs no register and no load; only a vector whose lanes differ still goes
|
|
@@ -278,7 +276,6 @@ export namespace VM_OPERAND {
|
|
|
278
276
|
let ATTR_OFFSET: string;
|
|
279
277
|
let COMP: string;
|
|
280
278
|
let BUILTIN: string;
|
|
281
|
-
let CURVE: string;
|
|
282
279
|
}
|
|
283
280
|
/**
|
|
284
281
|
* Builtin inputs the host shader assembles per-invocation and the VM reads via `LOAD_BUILTIN`.
|
|
@@ -306,58 +303,57 @@ export const VM_BUILTIN_COMPONENTS: {
|
|
|
306
303
|
};
|
|
307
304
|
/**
|
|
308
305
|
* Opcodes. Numbers are stable wire values — never renumber, only append. 19 was `SCALE` and 45 was
|
|
309
|
-
* `SWIZZLE`; both are spelled by an operand swizzle now
|
|
306
|
+
* `SWIZZLE`; both are spelled by an operand swizzle now. 61 was the animation-table sampler.
|
|
307
|
+
* These numbers stay unused.
|
|
310
308
|
*/
|
|
311
309
|
export type VM_OP = number;
|
|
312
310
|
export namespace VM_OP {
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
let CURVE_1: number;
|
|
360
|
-
export { CURVE_1 as CURVE };
|
|
311
|
+
let HALT: number;
|
|
312
|
+
let NOP: number;
|
|
313
|
+
let MOV: number;
|
|
314
|
+
let LOAD_CONST: number;
|
|
315
|
+
let LOAD_ATTR: number;
|
|
316
|
+
let STORE_ATTR: number;
|
|
317
|
+
let LOAD_BUILTIN: number;
|
|
318
|
+
let KILL: number;
|
|
319
|
+
let ADD: number;
|
|
320
|
+
let SUB: number;
|
|
321
|
+
let MUL: number;
|
|
322
|
+
let DIV: number;
|
|
323
|
+
let MAD: number;
|
|
324
|
+
let MIN: number;
|
|
325
|
+
let MAX: number;
|
|
326
|
+
let MIX: number;
|
|
327
|
+
let CLAMP: number;
|
|
328
|
+
let NEG: number;
|
|
329
|
+
let ABS: number;
|
|
330
|
+
let FLOOR: number;
|
|
331
|
+
let FRACT: number;
|
|
332
|
+
let SQRT: number;
|
|
333
|
+
let SIN: number;
|
|
334
|
+
let COS: number;
|
|
335
|
+
let EXP: number;
|
|
336
|
+
let LOG: number;
|
|
337
|
+
let POW: number;
|
|
338
|
+
let STEP: number;
|
|
339
|
+
let SMOOTHSTEP: number;
|
|
340
|
+
let RSQRT: number;
|
|
341
|
+
let TAN: number;
|
|
342
|
+
let ASIN: number;
|
|
343
|
+
let ACOS: number;
|
|
344
|
+
let ATAN2: number;
|
|
345
|
+
let DOT: number;
|
|
346
|
+
let CROSS: number;
|
|
347
|
+
let LENGTH: number;
|
|
348
|
+
let NORMALIZE: number;
|
|
349
|
+
let DISTANCE: number;
|
|
350
|
+
let CMP_LT: number;
|
|
351
|
+
let CMP_LE: number;
|
|
352
|
+
let CMP_GT: number;
|
|
353
|
+
let CMP_GE: number;
|
|
354
|
+
let CMP_EQ: number;
|
|
355
|
+
let SELECT: number;
|
|
356
|
+
let RANDOM: number;
|
|
361
357
|
}
|
|
362
358
|
/**
|
|
363
359
|
* How an opcode reads the instruction's width field — the lane count it operates on.
|
|
@@ -431,7 +427,7 @@ export const VM_OPERAND_SWIZZLE_SHIFT: number;
|
|
|
431
427
|
*
|
|
432
428
|
* Keyed by opcode number. Used by the assembler for validation/disassembly and by the parity
|
|
433
429
|
* meta-test to enforce that every opcode is handled by both executors.
|
|
434
|
-
* @type {Map<number, {name: string, dst: boolean, operands: [string, string, string], width: string, dest: string, default_width: number, min_width: number
|
|
430
|
+
* @type {Map<number, {name: string, dst: boolean, operands: [string, string, string], width: string, dest: string, default_width: number, min_width: number}>}
|
|
435
431
|
*/
|
|
436
432
|
export const VM_ISA: Map<number, {
|
|
437
433
|
name: string;
|
|
@@ -441,7 +437,6 @@ export const VM_ISA: Map<number, {
|
|
|
441
437
|
dest: string;
|
|
442
438
|
default_width: number;
|
|
443
439
|
min_width: number;
|
|
444
|
-
scalar_operands: number[];
|
|
445
440
|
}>;
|
|
446
441
|
export type ParticleVMOperand = {
|
|
447
442
|
/**
|
|
@@ -457,8 +452,7 @@ export type ParticleVMOperand = {
|
|
|
457
452
|
*/
|
|
458
453
|
word: number;
|
|
459
454
|
/**
|
|
460
|
-
* how many lanes the instruction reads of it: the operation's width
|
|
461
|
-
* for a slot the ISA marks scalar
|
|
455
|
+
* how many lanes the instruction reads of it: the operation's width
|
|
462
456
|
*/
|
|
463
457
|
lanes: number;
|
|
464
458
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParticleVMISA.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/isa/ParticleVMISA.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ParticleVMISA.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/isa/ParticleVMISA.js"],"names":[],"mappings":"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"}
|