@woosh/meep-engine 3.37.0 → 3.38.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/package.json +1 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +2 -0
- package/src/engine/ecs/transform/TRANSFORM64_EVENT_PLACED.d.ts +11 -0
- package/src/engine/ecs/transform/TRANSFORM64_EVENT_PLACED.d.ts.map +1 -0
- package/src/engine/ecs/transform/TRANSFORM64_EVENT_PLACED.js +10 -0
- package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.d.ts.map +1 -1
- package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.js +16 -0
- package/src/engine/graphics/ecs/water/Water.d.ts +30 -0
- package/src/engine/graphics/ecs/water/Water.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/Water.js +125 -104
- package/src/engine/graphics/ecs/water/WaterSerializationAdapter.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/WaterSerializationAdapter.js +13 -1
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_1_2.d.ts +6 -0
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_1_2.d.ts.map +1 -0
- package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_1_2.js +18 -0
- package/src/engine/graphics3/WaterSystem.d.ts +22 -6
- package/src/engine/graphics3/WaterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/WaterSystem.js +314 -293
- package/src/engine/physics/cloth/collider/ClothColliderIndex.d.ts +13 -14
- package/src/engine/physics/cloth/collider/ClothColliderIndex.d.ts.map +1 -1
- package/src/engine/physics/cloth/collider/ClothColliderIndex.js +137 -36
- package/src/engine/physics/cloth/collider/cloth_collider_bounds.d.ts +30 -0
- package/src/engine/physics/cloth/collider/cloth_collider_bounds.d.ts.map +1 -1
- package/src/engine/physics/cloth/collider/cloth_collider_bounds.js +33 -0
- package/src/engine/physics/cloth/ecs/ClothColliderFlags.js +2 -1
- package/src/engine/physics/cloth/ecs/ClothColliderSystem.d.ts +10 -1
- package/src/engine/physics/cloth/ecs/ClothColliderSystem.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothColliderSystem.js +36 -14
- package/src/engine/physics/cloth/ecs/ClothInstance.d.ts +15 -2
- package/src/engine/physics/cloth/ecs/ClothInstance.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothInstance.js +17 -2
- package/src/engine/physics/cloth/ecs/ClothWorld.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothWorld.js +19 -6
- package/src/engine/physics/cloth/ecs/cloth_gather_colliders.d.ts +18 -20
- package/src/engine/physics/cloth/ecs/cloth_gather_colliders.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_gather_colliders.js +139 -89
- package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
- package/src/engine/physics/ecs/PhysicsSystem.js +32 -16
- package/src/shade/playground/water_refraction/README.md +149 -0
- package/src/shade/playground/water_refraction/index.html +42 -0
- package/src/shade/playground/water_refraction/main.d.ts +2 -0
- package/src/shade/playground/water_refraction/main.d.ts.map +1 -0
- package/src/shade/playground/water_refraction/main.js +201 -0
- package/src/shade/playground/water_refraction/world.d.ts +37 -0
- package/src/shade/playground/water_refraction/world.d.ts.map +1 -0
- package/src/shade/playground/water_refraction/world.js +137 -0
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +4 -0
- package/src/shade/renderer/animation/chunk_pose_accumulator.d.ts +2 -3
- package/src/shade/renderer/animation/chunk_pose_accumulator.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/chunk_roughness_to_mip_ratio.d.ts +8 -0
- package/src/shade/renderer/light/environment/chunk_roughness_to_mip_ratio.d.ts.map +1 -0
- package/src/shade/renderer/light/environment/chunk_sphere_probe_roughness_to_lod.d.ts +0 -6
- package/src/shade/renderer/light/environment/chunk_sphere_probe_roughness_to_lod.d.ts.map +1 -1
- package/src/shade/renderer/particles/bounds/chunk_particle_bounds.d.ts +1 -1
- package/src/shade/renderer/particles/bounds/chunk_particle_bounds.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +17 -0
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +7 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_renormalization.d.ts +4 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_renormalization.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_renormalization.js +11 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_rgb_contribution.d.ts +4 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_rgb_contribution.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_rgb_contribution.js +19 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_splat_slice.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_splat_slice.js +5 -3
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_split_counts.d.ts +4 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_split_counts.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_split_counts.js +8 -0
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts +1 -1
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +21 -2
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_resolve.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_resolve.js +4 -8
- package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atomic/chunk_atomic_add_f32_storage.d.ts +12 -0
- package/src/shade/renderer/shader/chunk/atomic/chunk_atomic_add_f32_storage.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/atomic/chunk_atomic_max_f32_storage.d.ts +12 -0
- package/src/shade/renderer/shader/chunk/atomic/chunk_atomic_max_f32_storage.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/atomic/chunk_atomic_min_f32_storage.d.ts +12 -0
- package/src/shade/renderer/shader/chunk/atomic/chunk_atomic_min_f32_storage.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/plane/{plane_ray_raycast.d.ts → chunk_plane_ray_raycast.d.ts} +2 -2
- package/src/shade/renderer/shader/chunk/geometry/plane/chunk_plane_ray_raycast.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_newton_ray.d.ts +4 -0
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_newton_ray.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_newton_ray.js +101 -0
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts +62 -29
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
- package/src/shade/renderer/water/GPUWaterRenderer.js +235 -147
- package/src/shade/renderer/water/chunk_water_transport.d.ts +5 -0
- package/src/shade/renderer/water/chunk_water_transport.d.ts.map +1 -0
- package/src/shade/renderer/water/chunk_water_transport.js +94 -0
- package/src/shade/renderer/water/shader_water.d.ts +9 -26
- package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water.js +384 -246
- package/src/shade/renderer/water/shader_water_avboit.d.ts +12 -0
- package/src/shade/renderer/water/shader_water_avboit.d.ts.map +1 -0
- package/src/shade/renderer/water/shader_water_avboit.js +258 -0
- package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.js +13 -0
- package/src/shade/renderer/animation/skinning/bounds_refresh/chunk_aabb_atomic_f32.d.ts +0 -29
- package/src/shade/renderer/animation/skinning/bounds_refresh/chunk_aabb_atomic_f32.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/geometry/plane/plane_ray_raycast.d.ts.map +0 -1
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { Color } from "../../../core/color/Color.js";
|
|
2
|
+
import Quaternion from "../../../core/geom/Quaternion.js";
|
|
3
|
+
import Vector3 from "../../../core/geom/Vector3.js";
|
|
4
|
+
import { Entity } from "../../../engine/ecs/Entity.js";
|
|
5
|
+
import Terrain from "../../../engine/ecs/terrain/ecs/Terrain.js";
|
|
6
|
+
import { Transform64 } from "../../../engine/ecs/transform/Transform64.js";
|
|
7
|
+
import { t64_announce_change } from "../../../engine/ecs/transform/t64_announce_change.js";
|
|
8
|
+
import { ShadedGeometry } from "../../../engine/graphics/ecs/mesh-v2/ShadedGeometry.js";
|
|
9
|
+
import Water from "../../../engine/graphics/ecs/water/Water.js";
|
|
10
|
+
import { ParticleEffect } from "../../../engine/graphics/ecs/particles/ParticleEffect.js";
|
|
11
|
+
import { Sampler2D } from "../../../engine/graphics/texture/sampler/Sampler2D.js";
|
|
12
|
+
import { MeshoptClusterizer } from "../../renderer/geometry/meshlet/build/meshoptimizer/meshopt_clusterizer.js";
|
|
13
|
+
import { meshlet_geometry_build_from_geometry } from "../../renderer/geometry/meshlet_geometry_build_from_geometry.js";
|
|
14
|
+
import { MeshletGeometry } from "../../renderer/geometry/MeshletGeometry.js";
|
|
15
|
+
import { make_box_geometry } from "../../renderer/geometry/primitives/make_box_geometry.js";
|
|
16
|
+
import { make_plane_geometry } from "../../renderer/geometry/primitives/make_plane_geometry.js";
|
|
17
|
+
import { StandardAttributes } from "../../renderer/geometry/StandardAttributes.js";
|
|
18
|
+
import { ShadeDrawSide } from "../../renderer/material/ShadeDrawSide.js";
|
|
19
|
+
import { StandardShadeMaterial } from "../../renderer/material/StandardShadeMaterial.js";
|
|
20
|
+
import { TransparencyMode } from "../../renderer/material/TransparencyMode.js";
|
|
21
|
+
import { DynamicMesh } from "../../renderer/scene/DynamicMesh.js";
|
|
22
|
+
import { DynamicMeshBatch } from "../../renderer/scene/DynamicMeshBatch.js";
|
|
23
|
+
import { ColorSpace } from "../../renderer/texture/ColorSpace.js";
|
|
24
|
+
import { ShadeTexture } from "../../renderer/texture/ShadeTexture.js";
|
|
25
|
+
import { ShadeImage } from "../../renderer/texture/source/ShadeImage.js";
|
|
26
|
+
import { bonfire_effects } from "../particle_ecs/bonfire_effects.js";
|
|
27
|
+
import { bonfire_sprites } from "../particle_ecs/bonfire_sprites.js";
|
|
28
|
+
|
|
29
|
+
export const height_at = (x,z,offset=0) => -2 + Math.max(0,z-18)*0.5 + offset;
|
|
30
|
+
|
|
31
|
+
function pose(x,y,z,rotation=Quaternion.identity) {
|
|
32
|
+
const transform = new Transform64();
|
|
33
|
+
transform.setTranslation(x,y,z);
|
|
34
|
+
if (rotation !== undefined) { transform.setRotation(rotation.x,rotation.y,rotation.z,rotation.w); }
|
|
35
|
+
transform.updateMatrix(); return transform;
|
|
36
|
+
}
|
|
37
|
+
function material(rgb,alpha=1) {
|
|
38
|
+
const m=new StandardShadeMaterial(); m.diffuse_color.copy(new Color(...rgb,alpha));
|
|
39
|
+
m.metallic_factor=0; m.roughness_factor=0.55; m.draw_side=ShadeDrawSide.Double;
|
|
40
|
+
m.transparency_mode=alpha<1?TransparencyMode.Transparent:TransparencyMode.Opaque;
|
|
41
|
+
return m;
|
|
42
|
+
}
|
|
43
|
+
function meshlets(geometry) {
|
|
44
|
+
const result=new MeshletGeometry(); meshlet_geometry_build_from_geometry(geometry,result); return result;
|
|
45
|
+
}
|
|
46
|
+
function shaded(geometry,material) { const s=new ShadedGeometry(); s.geometry=geometry; s.material=material; return s; }
|
|
47
|
+
function checker() {
|
|
48
|
+
// A four-texel-wide square blurred under ordinary bilinear filtering even with
|
|
49
|
+
// water disabled. Keep the same world-space pattern with a sharp source image.
|
|
50
|
+
const size=1024, data=Sampler2D.uint8(4,size,size);
|
|
51
|
+
for(let y=0;y<size;y++) for(let x=0;x<size;x++) {
|
|
52
|
+
const bright=((x>>6)+(y>>6))%2===0;
|
|
53
|
+
const n=bright?215:42; data.data.set([n,bright?220:66,bright?200:84,255],(y*size+x)*4);
|
|
54
|
+
}
|
|
55
|
+
const image=ShadeImage.fromSampler2D(data); image.color_space=ColorSpace.SRGB;
|
|
56
|
+
return ShadeTexture.from(image);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/** All visible static content uses ordinary ECS meshlets; water owns no demo-specific pass. */
|
|
60
|
+
export async function build_world(dataset) {
|
|
61
|
+
await MeshoptClusterizer.ready;
|
|
62
|
+
const entities=[];
|
|
63
|
+
const build=builder=>{builder.build(dataset);entities.push(builder.id);return builder.id;};
|
|
64
|
+
const terrain=new Terrain(); terrain.size.set(32,32); terrain.gridScale=1;
|
|
65
|
+
function sampler(offset=0) {
|
|
66
|
+
const s=Sampler2D.float32(1,65,65);
|
|
67
|
+
for(let y=0;y<65;y++) for(let x=0;x<65;x++) s.data[y*65+x]=height_at(x/64*32,y/64*32,offset);
|
|
68
|
+
return s;
|
|
69
|
+
}
|
|
70
|
+
terrain.samplerHeight=sampler(); build(new Entity().add(terrain).add(pose(0,0,0)));
|
|
71
|
+
const floor_geo=make_plane_geometry(32,32,32,32);
|
|
72
|
+
const positions=floor_geo.getAttribute(StandardAttributes.Position).data;
|
|
73
|
+
const normals=floor_geo.getAttribute(StandardAttributes.Normal).data;
|
|
74
|
+
for(let i=0;i<positions.length;i+=3) {
|
|
75
|
+
const x=positions[i]+16,z=16-positions[i+1];
|
|
76
|
+
positions[i]=x; positions[i+1]=height_at(x,z); positions[i+2]=z;
|
|
77
|
+
const slope=z>18?0.5:0,n=Math.hypot(1,slope);
|
|
78
|
+
normals[i]=0; normals[i+1]=1/n; normals[i+2]=-slope/n;
|
|
79
|
+
}
|
|
80
|
+
const floor_material=material([1,1,1]); floor_material.texture_albedo=checker();
|
|
81
|
+
const floor_transform=pose(0,0,0);
|
|
82
|
+
const floor_entity=build(new Entity().add(floor_transform).add(shaded(meshlets(floor_geo),floor_material)));
|
|
83
|
+
const water=new Water(); water.level.set(0); water.scattering.set(0.6);
|
|
84
|
+
const water_entity=build(new Entity().add(water));
|
|
85
|
+
const add_mesh=(geo,m,x,y,z,rotation)=>{
|
|
86
|
+
const t=pose(x,y,z,rotation);const component=shaded(meshlets(geo),m);
|
|
87
|
+
const entity=build(new Entity().add(t).add(component)); return {transform:t,component,entity};
|
|
88
|
+
};
|
|
89
|
+
add_mesh(make_box_geometry(4,1.5,2),material([0.48,0.23,0.08]),16,0.15,14);
|
|
90
|
+
for(let i=0;i<5;i++) add_mesh(make_box_geometry(0.12,3.5,0.12),material([0.9,0.5,0.13]),9+i*0.45,-0.25,14);
|
|
91
|
+
const card=add_mesh(make_plane_geometry(2,2),material([0.2,0.65,0.9],0.5),12,0,12);
|
|
92
|
+
const submerged=add_mesh(make_box_geometry(1.2,0.8,1.2),material([0.8,0.14,0.1]),15,-1.4,11);
|
|
93
|
+
const effects=bonfire_effects(bonfire_sprites());
|
|
94
|
+
const live_effects=[effects.smoke,effects.embers];
|
|
95
|
+
const particle_transforms=[];
|
|
96
|
+
for(const [i,effect] of [effects.smoke,effects.embers].entries()) {
|
|
97
|
+
effect.spawn_rate=80; const t=pose(11+i*2,-0.5,10);
|
|
98
|
+
const entity=build(new Entity().add(t).add(effect)); particle_transforms.push({transform:t,entity});
|
|
99
|
+
}
|
|
100
|
+
const ribbon=DynamicMesh.from(make_plane_geometry(6,0.14,16,1),[0.75,0.12,0.9,0.55]);
|
|
101
|
+
const ribbon_base=ribbon.geometry.getAttribute(StandardAttributes.Position).data.slice();
|
|
102
|
+
const batch=new DynamicMeshBatch(); batch.add(ribbon);
|
|
103
|
+
let secondary=null;
|
|
104
|
+
let last_update=null;
|
|
105
|
+
return {terrain,water,water_entity,card,submerged,batch,ribbon,effects:live_effects,entities,
|
|
106
|
+
reset_particles() {
|
|
107
|
+
particle_transforms.forEach(({entity},i)=>{
|
|
108
|
+
const replacement=live_effects[i].clone();
|
|
109
|
+
dataset.removeComponentFromEntity(entity,ParticleEffect);
|
|
110
|
+
dataset.addComponentToEntity(entity,replacement);live_effects[i]=replacement;
|
|
111
|
+
});
|
|
112
|
+
},
|
|
113
|
+
update(time,{layer_height=0,animate=false}={}) {
|
|
114
|
+
if(last_update!==null&&last_update[0]===time&&last_update[1]===layer_height&&last_update[2]===animate)return;
|
|
115
|
+
last_update=[time,layer_height,animate];
|
|
116
|
+
card.transform.setTranslation(12,layer_height,12); t64_announce_change(dataset,card.entity);
|
|
117
|
+
particle_transforms.forEach(({transform:t,entity},i)=>{t.setTranslation(11+i*2,layer_height-0.7,10);t64_announce_change(dataset,entity);});
|
|
118
|
+
submerged.transform.setTranslation(15+(animate?Math.sin(time)*2:0),-1.4,11);
|
|
119
|
+
t64_announce_change(dataset,submerged.entity);
|
|
120
|
+
const p=ribbon.geometry.getAttribute(StandardAttributes.Position).data;
|
|
121
|
+
for(let i=0;i<p.length;i+=3) {
|
|
122
|
+
p[i]=13+ribbon_base[i]; p[i+1]=layer_height+ribbon_base[i+1]+Math.sin(ribbon_base[i]+time)*0.6;
|
|
123
|
+
p[i+2]=9+Math.cos(ribbon_base[i]*0.5)*0.7;
|
|
124
|
+
}
|
|
125
|
+
ribbon.geometry.needsUpdate=true;
|
|
126
|
+
},
|
|
127
|
+
replace_terrain(offset=-0.25) {
|
|
128
|
+
terrain.samplerHeight=sampler(offset); floor_transform.setTranslation(0,offset,0);t64_announce_change(dataset,floor_entity);
|
|
129
|
+
},
|
|
130
|
+
overlap(enabled) {
|
|
131
|
+
if(enabled&&secondary===null) {const other=new Water();other.level.set(water.level.getValue()-0.4);
|
|
132
|
+
other.color.setRGB(0.65,0.1,0.25);secondary=build(new Entity().add(other));}
|
|
133
|
+
if(!enabled&&secondary!==null) {dataset.removeEntity(secondary);secondary=null;}
|
|
134
|
+
},
|
|
135
|
+
dispose() {entities.forEach(id=>{if(dataset.entityExists(id)) dataset.removeEntity(id);});batch.clear();},
|
|
136
|
+
};
|
|
137
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/Renderer.js"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/Renderer.js"],"names":[],"mappings":"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"}
|
|
@@ -2678,6 +2678,10 @@ export class Renderer {
|
|
|
2678
2678
|
color_texture: current_color_out,
|
|
2679
2679
|
depth_texture: gr_texture_depth_current,
|
|
2680
2680
|
|
|
2681
|
+
normal_texture: gr_texture_normal,
|
|
2682
|
+
hzb_texture: gr_texture_hzb,
|
|
2683
|
+
environment_texture: gr_texture_environment,
|
|
2684
|
+
|
|
2681
2685
|
limits: this.graphics.collection_limits,
|
|
2682
2686
|
|
|
2683
2687
|
light_cluster_data: light_clusters.data,
|
|
@@ -4,9 +4,8 @@
|
|
|
4
4
|
* The importing shader binds:
|
|
5
5
|
* `var<storage, read_write> pose_accumulator: array<atomic<u32>>;`
|
|
6
6
|
*
|
|
7
|
-
* f32 atomic-add isn't native to WGSL.
|
|
8
|
-
*
|
|
9
|
-
* f32, add the contribution, reinterpret back, CAS. Contention is
|
|
7
|
+
* f32 atomic-add isn't native to WGSL. The shared `atomic_add_f32_storage`
|
|
8
|
+
* helper uses a compare-exchange retry loop over plain f32 bits. Contention is
|
|
10
9
|
* typically low (each `(row, channel)` has 1–2 contributors in a
|
|
11
10
|
* normalised blend), so the spin rarely loops more than once.
|
|
12
11
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_pose_accumulator.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/animation/chunk_pose_accumulator.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chunk_pose_accumulator.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/animation/chunk_pose_accumulator.js"],"names":[],"mappings":"AAiBA;;;;;;;;;;;;;;;;GAgBG;AACH,qCAFU,SAAS,CA4FgB;0BA5HT,iCAAiC"}
|
package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_meshlet_bounds_reduce.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_meshlet_bounds_reduce.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.js"],"names":[],"mappings":"AAWA;;;;;;;GAOG;AACH,gCAAiC;AAsKjC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,yDAIG;8BAlN2B,kCAAkC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input roughness is linear (blender calls it "UI roughness")
|
|
3
|
+
* @see https://projects.blender.org/blender/blender/src/commit/866ef5b468589587395b1ee7480ea75b4c0fbc26/source/blender/draw/engines/eevee_next/shaders/eevee_lightprobe_sphere_mapping_lib.glsl#L102
|
|
4
|
+
* @type {CodeChunk}
|
|
5
|
+
*/
|
|
6
|
+
export const chunk_roughness_to_mip_ratio: CodeChunk;
|
|
7
|
+
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
8
|
+
//# sourceMappingURL=chunk_roughness_to_mip_ratio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_roughness_to_mip_ratio.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/light/environment/chunk_roughness_to_mip_ratio.js"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,2CAFU,SAAS,CAiBjB;0BAvBwB,oCAAoC"}
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Input roughness is linear (blender calls it "UI roughness")
|
|
3
|
-
* @see https://projects.blender.org/blender/blender/src/commit/866ef5b468589587395b1ee7480ea75b4c0fbc26/source/blender/draw/engines/eevee_next/shaders/eevee_lightprobe_sphere_mapping_lib.glsl#L102
|
|
4
|
-
* @type {CodeChunk}
|
|
5
|
-
*/
|
|
6
|
-
export const chunk_roughness_to_mip_ratio: CodeChunk;
|
|
7
1
|
/**
|
|
8
2
|
* Input roughness is linear (blender calls it "UI roughness")
|
|
9
3
|
* @see https://projects.blender.org/blender/blender/src/commit/866ef5b468589587395b1ee7480ea75b4c0fbc26/source/blender/draw/engines/eevee_next/shaders/eevee_lightprobe_sphere_mapping_lib.glsl#L102
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_sphere_probe_roughness_to_lod.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/light/environment/chunk_sphere_probe_roughness_to_lod.js"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,
|
|
1
|
+
{"version":3,"file":"chunk_sphere_probe_roughness_to_lod.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/light/environment/chunk_sphere_probe_roughness_to_lod.js"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,kDAFU,SAAS,CAajB;0BApBwB,oCAAoC"}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
*
|
|
14
14
|
* ## Why f32 in the buffer, and not an order-preserving encoding
|
|
15
15
|
*
|
|
16
|
-
* `
|
|
16
|
+
* `atomic_min_f32_storage` / `atomic_max_f32_storage` are the engine's, shared with the skinned-mesh
|
|
17
17
|
* bounds refresh, and they CAS-spin over the plain float so the words are readable as floats at
|
|
18
18
|
* every moment of the frame. The sign-flip encoding that would let `atomicMin` do it in one
|
|
19
19
|
* instruction leaves the buffer in a form only a decoder understands, and the publish pass reads
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_particle_bounds.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/bounds/chunk_particle_bounds.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chunk_particle_bounds.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/bounds/chunk_particle_bounds.js"],"names":[],"mappings":"AAcA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,0CAFU,SAAS,CAwE8E;AAEjG;;;;;;;;;;;;;;;;GAgBG;AACH,8CAFU,SAAS,CA4CsC;0BArL/B,oCAAoC"}
|
|
@@ -34,6 +34,23 @@
|
|
|
34
34
|
* channel without the method is always asked.
|
|
35
35
|
*/
|
|
36
36
|
export type AVBOITSideChannel = {
|
|
37
|
+
/**
|
|
38
|
+
* Optional optics preparation before occupancy; at most one producer per view. Inputs are
|
|
39
|
+
* immutable opaque resources. The returned background is read by the one shared resolve.
|
|
40
|
+
* Keep prepared state per graph/camera, not on an entity or in a global current-view slot.
|
|
41
|
+
*/
|
|
42
|
+
avboit_prepare?: (args: {
|
|
43
|
+
graph: import("../../../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph;
|
|
44
|
+
view_ctx: import("../../../view/GPUViewContext.js").GPUViewContext;
|
|
45
|
+
camera: number;
|
|
46
|
+
color_texture: number;
|
|
47
|
+
depth_texture: number;
|
|
48
|
+
normal_texture: number;
|
|
49
|
+
hzb_texture: number;
|
|
50
|
+
environment_texture: number;
|
|
51
|
+
}) => {
|
|
52
|
+
background_color?: number;
|
|
53
|
+
};
|
|
37
54
|
/**
|
|
38
55
|
* add the channel's slices to the occupancy bits; returns the bits'
|
|
39
56
|
* handle after the write. `cluster_parameters` is the frame's depth curve (`avboit_build_depth_curve`).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AVBOITSideChannel.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AVBOITSideChannel.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAoCc,CAAC,IAAI,EAAE;QAAC,KAAK,EAAE,OAAO,iEAAiE,EAAE,UAAU,CAAC;QACjH,QAAc,EAAE,OAAO,iCAAiC,EAAE,cAAc,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QACzF,aAAmB,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAC3E,WAAiB,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAA;KAAC,KAAK;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAC;;;;;sBAI1E,CAAC,IAAI,EAAE;QACpB,KAAW,EAAE,OAAO,iEAAiE,EAAE,UAAU,CAAC;QAClG,MAAY,EAAE,MAAM,CAAC;QACrB,kBAAwB,EAAE,UAAU,MAAM,CAAC,CAAC;QAC5C,SAAe,EAAE,MAAM,CAAC;KACrB,KAAK,MAAM;;;;;;;;kBAED,CAAC,IAAI,EAAE;QACpB,KAAW,EAAE,OAAO,iEAAiE,EAAE,UAAU,CAAC;QAClG,MAAY,EAAE,MAAM,CAAC;QACrB,IAAU,EAAE,MAAM,CAAC;QACnB,aAAmB,EAAE,MAAM,CAAC;QAC5B,gBAAsB,EAAE,MAAM,EAAE,CAAC;QACjC,MAAY,EAAE;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAC,CAAC;KACjE,KAAK;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC;;;;;;;;;iBAKhD,CAAC,IAAI,EAAE;QACpB,KAAW,EAAE,OAAO,iEAAiE,EAAE,UAAU,CAAC;QAClG,QAAc,EAAE,OAAO,iCAAiC,EAAE,cAAc,CAAC;QACzE,MAAY,EAAE,MAAM,CAAC;QACrB,aAAmB,EAAE,MAAM,CAAC;QAC5B,IAAU,EAAE,MAAM,CAAC;QACnB,QAAc,EAAE,MAAM,CAAC;QACvB,eAAqB,EAAE,MAAM,CAAC;QAC9B,oBAA0B,EAAE,MAAM,CAAC;QACnC,sBAA4B,EAAE;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAC,CAAC;QACxD,YAAkB,EAAE;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAC,CAAC;KACrF,KAAK;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC;;;;;;sBAM9D,MAAM,OAAO"}
|
|
@@ -34,6 +34,13 @@
|
|
|
34
34
|
* channel without the method is always asked.
|
|
35
35
|
*
|
|
36
36
|
* @typedef {object} AVBOITSideChannel
|
|
37
|
+
* @property {(args: {graph: import("../../../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph,
|
|
38
|
+
* view_ctx: import("../../../view/GPUViewContext.js").GPUViewContext, camera: number,
|
|
39
|
+
* color_texture: number, depth_texture: number, normal_texture: number,
|
|
40
|
+
* hzb_texture: number, environment_texture: number}) => {background_color?: number}} [avboit_prepare]
|
|
41
|
+
* Optional optics preparation before occupancy; at most one producer per view. Inputs are
|
|
42
|
+
* immutable opaque resources. The returned background is read by the one shared resolve.
|
|
43
|
+
* Keep prepared state per graph/camera, not on an entity or in a global current-view slot.
|
|
37
44
|
* @property {(args: {
|
|
38
45
|
* graph: import("../../../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph,
|
|
39
46
|
* camera: number,
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Stable lost throughput at tiny extinction; a fixed norm cutoff drops bright faint surfaces. */
|
|
2
|
+
export const chunk_avboit_renormalization: CodeChunk;
|
|
3
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
4
|
+
//# sourceMappingURL=chunk_avboit_renormalization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_avboit_renormalization.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/avboit/chunk_avboit_renormalization.js"],"names":[],"mappings":"AAEA,kGAAkG;AAClG,qDAOG;0BAVuB,uCAAuC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
2
|
+
|
|
3
|
+
/** Stable lost throughput at tiny extinction; a fixed norm cutoff drops bright faint surfaces. */
|
|
4
|
+
export const chunk_avboit_renormalization = CodeChunk.from(/* language=WGSL */ `
|
|
5
|
+
fn avboit_renormalization(extinction: vec3f, norm: vec3f) -> vec3f {
|
|
6
|
+
let x = max(extinction, vec3f(0.0));
|
|
7
|
+
let small_loss = x * (1.0 - 0.5 * x + x * x / 6.0);
|
|
8
|
+
let loss = select(vec3f(1.0) - exp(-x), small_loss, x < vec3f(0.001));
|
|
9
|
+
return select(vec3f(0.0), min(loss / max(norm, vec3f(1e-20)), vec3f(65504.0)), norm > vec3f(0.0));
|
|
10
|
+
}
|
|
11
|
+
`);
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** A covering RGB-throughput surface; the existing particle/scalar entry point stays unchanged. */
|
|
2
|
+
export const chunk_avboit_rgb_contribution: CodeChunk;
|
|
3
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
4
|
+
//# sourceMappingURL=chunk_avboit_rgb_contribution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_avboit_rgb_contribution.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/avboit/chunk_avboit_rgb_contribution.js"],"names":[],"mappings":"AAGA,mGAAmG;AACnG,sDAc8C;0BAlBpB,uCAAuC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
2
|
+
import { chunk_avboit_premultiplied_contribution } from "./chunk_avboit_premultiplied_contribution.js";
|
|
3
|
+
|
|
4
|
+
/** A covering RGB-throughput surface; the existing particle/scalar entry point stays unchanged. */
|
|
5
|
+
export const chunk_avboit_rgb_contribution = CodeChunk.from(/* language=WGSL */ `
|
|
6
|
+
fn avboit_rgb_contribution(
|
|
7
|
+
radiance: vec3<f32>, self_transmittance: vec3<f32>,
|
|
8
|
+
front_transmittance: vec3<f32>, fog: vec4<f32>,
|
|
9
|
+
) -> AVBOITContribution {
|
|
10
|
+
let t = clamp(self_transmittance, vec3<f32>(1e-6), vec3<f32>(1.0));
|
|
11
|
+
let loss = vec3<f32>(1.0) - t;
|
|
12
|
+
var out: AVBOITContribution;
|
|
13
|
+
out.color = vec4<f32>((radiance * fog.w + loss * fog.xyz) * front_transmittance, 0.0);
|
|
14
|
+
out.norm = vec4<f32>(loss * front_transmittance, 0.0);
|
|
15
|
+
out.extinction = vec4<f32>(-log(t), 0.0);
|
|
16
|
+
out.emission = vec4<f32>(0.0);
|
|
17
|
+
return out;
|
|
18
|
+
}
|
|
19
|
+
`, [chunk_avboit_premultiplied_contribution]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_avboit_splat_slice.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/avboit/chunk_avboit_splat_slice.js"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;GAcG;AACH,uCAFU,SAAS,
|
|
1
|
+
{"version":3,"file":"chunk_avboit_splat_slice.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/avboit/chunk_avboit_splat_slice.js"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;GAcG;AACH,uCAFU,SAAS,CAyCjB;0BA3DwB,uCAAuC"}
|
|
@@ -21,12 +21,10 @@ import { chunk_avboit_pack_counts } from "./chunk_avboit_pack_counts.js";
|
|
|
21
21
|
export const chunk_avboit_splat_slice = CodeChunk.from(
|
|
22
22
|
//language=WGSL
|
|
23
23
|
`
|
|
24
|
-
fn
|
|
24
|
+
fn avboit_splat_counts(column: u32, slice: i32, counts: vec3<u32>, texel: vec2<u32>) {
|
|
25
25
|
let physical = i32(warp.physical_count);
|
|
26
26
|
let s = clamp(slice, 0, physical - 1);
|
|
27
27
|
|
|
28
|
-
let counts = avboit_extinction_to_counts(extinction);
|
|
29
|
-
|
|
30
28
|
if (all(counts == vec3<u32>(0u))) {
|
|
31
29
|
return;
|
|
32
30
|
}
|
|
@@ -50,6 +48,10 @@ fn avboit_splat_slice(column: u32, slice: i32, extinction: vec3<f32>, texel: vec
|
|
|
50
48
|
}
|
|
51
49
|
}
|
|
52
50
|
}
|
|
51
|
+
|
|
52
|
+
fn avboit_splat_slice(column: u32, slice: i32, extinction: vec3<f32>, texel: vec2<u32>) {
|
|
53
|
+
avboit_splat_counts(column, slice, avboit_extinction_to_counts(extinction), texel);
|
|
54
|
+
}
|
|
53
55
|
`, [
|
|
54
56
|
chunk_avboit_extinction_to_counts,
|
|
55
57
|
chunk_avboit_overflows,
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Partition already quantized counts. Rounding two fractional extinctions can erase both. */
|
|
2
|
+
export const chunk_avboit_split_counts: CodeChunk;
|
|
3
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
4
|
+
//# sourceMappingURL=chunk_avboit_split_counts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_avboit_split_counts.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/avboit/chunk_avboit_split_counts.js"],"names":[],"mappings":"AAEA,8FAA8F;AAC9F,kDAIG;0BAPuB,uCAAuC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
2
|
+
|
|
3
|
+
/** Partition already quantized counts. Rounding two fractional extinctions can erase both. */
|
|
4
|
+
export const chunk_avboit_split_counts = CodeChunk.from(/* language=WGSL */ `
|
|
5
|
+
fn avboit_split_counts(counts: vec3<u32>, fraction: f32) -> vec3<u32> {
|
|
6
|
+
return min(counts, vec3<u32>(vec3<f32>(counts) * clamp(fraction, 0.0, 1.0) + 0.5));
|
|
7
|
+
}
|
|
8
|
+
`);
|
package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts
CHANGED
|
@@ -164,7 +164,7 @@ export function avboit_create_accumulators(pass: FramePassBuilder, resolution: A
|
|
|
164
164
|
* sources of transparent fragments; the MBOIT orchestrator ignores them
|
|
165
165
|
* @returns {number} resource ID of the composited color texture
|
|
166
166
|
*/
|
|
167
|
-
export function graph_rasterize_meshes_transparent_avboit({ graph, buckets, view_ctx, viewport, depth_texture, color_texture, limits, light_cluster_parameters, light_cluster_lookup, light_cluster_data, shadowmap_atlas, volumetrics_lut, volumetrics_metadata, volumetrics_irradiance, indirect_lighting_mode, avboit, side_channels, }: {
|
|
167
|
+
export function graph_rasterize_meshes_transparent_avboit({ graph, buckets, view_ctx, viewport, depth_texture, color_texture, normal_texture, hzb_texture, environment_texture, limits, light_cluster_parameters, light_cluster_lookup, light_cluster_data, shadowmap_atlas, volumetrics_lut, volumetrics_metadata, volumetrics_irradiance, indirect_lighting_mode, avboit, side_channels, }: {
|
|
168
168
|
graph: FrameGraph;
|
|
169
169
|
buckets: number;
|
|
170
170
|
view_ctx: GPUViewContext;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph_rasterize_meshes_transparent_avboit.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js"],"names":[],"mappings":"AA4DA;;;;;GAKG;AACH,oDAHW,UAAU,MAAM,CAAC,GACf,MAAM,EAAE,CAOpB;AAED;;;;;;;;;;;;GAYG;AACH;IAT+B,KAAK;IACA,KAAK;IACd,MAAM,EAAtB,MAAM;IACqB,kBAAkB,EAA7C,UAAU,MAAM,CAAC;IACD,kBAAkB,EAAlC,MAAM;IACU,wBAAwB,EAAxC,MAAM;IACW,SAAS,GAA1B,MAAM;IACJ,MAAM,CA4DlB;AAED;;;;;;;;;;GAUG;AACH;IAP+B,KAAK;IACT,SAAS,EAAzB,MAAM;IACY,gBAAgB,EAAlC,MAAM,EAAE;IACmB,kBAAkB,EAA7C,UAAU,MAAM,CAAC;IACQ,MAAM,GAA/B,cAAc;IACZ,MAAM,CAsDlB;AAED;;;;;;;;;;;;;;;GAeG;AACH,6KAFa;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAiJjE;AAED;;;;;;;;;;GAUG;AACH;IAP+B,KAAK;IACT,IAAI,EAApB,MAAM;IACU,UAAU,EAA1B,MAAM;IACU,QAAQ,EAAxB,MAAM;IACY,gBAAgB,EAAlC,MAAM,EAAE;IACN,MAAM,CAoClB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qUAFa;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAC,CAwN7D;AAED;;;;;;;;GAQG;AACH,+EAHW,UAAU,MAAM,CAAC,GACf;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAC,CAe/E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH;IAtB+B,KAAK;IACT,OAAO,EAAvB,MAAM;IACkB,QAAQ;IACd,QAAQ,EAA1B,MAAM,EAAE;IACQ,aAAa,EAA7B,MAAM;IACU,aAAa,EAA7B,MAAM;IACuB,MAAM;IACnB,wBAAwB,EAAxC,MAAM;IACU,oBAAoB,EAApC,MAAM;IACU,kBAAkB,EAAlC,MAAM;IACU,eAAe,EAA/B,MAAM;IACU,eAAe,EAA/B,MAAM;IACU,oBAAoB,EAApC,MAAM;IAC6B,sBAAsB,EAAzD;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC;IAGU,sBAAsB,EAAzD,yBAAyB;IACA,MAAM,GAA/B,cAAc;IACiD,aAAa,GAA5E,OAAO,wBAAwB,EAAE,iBAAiB,EAAE;IAElD,MAAM,
|
|
1
|
+
{"version":3,"file":"graph_rasterize_meshes_transparent_avboit.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js"],"names":[],"mappings":"AA4DA;;;;;GAKG;AACH,oDAHW,UAAU,MAAM,CAAC,GACf,MAAM,EAAE,CAOpB;AAED;;;;;;;;;;;;GAYG;AACH;IAT+B,KAAK;IACA,KAAK;IACd,MAAM,EAAtB,MAAM;IACqB,kBAAkB,EAA7C,UAAU,MAAM,CAAC;IACD,kBAAkB,EAAlC,MAAM;IACU,wBAAwB,EAAxC,MAAM;IACW,SAAS,GAA1B,MAAM;IACJ,MAAM,CA4DlB;AAED;;;;;;;;;;GAUG;AACH;IAP+B,KAAK;IACT,SAAS,EAAzB,MAAM;IACY,gBAAgB,EAAlC,MAAM,EAAE;IACmB,kBAAkB,EAA7C,UAAU,MAAM,CAAC;IACQ,MAAM,GAA/B,cAAc;IACZ,MAAM,CAsDlB;AAED;;;;;;;;;;;;;;;GAeG;AACH,6KAFa;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAiJjE;AAED;;;;;;;;;;GAUG;AACH;IAP+B,KAAK;IACT,IAAI,EAApB,MAAM;IACU,UAAU,EAA1B,MAAM;IACU,QAAQ,EAAxB,MAAM;IACY,gBAAgB,EAAlC,MAAM,EAAE;IACN,MAAM,CAoClB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qUAFa;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAC,CAwN7D;AAED;;;;;;;;GAQG;AACH,+EAHW,UAAU,MAAM,CAAC,GACf;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAC,CAe/E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH;IAtB+B,KAAK;IACT,OAAO,EAAvB,MAAM;IACkB,QAAQ;IACd,QAAQ,EAA1B,MAAM,EAAE;IACQ,aAAa,EAA7B,MAAM;IACU,aAAa,EAA7B,MAAM;IACuB,MAAM;IACnB,wBAAwB,EAAxC,MAAM;IACU,oBAAoB,EAApC,MAAM;IACU,kBAAkB,EAAlC,MAAM;IACU,eAAe,EAA/B,MAAM;IACU,eAAe,EAA/B,MAAM;IACU,oBAAoB,EAApC,MAAM;IAC6B,sBAAsB,EAAzD;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC;IAGU,sBAAsB,EAAzD,yBAAyB;IACA,MAAM,GAA/B,cAAc;IACiD,aAAa,GAA5E,OAAO,wBAAwB,EAAE,iBAAiB,EAAE;IAElD,MAAM,CAiTlB;+BAx9B8B,qBAAqB;0CA9BV,uCAAuC"}
|
package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js
CHANGED
|
@@ -724,6 +724,9 @@ export function graph_rasterize_meshes_transparent_avboit({
|
|
|
724
724
|
viewport,
|
|
725
725
|
depth_texture,
|
|
726
726
|
color_texture,
|
|
727
|
+
normal_texture,
|
|
728
|
+
hzb_texture,
|
|
729
|
+
environment_texture,
|
|
727
730
|
limits,
|
|
728
731
|
light_cluster_parameters,
|
|
729
732
|
light_cluster_lookup,
|
|
@@ -809,7 +812,7 @@ export function graph_rasterize_meshes_transparent_avboit({
|
|
|
809
812
|
const primitive_front = construct_primitive_state(ShadeDrawMode.Triangles, ShadeDrawSide.Front);
|
|
810
813
|
const primitive_double = construct_primitive_state(ShadeDrawMode.Triangles, ShadeDrawSide.Double);
|
|
811
814
|
|
|
812
|
-
const gr_hzb = graph_import_texture(graph, view_ctx.hierarchical_z_buffer.texture);
|
|
815
|
+
const gr_hzb = hzb_texture ?? graph_import_texture(graph, view_ctx.hierarchical_z_buffer.texture);
|
|
813
816
|
const gr_camera = graph_import_buffer(graph, view_ctx.camera.buffer.buffer);
|
|
814
817
|
|
|
815
818
|
const voxel_resolution = avboit_voxel_resolution(view_ctx.resolution);
|
|
@@ -819,6 +822,22 @@ export function graph_rasterize_meshes_transparent_avboit({
|
|
|
819
822
|
const camera = view_ctx.camera.camera;
|
|
820
823
|
const cluster_parameters = avboit_build_depth_curve(camera.near, camera.far);
|
|
821
824
|
|
|
825
|
+
// A background producer transports only immutable opaque radiance. Reject ambiguity before
|
|
826
|
+
// recording any preparation rather than letting channel registration order choose a winner.
|
|
827
|
+
const preparers = side_channels.filter(channel => typeof channel.avboit_prepare === "function");
|
|
828
|
+
if (preparers.length > 1) {
|
|
829
|
+
throw new Error("AVBOIT supports one refractive background producer per view");
|
|
830
|
+
}
|
|
831
|
+
let background_color = color_texture;
|
|
832
|
+
for (const channel of preparers) {
|
|
833
|
+
const prepared = channel.avboit_prepare({ graph, view_ctx, camera: gr_camera, color_texture,
|
|
834
|
+
depth_texture, normal_texture, hzb_texture: gr_hzb, environment_texture });
|
|
835
|
+
if (prepared?.background_color !== undefined) {
|
|
836
|
+
assert.isNonNegativeInteger(prepared.background_color, 'prepared.background_color');
|
|
837
|
+
background_color = prepared.background_color;
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
|
|
822
841
|
// Draw artifacts (shared with MBOIT)
|
|
823
842
|
// ======
|
|
824
843
|
|
|
@@ -992,7 +1011,7 @@ export function graph_rasterize_meshes_transparent_avboit({
|
|
|
992
1011
|
shader: shader_avboit_resolve,
|
|
993
1012
|
output_resolution: view_ctx.resolution,
|
|
994
1013
|
inputs: {
|
|
995
|
-
tScene:
|
|
1014
|
+
tScene: background_color,
|
|
996
1015
|
tColor: accumulators.color,
|
|
997
1016
|
tNorm: accumulators.norm,
|
|
998
1017
|
tExtinction: accumulators.extinction,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_avboit_resolve.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/avboit/shader_avboit_resolve.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_avboit_resolve.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/avboit/shader_avboit_resolve.js"],"names":[],"mappings":"AAwEA,gDAUE;4BAhF0B,gCAAgC"}
|
|
@@ -3,6 +3,7 @@ import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
|
3
3
|
import { ImageShader } from "../../../shader/ImageShader.js";
|
|
4
4
|
import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
5
5
|
import { ShaderDescriptor } from "../../../shader/ShaderDescriptor.js";
|
|
6
|
+
import { chunk_avboit_renormalization } from "./chunk_avboit_renormalization.js";
|
|
6
7
|
|
|
7
8
|
const resources = new ShaderResourceSetDescriptor();
|
|
8
9
|
resources.createGroup()
|
|
@@ -19,7 +20,7 @@ resources.createGroup()
|
|
|
19
20
|
*
|
|
20
21
|
* ```
|
|
21
22
|
* T_total = exp(-Σ extinction)
|
|
22
|
-
* norm = Σ norm >
|
|
23
|
+
* norm = Σ norm > 0 ? stable_lost_throughput(Σ extinction) / Σ norm : 0
|
|
23
24
|
* out = scene × T_total + Σ color × norm + Σ emission
|
|
24
25
|
* ```
|
|
25
26
|
*
|
|
@@ -58,19 +59,14 @@ fn main(
|
|
|
58
59
|
let total_transmittance = exp(-accum_extinction);
|
|
59
60
|
|
|
60
61
|
// sum of (1 - T_self) * T at each fragment; zero where nothing transparent was drawn
|
|
61
|
-
let
|
|
62
|
-
let renormalization = select(
|
|
63
|
-
vec3<f32>(0.0),
|
|
64
|
-
(vec3<f32>(1.0) - total_transmittance) / max(accum_norm, vec3<f32>(1e-4)),
|
|
65
|
-
safe
|
|
66
|
-
);
|
|
62
|
+
let renormalization = avboit_renormalization(accum_extinction, accum_norm);
|
|
67
63
|
|
|
68
64
|
let transparent = accum_color * renormalization;
|
|
69
65
|
|
|
70
66
|
return vec4<f32>(scene.rgb * total_transmittance + transparent + accum_emission, scene.a);
|
|
71
67
|
}
|
|
72
68
|
`, [
|
|
73
|
-
chunk_is_nan
|
|
69
|
+
chunk_is_nan, chunk_avboit_renormalization
|
|
74
70
|
]
|
|
75
71
|
)
|
|
76
72
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_bvh_extract_instance_leaves.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/scene/shader_bvh_extract_instance_leaves.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_bvh_extract_instance_leaves.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/scene/shader_bvh_extract_instance_leaves.js"],"names":[],"mappings":"AAWA,4CAA6C;AAmH7C;;;;;;;;;;;;;;;;;GAiBG;AACH,iDAFU,aAAa,CAMpB;8BA9I2B,4BAA4B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atomic f32 addition over a read-write storage atomic<u32> cell containing f32 bits.
|
|
3
|
+
*
|
|
4
|
+
* Each compare-exchange attempt adds to the current float value and writes the sum
|
|
5
|
+
* as plain f32 bits. Failed or spurious exchanges retry from a fresh atomic load,
|
|
6
|
+
* so concurrent additions are not lost.
|
|
7
|
+
*
|
|
8
|
+
* @type {CodeChunk}
|
|
9
|
+
*/
|
|
10
|
+
export const chunk_atomic_add_f32_storage: CodeChunk;
|
|
11
|
+
import { CodeChunk } from "../../compiler/CodeChunk.js";
|
|
12
|
+
//# sourceMappingURL=chunk_atomic_add_f32_storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_atomic_add_f32_storage.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/atomic/chunk_atomic_add_f32_storage.js"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,2CAFU,SAAS,CAehB;0BAxBuB,6BAA6B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atomic f32 maximum over a read-write storage atomic<u32> cell containing f32 bits.
|
|
3
|
+
*
|
|
4
|
+
* Compare-exchange retries keep the cell in plain f32 representation. If the stored
|
|
5
|
+
* value already bounds the contribution, the function exits without an exchange.
|
|
6
|
+
* Infinities are supported; the stored value and contribution must not be NaN.
|
|
7
|
+
*
|
|
8
|
+
* @type {CodeChunk}
|
|
9
|
+
*/
|
|
10
|
+
export const chunk_atomic_max_f32_storage: CodeChunk;
|
|
11
|
+
import { CodeChunk } from "../../compiler/CodeChunk.js";
|
|
12
|
+
//# sourceMappingURL=chunk_atomic_max_f32_storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_atomic_max_f32_storage.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/atomic/chunk_atomic_max_f32_storage.js"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,2CAFU,SAAS,CAkBhB;0BA3BuB,6BAA6B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atomic f32 minimum over a read-write storage atomic<u32> cell containing f32 bits.
|
|
3
|
+
*
|
|
4
|
+
* Compare-exchange retries keep the cell in plain f32 representation. If the stored
|
|
5
|
+
* value already bounds the contribution, the function exits without an exchange.
|
|
6
|
+
* Infinities are supported; the stored value and contribution must not be NaN.
|
|
7
|
+
*
|
|
8
|
+
* @type {CodeChunk}
|
|
9
|
+
*/
|
|
10
|
+
export const chunk_atomic_min_f32_storage: CodeChunk;
|
|
11
|
+
import { CodeChunk } from "../../compiler/CodeChunk.js";
|
|
12
|
+
//# sourceMappingURL=chunk_atomic_min_f32_storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_atomic_min_f32_storage.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/atomic/chunk_atomic_min_f32_storage.js"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,2CAFU,SAAS,CAkBhB;0BA3BuB,6BAA6B"}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* Ported from meep
|
|
3
3
|
* @type {CodeChunk}
|
|
4
4
|
*/
|
|
5
|
-
export const
|
|
5
|
+
export const chunk_plane_ray_raycast: CodeChunk;
|
|
6
6
|
import { CodeChunk } from "../../../compiler/CodeChunk.js";
|
|
7
|
-
//# sourceMappingURL=
|
|
7
|
+
//# sourceMappingURL=chunk_plane_ray_raycast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_plane_ray_raycast.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/geometry/plane/chunk_plane_ray_raycast.js"],"names":[],"mappings":"AAEA;;;GAGG;AACH,sCAFU,SAAS,CA2Cf;0BA/CsB,gCAAgC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_screen_space_newton_ray.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_newton_ray.js"],"names":[],"mappings":"AAWA,0FAA0F;AAC1F,sDAwFkF;0BApGxD,6BAA6B"}
|