@woosh/meep-engine 3.60.5 → 3.60.6

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.
Files changed (55) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/package.json +1 -1
  3. package/src/shade/renderer/Renderer.d.ts +11 -0
  4. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  5. package/src/shade/renderer/Renderer.js +43 -1
  6. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts +26 -43
  7. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
  8. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +109 -117
  9. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts +20 -2
  10. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts.map +1 -1
  11. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.js +66 -2
  12. package/src/shade/renderer/geometry/virtual/proxy/vgeo_proxy_triangle_limit.d.ts +19 -0
  13. package/src/shade/renderer/geometry/virtual/proxy/vgeo_proxy_triangle_limit.d.ts.map +1 -0
  14. package/src/shade/renderer/geometry/virtual/proxy/vgeo_proxy_triangle_limit.js +25 -0
  15. package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.d.ts +15 -0
  16. package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.d.ts.map +1 -1
  17. package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.js +38 -0
  18. package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.d.ts +28 -59
  19. package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.d.ts.map +1 -1
  20. package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.js +84 -789
  21. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts +2 -1
  22. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts.map +1 -1
  23. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.js +2 -1
  24. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_instance.d.ts +2 -2
  25. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_instance.js +2 -2
  26. package/src/shade/renderer/material/GPUMaterialManager.d.ts +4 -1
  27. package/src/shade/renderer/material/GPUMaterialManager.d.ts.map +1 -1
  28. package/src/shade/renderer/material/GPUMaterialManager.js +5 -8
  29. package/src/shade/renderer/postprocess/gtao/GTAO.d.ts +7 -3
  30. package/src/shade/renderer/postprocess/gtao/GTAO.d.ts.map +1 -1
  31. package/src/shade/renderer/postprocess/gtao/GTAO.js +26 -13
  32. package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.d.ts +14 -0
  33. package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.d.ts.map +1 -1
  34. package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.js +196 -68
  35. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.d.ts.map +1 -1
  36. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js +42 -28
  37. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.d.ts.map +1 -1
  38. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.js +429 -414
  39. package/src/shade/renderer/postprocess/gtao/shader_gtao_spatial_denoise.d.ts +16 -0
  40. package/src/shade/renderer/postprocess/gtao/shader_gtao_spatial_denoise.d.ts.map +1 -0
  41. package/src/shade/renderer/postprocess/gtao/shader_gtao_spatial_denoise.js +156 -0
  42. package/src/shade/renderer/scene/GPUSceneContext.d.ts +2 -2
  43. package/src/shade/renderer/scene/GPUSceneContext.js +5 -5
  44. package/src/shade/renderer/geometry/virtual/sdf/VGEO_SDF.d.ts +0 -47
  45. package/src/shade/renderer/geometry/virtual/sdf/VGEO_SDF.d.ts.map +0 -1
  46. package/src/shade/renderer/geometry/virtual/sdf/VGEO_SDF.js +0 -80
  47. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_collect.d.ts +0 -16
  48. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_collect.d.ts.map +0 -1
  49. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_collect.js +0 -67
  50. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_decode.d.ts +0 -17
  51. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_decode.d.ts.map +0 -1
  52. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_decode.js +0 -145
  53. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_traverse.d.ts +0 -12
  54. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_traverse.d.ts.map +0 -1
  55. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_traverse.js +0 -105
@@ -1,105 +0,0 @@
1
- import { WebGPUExtensionType } from "../../../../descriptor/WebGPUExtensionType.js";
2
- import { COLLECTION_U32_STRUCT_READ } from "../../../gpu_primitive/COLLECTION_U32_STRUCT_READ.js";
3
- import { COLLECTION_U32_STRUCT_WRITE } from "../../../gpu_primitive/COLLECTION_U32_STRUCT_WRITE.js";
4
- import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
5
- import { ComputeShader } from "../../../shader/ComputeShader.js";
6
- import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
7
- import { atomic_u32, u32 } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
8
- import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
9
- import { chunk_vgeo_cut_access } from "../runtime/cut/chunk_vgeo_cut_access.js";
10
- import { chunk_vgeo_cut_descent } from "../runtime/cut/chunk_vgeo_cut_descent.js";
11
- import { VGEO_CUT_PARAMS_STRUCT } from "../runtime/cut/VGEO_CUT_PARAMS_STRUCT.js";
12
- import { VGEO_CUT_STAT } from "../runtime/layout/VGEO_CUT_STAT.js";
13
- import { VGEO_INSTANCE_OFFSET } from "../runtime/layout/VGEO_INSTANCE_OFFSET.js";
14
- import { VGEO_PAGE_ROW_OFFSET } from "../runtime/layout/VGEO_PAGE_ROW_OFFSET.js";
15
- import { VGEO_SDF_CLUSTER_WORDS, VGEO_SDF_COUNTER, VGEO_SDF_COUNTER_WORDS, VGEO_SDF_SETTINGS } from "./VGEO_SDF.js";
16
-
17
- const resources = new ShaderResourceSetDescriptor();
18
-
19
- resources.setImmediate("settings", VGEO_SDF_SETTINGS);
20
-
21
- resources.createGroup()
22
- .addUniform("params", VGEO_CUT_PARAMS_STRUCT)
23
- .addStorageBuffer("vg_lookup", WebGPUArray.from(u32), false)
24
- .addStorageBuffer("vg_arena", WebGPUArray.from(u32), false)
25
- ;
26
-
27
- resources.createGroup()
28
- .addStorageBuffer("instances", WebGPUArray.from(u32), false)
29
- .addStorageBuffer("queue_in", COLLECTION_U32_STRUCT_READ, false)
30
- .addStorageBuffer("queue_out", COLLECTION_U32_STRUCT_WRITE, true)
31
- ;
32
-
33
- resources.createGroup()
34
- .addStorageBuffer("claim", WebGPUArray.from(atomic_u32), true)
35
- .addStorageBuffer("feedback", WebGPUArray.from(atomic_u32), true)
36
- .addStorageBuffer("vg_want_stamps", WebGPUArray.from(atomic_u32), true)
37
- // a job's counters, `VGEO_SDF_COUNTER_WORDS` each
38
- .addStorageBuffer("vgeo_sdf_counters", WebGPUArray.from(atomic_u32), true)
39
- // the cut's clusters, a job and a meshlet row each; the count runs past what the list holds
40
- .addStorageBuffer("vgeo_sdf_clusters", COLLECTION_U32_STRUCT_WRITE, true)
41
- ;
42
-
43
- const body = CodeChunk.from(
44
- //language=WGSL
45
- `
46
- /** A geometry is cut whole: nothing is outside. */
47
- fn vg_cut_sphere_outside(instance_base: u32, sphere: vec4<f32>) -> bool {
48
- return false;
49
- }
50
-
51
- fn vg_cut_box_outside(instance_base: u32, lower: vec3<f32>, upper: vec3<f32>) -> bool {
52
- return false;
53
- }
54
-
55
- /**
56
- * A cluster in the cut, a stand-in's too, onto the list as its job and its meshlet row. A stand-in, for a page not
57
- * resident or a group not selectable, is counted against its job, whose cut is then not the one it asked for; past
58
- * the list a cluster is dropped and counted, and its job's cut is incomplete too.
59
- */
60
- fn vg_cut_take(instance_base: u32, page_row: u32, verdict: VGVerdict) {
61
- let job = instances[instance_base + ${VGEO_INSTANCE_OFFSET.MESH_INDEX}u];
62
- let counters = job * ${VGEO_SDF_COUNTER_WORDS}u;
63
-
64
- atomicAdd(&vgeo_sdf_counters[counters + ${VGEO_SDF_COUNTER.TAKEN}u], 1u);
65
-
66
- if (verdict.kind != VG_VERDICT_TAKE) {
67
- atomicAdd(&vgeo_sdf_counters[counters + ${VGEO_SDF_COUNTER.STAND_INS}u], 1u);
68
- }
69
-
70
- let slot = atomicAdd(&vgeo_sdf_clusters.count, 1u);
71
-
72
- if (slot >= settings.cluster_capacity) {
73
- atomicAdd(&vgeo_sdf_counters[counters + ${VGEO_SDF_COUNTER.DROPPED}u], 1u);
74
- vg_stat(${VGEO_CUT_STAT.MESHLETS_DROPPED}u, 1u);
75
- return;
76
- }
77
-
78
- let entry = ${VGEO_SDF_CLUSTER_WORDS}u * slot;
79
-
80
- vgeo_sdf_clusters.elements[entry] = job;
81
- vgeo_sdf_clusters.elements[entry + 1u] = vg_page_field(page_row, ${VGEO_PAGE_ROW_OFFSET.MESHLET_BASE}u) + verdict.cluster;
82
-
83
- vg_stat(${VGEO_CUT_STAT.DRAWN}u, 1u);
84
- }
85
- `, [
86
- chunk_vgeo_cut_descent,
87
- chunk_vgeo_cut_access,
88
- ]);
89
-
90
- body.addExtension(WebGPUExtensionType.Subgroups);
91
-
92
- /**
93
- * The extraction's cut (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §7.8, as S8 built it): the camera cut's descent
94
- * (`chunk_vgeo_cut_descent`) over the jobs' records, each geometry whole, at the error its record's projection constant
95
- * sets against a τ of 1. Every cluster in the cut, a stand-in too, goes onto the cluster list under its job; a clamp
96
- * wants its page through the extraction's own feedback slot, as the camera's do, so a job cut again each frame keeps
97
- * its pages wanted until they arrive.
98
- *
99
- * @type {ComputeShader}
100
- */
101
- export const shader_vgeo_sdf_traverse = ComputeShader.from({
102
- label: "VGeo SDF Cut",
103
- resources,
104
- body,
105
- });