@woosh/meep-engine 3.14.6 → 3.15.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/network/orchestrator/ServerAuthoritativeClient.d.ts +48 -0
- package/src/engine/network/orchestrator/ServerAuthoritativeClient.d.ts.map +1 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeClient.js +246 -3
- package/src/shade/RENDERER_CONTRACT.md +584 -580
- package/src/shade/playground/avboit/README.md +117 -0
- package/src/shade/playground/avboit/index.html +215 -0
- package/src/shade/playground/avboit/main.d.ts +2 -0
- package/src/shade/playground/avboit/main.d.ts.map +1 -0
- package/src/shade/playground/avboit/main.js +875 -0
- package/src/shade/renderer/Renderer.d.ts +16 -0
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +29 -28
- package/src/shade/renderer/ShadeTransparencyMode.d.ts +13 -0
- package/src/shade/renderer/ShadeTransparencyMode.d.ts.map +1 -0
- package/src/shade/renderer/ShadeTransparencyMode.js +30 -0
- package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.d.ts +9 -0
- package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +26 -0
- package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.d.ts +7 -2
- package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.js +12 -1
- package/src/shade/renderer/rasterize/expand/shader_filter_triangle_by_material_side.js +1 -1
- package/src/shade/renderer/rasterize/forward/FORWARD_VERTEX_SHADER_STRUCT.d.ts +3 -0
- package/src/shade/renderer/rasterize/forward/FORWARD_VERTEX_SHADER_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/{native/oit → forward}/FORWARD_VERTEX_SHADER_STRUCT.js +4 -4
- package/src/shade/renderer/rasterize/forward/SHADING_SCENE_RESOURCE_GROUP.d.ts +3 -0
- package/src/shade/renderer/rasterize/forward/SHADING_SCENE_RESOURCE_GROUP.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/forward/SHADING_SCENE_RESOURCE_GROUP.js +17 -0
- package/src/shade/renderer/rasterize/{native/oit → forward}/chunk_forward_shade_standard_fragment_brick4.d.ts +1 -1
- package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_brick4.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/{native/oit → forward}/chunk_forward_shade_standard_fragment_brick4.js +16 -16
- package/src/shade/renderer/rasterize/{native/oit → forward}/chunk_forward_shade_standard_fragment_ibl.d.ts +1 -1
- package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_ibl.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/{native/oit → forward}/chunk_forward_shade_standard_fragment_ibl.js +17 -17
- package/src/shade/renderer/rasterize/{native/oit → forward}/chunk_material_side_should_draw.d.ts +1 -1
- package/src/shade/renderer/rasterize/forward/chunk_material_side_should_draw.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/{native/oit → forward}/chunk_material_side_should_draw.js +2 -2
- package/src/shade/renderer/rasterize/forward/vertex_shader_chunk.d.ts +3 -0
- package/src/shade/renderer/rasterize/forward/vertex_shader_chunk.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/{native/oit → forward}/vertex_shader_chunk.js +4 -4
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSettings.d.ts +27 -0
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSettings.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSettings.js +27 -0
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.d.ts +107 -0
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.js +120 -0
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_LEDGER.md +463 -0
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_PLAN_2026_09_03.md +509 -0
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_WARP_STRUCT.d.ts +15 -0
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_WARP_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_WARP_STRUCT.js +33 -0
- package/src/shade/renderer/rasterize/native/avboit/avboit_build_depth_curve.d.ts +20 -0
- package/src/shade/renderer/rasterize/native/avboit/avboit_build_depth_curve.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/avboit_build_depth_curve.js +38 -0
- package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.d.ts +38 -0
- package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.js +130 -0
- package/src/shade/renderer/rasterize/native/avboit/avboit_spec_support.d.ts +37 -0
- package/src/shade/renderer/rasterize/native/avboit/avboit_spec_support.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/avboit_spec_support.js +73 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_counts_to_extinction.d.ts +9 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_counts_to_extinction.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_counts_to_extinction.js +17 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_dilate_word.d.ts +11 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_dilate_word.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_dilate_word.js +18 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_extinction_to_counts.d.ts +9 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_extinction_to_counts.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_extinction_to_counts.js +17 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_extinction_to_transmittance.d.ts +9 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_extinction_to_transmittance.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_extinction_to_transmittance.js +17 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_fold_pairs.d.ts +15 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_fold_pairs.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_fold_pairs.js +25 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_integral_depth_coordinate.d.ts +17 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_integral_depth_coordinate.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_integral_depth_coordinate.js +35 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_occupancy_range.d.ts +11 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_occupancy_range.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_occupancy_range.js +21 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_occupancy_word_mask.d.ts +9 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_occupancy_word_mask.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_occupancy_word_mask.js +26 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_overflows.d.ts +11 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_overflows.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_overflows.js +22 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_pack_counts.d.ts +10 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_pack_counts.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_pack_counts.js +21 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_sample_transmittance.d.ts +10 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_sample_transmittance.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_sample_transmittance.js +32 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_transmission_tint.d.ts +20 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_transmission_tint.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_transmission_tint.js +27 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_transmittance_to_extinction.d.ts +10 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_transmittance_to_extinction.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_transmittance_to_extinction.js +18 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_unpack_counts.d.ts +9 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_unpack_counts.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_unpack_counts.js +21 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_view_depth_to_physical.d.ts +9 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_view_depth_to_physical.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_view_depth_to_physical.js +23 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_view_depth_to_virtual.d.ts +13 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_view_depth_to_virtual.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_view_depth_to_virtual.js +27 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp.d.ts +22 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp.js +38 -0
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts +117 -0
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +935 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_build_warp.d.ts +8 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_build_warp.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_build_warp.js +135 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_brick4.d.ts +3 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_brick4.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_brick4.js +101 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_ibl.d.ts +3 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_ibl.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_ibl.js +96 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_integrate.d.ts +3 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_integrate.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_integrate.js +83 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_occupancy.d.ts +9 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_occupancy.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_occupancy.js +119 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_resolve.d.ts +3 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_resolve.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_resolve.js +81 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_splat.d.ts +15 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_splat.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_splat.js +237 -0
- package/src/shade/renderer/rasterize/native/material_draw_indirect.d.ts +22 -0
- package/src/shade/renderer/rasterize/native/material_draw_indirect.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/material_draw_indirect.js +69 -0
- package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.js +665 -722
- package/src/shade/renderer/rasterize/native/oit/shader_oit_generate_moments.js +3 -3
- package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments.js +4 -4
- package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments_ibl.js +4 -4
- package/src/shade/renderer/rasterize/native/oit/FORWARD_VERTEX_SHADER_STRUCT.d.ts +0 -3
- package/src/shade/renderer/rasterize/native/oit/FORWARD_VERTEX_SHADER_STRUCT.d.ts.map +0 -1
- package/src/shade/renderer/rasterize/native/oit/SHADING_SCENE_RESOURCE_GROUP.d.ts +0 -3
- package/src/shade/renderer/rasterize/native/oit/SHADING_SCENE_RESOURCE_GROUP.d.ts.map +0 -1
- package/src/shade/renderer/rasterize/native/oit/SHADING_SCENE_RESOURCE_GROUP.js +0 -17
- package/src/shade/renderer/rasterize/native/oit/chunk_forward_shade_standard_fragment_brick4.d.ts.map +0 -1
- package/src/shade/renderer/rasterize/native/oit/chunk_forward_shade_standard_fragment_ibl.d.ts.map +0 -1
- package/src/shade/renderer/rasterize/native/oit/chunk_material_side_should_draw.d.ts.map +0 -1
- package/src/shade/renderer/rasterize/native/oit/vertex_shader_chunk.d.ts +0 -3
- package/src/shade/renderer/rasterize/native/oit/vertex_shader_chunk.d.ts.map +0 -1
|
@@ -29,6 +29,20 @@ export class Renderer {
|
|
|
29
29
|
* @type {ShadeIndirectLightingMode}
|
|
30
30
|
*/
|
|
31
31
|
indirect_lighting_mode: ShadeIndirectLightingMode;
|
|
32
|
+
/**
|
|
33
|
+
* Which order-independent transparency technique draws the transparent buckets. Both modes
|
|
34
|
+
* are wired at the single transparency call site and take the same inputs, so this is safe to
|
|
35
|
+
* flip at runtime for an A/B. See {@link ShadeTransparencyMode} for what each one costs and
|
|
36
|
+
* needs from the device. AVBOIT is the default since 2026-09-03: depth-complexity invariant
|
|
37
|
+
* where MBOIT leaks stacked surfaces, and no 32-bit float blending.
|
|
38
|
+
* @type {ShadeTransparencyMode}
|
|
39
|
+
*/
|
|
40
|
+
transparency_mode: ShadeTransparencyMode;
|
|
41
|
+
/**
|
|
42
|
+
* Switches of the AVBOIT mode, read every frame while {@link transparency_mode} selects it.
|
|
43
|
+
* @type {AVBOITSettings}
|
|
44
|
+
*/
|
|
45
|
+
avboit: AVBOITSettings;
|
|
32
46
|
feature_ssr_enabled: boolean;
|
|
33
47
|
feature_ssao_enabled: boolean;
|
|
34
48
|
/**
|
|
@@ -388,6 +402,8 @@ export class Renderer {
|
|
|
388
402
|
}
|
|
389
403
|
import { SceneManager } from "./scene/SceneManager.js";
|
|
390
404
|
import { ShadeIndirectLightingMode } from "./ShadeIndirectLightingMode.js";
|
|
405
|
+
import { ShadeTransparencyMode } from "./ShadeTransparencyMode.js";
|
|
406
|
+
import { AVBOITSettings } from "./rasterize/native/avboit/AVBOITSettings.js";
|
|
391
407
|
import { MotionBlur } from "./postprocess/motion_blur/MotionBlur.js";
|
|
392
408
|
import { DepthOfField } from "./postprocess/dof/raymarch/DepthOfField.js";
|
|
393
409
|
import { DepthOfFieldU } from "./postprocess/dof/gather/DepthOfFieldU.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/Renderer.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/Renderer.js"],"names":[],"mappings":"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"}
|
|
@@ -54,6 +54,9 @@ import { shader_debug_velocity } from "./postprocess/velocity/shader_debug_veloc
|
|
|
54
54
|
import {
|
|
55
55
|
graph_rasterize_meshes_transparent_oit
|
|
56
56
|
} from "./rasterize/native/oit/graph_rasterize_meshes_transparent_oit.js";
|
|
57
|
+
import {
|
|
58
|
+
graph_rasterize_meshes_transparent_avboit
|
|
59
|
+
} from "./rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js";
|
|
57
60
|
import {
|
|
58
61
|
viz_rasterization_alpha_tested_pass_descriptor
|
|
59
62
|
} from "./rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.js";
|
|
@@ -65,6 +68,8 @@ import { graph_rasterize_scene } from "./rasterize/standard/graph_rasterize_scen
|
|
|
65
68
|
import { ReSTIRDI } from "./restir/di/ReSTIRDI.js";
|
|
66
69
|
import { SceneManager } from "./scene/SceneManager.js";
|
|
67
70
|
import { ShadeIndirectLightingMode } from "./ShadeIndirectLightingMode.js";
|
|
71
|
+
import { ShadeTransparencyMode } from "./ShadeTransparencyMode.js";
|
|
72
|
+
import { AVBOITSettings } from "./rasterize/native/avboit/AVBOITSettings.js";
|
|
68
73
|
import { graph_image_pass } from "./shader/graph/graph_image_pass.js";
|
|
69
74
|
import { graph_import_buffer } from "./shader/graph/graph_import_buffer.js";
|
|
70
75
|
import { graph_import_texture } from "./shader/graph/graph_import_texture.js";
|
|
@@ -167,6 +172,22 @@ export class Renderer {
|
|
|
167
172
|
*/
|
|
168
173
|
indirect_lighting_mode = ShadeIndirectLightingMode.IBL;
|
|
169
174
|
|
|
175
|
+
/**
|
|
176
|
+
* Which order-independent transparency technique draws the transparent buckets. Both modes
|
|
177
|
+
* are wired at the single transparency call site and take the same inputs, so this is safe to
|
|
178
|
+
* flip at runtime for an A/B. See {@link ShadeTransparencyMode} for what each one costs and
|
|
179
|
+
* needs from the device. AVBOIT is the default since 2026-09-03: depth-complexity invariant
|
|
180
|
+
* where MBOIT leaks stacked surfaces, and no 32-bit float blending.
|
|
181
|
+
* @type {ShadeTransparencyMode}
|
|
182
|
+
*/
|
|
183
|
+
transparency_mode = ShadeTransparencyMode.AVBOIT;
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Switches of the AVBOIT mode, read every frame while {@link transparency_mode} selects it.
|
|
187
|
+
* @type {AVBOITSettings}
|
|
188
|
+
*/
|
|
189
|
+
avboit = new AVBOITSettings();
|
|
190
|
+
|
|
170
191
|
feature_ssr_enabled = false;
|
|
171
192
|
feature_ssao_enabled = true;
|
|
172
193
|
/**
|
|
@@ -2178,35 +2199,8 @@ export class Renderer {
|
|
|
2178
2199
|
|
|
2179
2200
|
}
|
|
2180
2201
|
|
|
2181
|
-
// current_color_out = indirect_diffuse
|
|
2182
|
-
// current_color_out = indirect_specular
|
|
2183
|
-
|
|
2184
2202
|
}
|
|
2185
2203
|
|
|
2186
|
-
// current_color_out = graph_decode_rgbe9995_to_rgb16float({
|
|
2187
|
-
// graph,
|
|
2188
|
-
// input:indirect_diffuse_near_field,
|
|
2189
|
-
// resolution: view_ctx.resolution,
|
|
2190
|
-
// });
|
|
2191
|
-
//
|
|
2192
|
-
// const [norm] = graph_image_pass({
|
|
2193
|
-
// shader: shader_decode_octahedral_normal,
|
|
2194
|
-
// inputs:{
|
|
2195
|
-
// tInput: bent_normals,
|
|
2196
|
-
// },
|
|
2197
|
-
// graph,
|
|
2198
|
-
// output_resolution: view_ctx.resolution,
|
|
2199
|
-
// });
|
|
2200
|
-
//
|
|
2201
|
-
// [current_color_out] = graph_image_pass({
|
|
2202
|
-
// graph,
|
|
2203
|
-
// shader: shader_draw_normals,
|
|
2204
|
-
// inputs:{
|
|
2205
|
-
// tInput: norm,
|
|
2206
|
-
// },
|
|
2207
|
-
// output_resolution: view_ctx.resolution,
|
|
2208
|
-
// });
|
|
2209
|
-
|
|
2210
2204
|
// Composite volumetric fog over the finalized opaque + background + indirect colour.
|
|
2211
2205
|
// A dedicated pass (not inline in the shading shaders) because indirect lighting is added
|
|
2212
2206
|
// in a separate additively-blended pass, so the full surface radiance only exists here.
|
|
@@ -2250,7 +2244,13 @@ export class Renderer {
|
|
|
2250
2244
|
// do transparent alpha pass
|
|
2251
2245
|
graph.push_scope("transparencies");
|
|
2252
2246
|
|
|
2253
|
-
|
|
2247
|
+
// Mutually exclusive by construction: one orchestrator runs at this one call site, and both
|
|
2248
|
+
// take the same argument object, so the mode is a pure selector.
|
|
2249
|
+
const graph_rasterize_meshes_transparent = this.transparency_mode === ShadeTransparencyMode.AVBOIT
|
|
2250
|
+
? graph_rasterize_meshes_transparent_avboit
|
|
2251
|
+
: graph_rasterize_meshes_transparent_oit;
|
|
2252
|
+
|
|
2253
|
+
current_color_out = graph_rasterize_meshes_transparent({
|
|
2254
2254
|
graph,
|
|
2255
2255
|
buckets: gr_render_buckets,
|
|
2256
2256
|
view_ctx,
|
|
@@ -2270,6 +2270,7 @@ export class Renderer {
|
|
|
2270
2270
|
volumetrics_metadata: volumetrics.metadata,
|
|
2271
2271
|
|
|
2272
2272
|
indirect_lighting_mode: this.indirect_lighting_mode,
|
|
2273
|
+
avboit: this.avboit,
|
|
2273
2274
|
});
|
|
2274
2275
|
|
|
2275
2276
|
graph.pop_scope();
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Selects which order-independent transparency technique draws the transparent buckets.
|
|
3
|
+
*
|
|
4
|
+
* Both modes share everything up to the draw commands (material filtering, meshlet expansion, HZB
|
|
5
|
+
* culling) and both composite onto the scene colour at `FramePhase.AfterLighting`; they differ in
|
|
6
|
+
* how the per-pixel transmittance in front of a fragment is represented.
|
|
7
|
+
*/
|
|
8
|
+
export type ShadeTransparencyMode = number;
|
|
9
|
+
export namespace ShadeTransparencyMode {
|
|
10
|
+
let MBOIT: number;
|
|
11
|
+
let AVBOIT: number;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=ShadeTransparencyMode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShadeTransparencyMode.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/ShadeTransparencyMode.js"],"names":[],"mappings":";;;;;;;oCAOU,MAAM"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Selects which order-independent transparency technique draws the transparent buckets.
|
|
3
|
+
*
|
|
4
|
+
* Both modes share everything up to the draw commands (material filtering, meshlet expansion, HZB
|
|
5
|
+
* culling) and both composite onto the scene colour at `FramePhase.AfterLighting`; they differ in
|
|
6
|
+
* how the per-pixel transmittance in front of a fragment is represented.
|
|
7
|
+
*
|
|
8
|
+
* @enum {number}
|
|
9
|
+
*/
|
|
10
|
+
export const ShadeTransparencyMode = {
|
|
11
|
+
/**
|
|
12
|
+
* Moment-based OIT (Peters et al. 2017): four power moments of the transmittance function per
|
|
13
|
+
* pixel, additively blended at full resolution into `r32float` + `rgba32float` targets, which
|
|
14
|
+
* is what puts `float32-blendable` on the device floor. Smooth, cheap, and not depth-complexity
|
|
15
|
+
* invariant — stacked opaque-ish layers leak. The default until 2026-09-03.
|
|
16
|
+
*
|
|
17
|
+
* See `rasterize/native/oit/`.
|
|
18
|
+
*/
|
|
19
|
+
MBOIT: 0,
|
|
20
|
+
/**
|
|
21
|
+
* Adaptive voxel-based OIT (Drobot, SIGGRAPH 2025): extinction splatted into a 1/8-resolution
|
|
22
|
+
* voxel volume whose depth axis is adaptively packed onto 128 physical slices, integrated into a
|
|
23
|
+
* 3D transmittance lookup. Depth-complexity and shift invariant, filters the background per
|
|
24
|
+
* channel for transmissive materials (opt-in, `Renderer.avboit`), and needs no 32-bit float
|
|
25
|
+
* blending. The default.
|
|
26
|
+
*
|
|
27
|
+
* See `rasterize/native/avboit/`.
|
|
28
|
+
*/
|
|
29
|
+
AVBOIT: 1,
|
|
30
|
+
};
|
|
@@ -37,6 +37,15 @@ export class AccumulatingPathTracer {
|
|
|
37
37
|
* @type {boolean}
|
|
38
38
|
*/
|
|
39
39
|
clear_history: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Samples accumulated by the tile that has had the fewest — the floor on how converged the
|
|
42
|
+
* image is anywhere. Zero right after a reset or before the first frame. A page presenting the
|
|
43
|
+
* traced image as a reference reads this to say how settled it is, rather than guessing from
|
|
44
|
+
* frames elapsed (a frame advances one tile, not the whole image).
|
|
45
|
+
*
|
|
46
|
+
* @returns {number}
|
|
47
|
+
*/
|
|
48
|
+
get min_sample_count(): number;
|
|
40
49
|
/**
|
|
41
50
|
* Render one tile worth of new samples and blend it into the accumulation buffer.
|
|
42
51
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccumulatingPathTracer.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;GAcG;AACH;IA8EI;;;OAGG;IACH,uCAgBC;IAhGD;;;;OAIG;IACH,kBAFU,MAAM,CAEO;IAEvB;;;;OAIG;IACH,wBAFU,MAAM,CAEc;IAE9B;;;;OAIG;IACH,eAFU,OAAO,CAEK;IA+NtB;;;;;;OAMG;IACH,yCAFa,MAAM,CAyJlB;;CACJ"}
|
|
1
|
+
{"version":3,"file":"AccumulatingPathTracer.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;GAcG;AACH;IA8EI;;;OAGG;IACH,uCAgBC;IAhGD;;;;OAIG;IACH,kBAFU,MAAM,CAEO;IAEvB;;;;OAIG;IACH,wBAFU,MAAM,CAEc;IAE9B;;;;OAIG;IACH,eAFU,OAAO,CAEK;IA+NtB;;;;;;;OAOG;IACH,+BAgBC;IAED;;;;;;OAMG;IACH,yCAFa,MAAM,CAyJlB;;CACJ"}
|
|
@@ -269,6 +269,32 @@ export class AccumulatingPathTracer {
|
|
|
269
269
|
}
|
|
270
270
|
}
|
|
271
271
|
|
|
272
|
+
/**
|
|
273
|
+
* Samples accumulated by the tile that has had the fewest — the floor on how converged the
|
|
274
|
+
* image is anywhere. Zero right after a reset or before the first frame. A page presenting the
|
|
275
|
+
* traced image as a reference reads this to say how settled it is, rather than guessing from
|
|
276
|
+
* frames elapsed (a frame advances one tile, not the whole image).
|
|
277
|
+
*
|
|
278
|
+
* @returns {number}
|
|
279
|
+
*/
|
|
280
|
+
get min_sample_count() {
|
|
281
|
+
const counts = this.#tile_sample_counts;
|
|
282
|
+
|
|
283
|
+
if (counts.length === 0) {
|
|
284
|
+
return 0;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
let min = counts[0];
|
|
288
|
+
|
|
289
|
+
for (let i = 1; i < counts.length; i++) {
|
|
290
|
+
if (counts[i] < min) {
|
|
291
|
+
min = counts[i];
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
return min;
|
|
296
|
+
}
|
|
297
|
+
|
|
272
298
|
/**
|
|
273
299
|
* Render one tile worth of new samples and blend it into the accumulation buffer.
|
|
274
300
|
*
|
|
@@ -10,9 +10,14 @@
|
|
|
10
10
|
* @param {number[]} resolution
|
|
11
11
|
* @param {string} [label] used for debug
|
|
12
12
|
* @param {GPUSceneContext} scene
|
|
13
|
+
* @returns {{meshlets: number, draw_commands: number, meshlet_collection: number, meshlet_iterator_command: number}}
|
|
14
|
+
* resource IDs: the material-sorted meshlet array the draws consume, one indirect draw command per
|
|
15
|
+
* material, the HZB-filtered collection with its count header, and the dispatch command over it
|
|
13
16
|
*/
|
|
14
17
|
export function graph_prepare_meshlet_draw_commands_by_material({ graph, materials, bucket_id, limits, buckets, hzb, camera, scene, resolution, label, }: FrameGraph): {
|
|
15
|
-
meshlets:
|
|
16
|
-
draw_commands:
|
|
18
|
+
meshlets: number;
|
|
19
|
+
draw_commands: number;
|
|
20
|
+
meshlet_collection: number;
|
|
21
|
+
meshlet_iterator_command: number;
|
|
17
22
|
};
|
|
18
23
|
//# sourceMappingURL=prepare_meshlet_draw_commands_by_material.d.ts.map
|
package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare_meshlet_draw_commands_by_material.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.js"],"names":[],"mappings":"AA2BA
|
|
1
|
+
{"version":3,"file":"prepare_meshlet_draw_commands_by_material.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.js"],"names":[],"mappings":"AA2BA;;;;;;;;;;;;;;;GAeG;AACH;cAJwB,MAAM;mBAAiB,MAAM;wBAAsB,MAAM;8BAA4B,MAAM;EAuTlH"}
|
|
@@ -37,6 +37,9 @@ import { shader_sort_meshlets_by_material } from "./shader_sort_meshlets_by_mate
|
|
|
37
37
|
* @param {number[]} resolution
|
|
38
38
|
* @param {string} [label] used for debug
|
|
39
39
|
* @param {GPUSceneContext} scene
|
|
40
|
+
* @returns {{meshlets: number, draw_commands: number, meshlet_collection: number, meshlet_iterator_command: number}}
|
|
41
|
+
* resource IDs: the material-sorted meshlet array the draws consume, one indirect draw command per
|
|
42
|
+
* material, the HZB-filtered collection with its count header, and the dispatch command over it
|
|
40
43
|
*/
|
|
41
44
|
export function graph_prepare_meshlet_draw_commands_by_material({
|
|
42
45
|
graph,
|
|
@@ -335,6 +338,14 @@ export function graph_prepare_meshlet_draw_commands_by_material({
|
|
|
335
338
|
|
|
336
339
|
return {
|
|
337
340
|
meshlets: sort_meshlets_by_material_data.output,
|
|
338
|
-
draw_commands: draw_commands_data.commands
|
|
341
|
+
draw_commands: draw_commands_data.commands,
|
|
342
|
+
/*
|
|
343
|
+
The HZB-filtered collection *before* material sorting — the one with a `count` header — and
|
|
344
|
+
the indirect dispatch command that iterates it. The sorted buffer above is a bare array whose
|
|
345
|
+
extent only the draw commands know, so a pass that wants one thread per surviving meshlet
|
|
346
|
+
(the AVBOIT occupancy prepass) takes these two instead.
|
|
347
|
+
*/
|
|
348
|
+
meshlet_collection: meshlets,
|
|
349
|
+
meshlet_iterator_command,
|
|
339
350
|
}
|
|
340
351
|
}
|
|
@@ -15,7 +15,7 @@ import { ComputeShader } from "../../shader/ComputeShader.js";
|
|
|
15
15
|
import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
16
16
|
import { GEOMETRY_METADATA_STRUCT } from "../../geometry/GEOMETRY_METADATA_STRUCT.js";
|
|
17
17
|
import { MESH_TRIANGLE_REFERENCE_STRUCT } from "../../geometry/meshlet/MESH_TRIANGLE_REFERENCE_STRUCT.js";
|
|
18
|
-
import { chunk_material_side_should_draw } from "../
|
|
18
|
+
import { chunk_material_side_should_draw } from "../forward/chunk_material_side_should_draw.js";
|
|
19
19
|
|
|
20
20
|
const resources = new ShaderResourceSetDescriptor();
|
|
21
21
|
resources.createGroup()
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FORWARD_VERTEX_SHADER_STRUCT.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/forward/FORWARD_VERTEX_SHADER_STRUCT.js"],"names":[],"mappings":"AAKA,wDAOE;6BAX2B,mCAAmC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { vec2f, vec3f, vec4f } from "
|
|
2
|
-
import { WebGPUStruct } from "
|
|
3
|
-
import { WGSLAttribute } from "
|
|
4
|
-
import { WGSLStructField } from "
|
|
1
|
+
import { vec2f, vec3f, vec4f } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
2
|
+
import { WebGPUStruct } from "../../shader/type/WebGPUStruct.js";
|
|
3
|
+
import { WGSLAttribute } from "../../shader/type/WGSLAttribute.js";
|
|
4
|
+
import { WGSLStructField } from "../../shader/type/WGSLStructField.js";
|
|
5
5
|
|
|
6
6
|
export const FORWARD_VERTEX_SHADER_STRUCT = WebGPUStruct.fromFields(
|
|
7
7
|
WGSLStructField.from('position', vec4f, WGSLAttribute.from('builtin', 'position')),
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SHADING_SCENE_RESOURCE_GROUP.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/forward/SHADING_SCENE_RESOURCE_GROUP.js"],"names":[],"mappings":"AAQA,yEAAgF;8CANlC,wDAAwD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { u32 } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
2
|
+
import { WebGPUArray } from "../../shader/type/WebGPUArray.js";
|
|
3
|
+
import { ShaderResourceGroupDescriptor } from "../../shader/resource/ShaderResourceGroupDescriptor.js";
|
|
4
|
+
import { GEOMETRY_ATTRIBUTE_DATA_TYPE } from "../../geometry/GEOMETRY_ATTRIBUTE_DATA_TYPE.js";
|
|
5
|
+
import { GEOMETRY_METADATA_STRUCT } from "../../geometry/GEOMETRY_METADATA_STRUCT.js";
|
|
6
|
+
import { MESHLET_DEFINITION_STRUCT } from "../../geometry/meshlet/encoding/MESHLET_DEFINITION_STRUCT.js";
|
|
7
|
+
import { MESHLET_METADATA_STRUCT } from "../../geometry/meshlet/encoding/MESHLET_METADATA_STRUCT.js";
|
|
8
|
+
|
|
9
|
+
export const SHADING_SCENE_RESOURCE_GROUP = new ShaderResourceGroupDescriptor();
|
|
10
|
+
|
|
11
|
+
SHADING_SCENE_RESOURCE_GROUP
|
|
12
|
+
.addStorageBuffer("meshlets", WebGPUArray.from(MESHLET_DEFINITION_STRUCT))
|
|
13
|
+
.addStorageBuffer("meshlet_metadata", WebGPUArray.from(MESHLET_METADATA_STRUCT))
|
|
14
|
+
.addStorageBuffer("meshlet_data", GEOMETRY_ATTRIBUTE_DATA_TYPE)
|
|
15
|
+
.addStorageBuffer("scene_database", WebGPUArray.from(u32))
|
|
16
|
+
.addStorageBuffer("geometries", WebGPUArray.from(GEOMETRY_METADATA_STRUCT))
|
|
17
|
+
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export const chunk_forward_shade_standard_fragment_brick4: CodeChunk;
|
|
2
|
-
import { CodeChunk } from "
|
|
2
|
+
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
3
3
|
//# sourceMappingURL=chunk_forward_shade_standard_fragment_brick4.d.ts.map
|
package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_brick4.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_forward_shade_standard_fragment_brick4.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_brick4.js"],"names":[],"mappings":"AA4BA,qEAwJC;0BA3JyB,oCAAoC"}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import { chunk_shade_standard_material_direct } from "
|
|
2
|
-
import { chunk_decode_tangent_normal } from "
|
|
3
|
-
import { INDIRECT_LIGHT_INTENSITY } from "
|
|
1
|
+
import { chunk_shade_standard_material_direct } from "../../deferred/chunk_shade_standard_material_direct.js";
|
|
2
|
+
import { chunk_decode_tangent_normal } from "../../shader/chunk/geometry/normal/chunk_decode_tangent_normal.js";
|
|
3
|
+
import { INDIRECT_LIGHT_INTENSITY } from "../../deferred/INDIRECT_LIGHT_INTENSITY.js";
|
|
4
4
|
import {
|
|
5
5
|
chunk_brick4_sample_forward_indirect
|
|
6
|
-
} from "
|
|
7
|
-
import { BSDF_ROUGHNESS_MINIMUM } from "
|
|
8
|
-
import { chunk_compute_specular_occlusion } from "
|
|
9
|
-
import { chunk_F_Hauber } from "
|
|
10
|
-
import { chunk_get_view_space_depth } from "
|
|
11
|
-
import { chunk_mat4_extract_position } from "
|
|
6
|
+
} from "../../global_illumination/brick4/gpu/draw/chunk_brick4_sample_forward_indirect.js";
|
|
7
|
+
import { BSDF_ROUGHNESS_MINIMUM } from "../../light/environment/DEFINES.js";
|
|
8
|
+
import { chunk_compute_specular_occlusion } from "../../shader/chunk/brdf/chunk_compute_specular_occlusion.js";
|
|
9
|
+
import { chunk_F_Hauber } from "../../shader/chunk/brdf/fresnel/chunk_F_Hauber.js";
|
|
10
|
+
import { chunk_get_view_space_depth } from "../../shader/chunk/depth/chunk_get_view_space_depth.js";
|
|
11
|
+
import { chunk_mat4_extract_position } from "../../shader/chunk/geometry/mat4/chunk_mat4_extract_position.js";
|
|
12
12
|
import {
|
|
13
13
|
chunk_anti_alias_roughness_kaplanyan
|
|
14
|
-
} from "
|
|
14
|
+
} from "../../shader/chunk/geometry/normal/chunk_anti_alias_roughness_kaplanyan.js";
|
|
15
15
|
import {
|
|
16
16
|
chunk_build_orthonormal_matrix_nt
|
|
17
|
-
} from "
|
|
17
|
+
} from "../../shader/chunk/geometry/normal/chunk_build_orthonormal_matrix_nt.js";
|
|
18
18
|
import {
|
|
19
19
|
chunk_compute_indirect_specular
|
|
20
|
-
} from "
|
|
20
|
+
} from "../../shader/chunk/material/chunk_compute_indirect_specular.js";
|
|
21
21
|
import {
|
|
22
22
|
chunk_dielectric_specular_color
|
|
23
|
-
} from "
|
|
24
|
-
import { GEOMETRIC_SHADING_INFO_STRUCT } from "
|
|
25
|
-
import { MATERIAL_SHADING_INFO_STRUCT } from "
|
|
26
|
-
import { CodeChunk } from "
|
|
23
|
+
} from "../../shader/chunk/material/chunk_dielectric_specular_color.js";
|
|
24
|
+
import { GEOMETRIC_SHADING_INFO_STRUCT } from "../../shader/chunk/material/GEOMETRIC_SHADING_INFO_STRUCT.js";
|
|
25
|
+
import { MATERIAL_SHADING_INFO_STRUCT } from "../../shader/chunk/material/MATERIAL_SHADING_INFO_STRUCT.js";
|
|
26
|
+
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
27
27
|
import { FORWARD_VERTEX_SHADER_STRUCT } from "./FORWARD_VERTEX_SHADER_STRUCT.js";
|
|
28
28
|
|
|
29
29
|
export const chunk_forward_shade_standard_fragment_brick4 = CodeChunk.from(
|
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
* Uses environment map sampling for indirect lighting instead of Brick4 probes.
|
|
4
4
|
*/
|
|
5
5
|
export const chunk_forward_shade_standard_fragment_ibl: CodeChunk;
|
|
6
|
-
import { CodeChunk } from "
|
|
6
|
+
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
7
7
|
//# sourceMappingURL=chunk_forward_shade_standard_fragment_ibl.d.ts.map
|
package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_ibl.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_forward_shade_standard_fragment_ibl.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_ibl.js"],"names":[],"mappings":"AA2BA;;;GAGG;AACH,kEA6IC;0BApJyB,oCAAoC"}
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { chunk_shade_standard_material_direct } from "
|
|
2
|
-
import { chunk_decode_tangent_normal } from "
|
|
3
|
-
import { chunk_get_ibl_irradiance } from "
|
|
4
|
-
import { chunk_get_ibl_radiance } from "
|
|
5
|
-
import { INDIRECT_LIGHT_INTENSITY } from "
|
|
6
|
-
import { BSDF_ROUGHNESS_MINIMUM } from "
|
|
7
|
-
import { chunk_compute_specular_occlusion } from "
|
|
8
|
-
import { chunk_F_Hauber } from "
|
|
9
|
-
import { chunk_get_view_space_depth } from "
|
|
10
|
-
import { chunk_mat4_extract_position } from "
|
|
1
|
+
import { chunk_shade_standard_material_direct } from "../../deferred/chunk_shade_standard_material_direct.js";
|
|
2
|
+
import { chunk_decode_tangent_normal } from "../../shader/chunk/geometry/normal/chunk_decode_tangent_normal.js";
|
|
3
|
+
import { chunk_get_ibl_irradiance } from "../../deferred/indirect/chunk_get_ibl_irradiance.js";
|
|
4
|
+
import { chunk_get_ibl_radiance } from "../../deferred/indirect/chunk_get_ibl_radiance.js";
|
|
5
|
+
import { INDIRECT_LIGHT_INTENSITY } from "../../deferred/INDIRECT_LIGHT_INTENSITY.js";
|
|
6
|
+
import { BSDF_ROUGHNESS_MINIMUM } from "../../light/environment/DEFINES.js";
|
|
7
|
+
import { chunk_compute_specular_occlusion } from "../../shader/chunk/brdf/chunk_compute_specular_occlusion.js";
|
|
8
|
+
import { chunk_F_Hauber } from "../../shader/chunk/brdf/fresnel/chunk_F_Hauber.js";
|
|
9
|
+
import { chunk_get_view_space_depth } from "../../shader/chunk/depth/chunk_get_view_space_depth.js";
|
|
10
|
+
import { chunk_mat4_extract_position } from "../../shader/chunk/geometry/mat4/chunk_mat4_extract_position.js";
|
|
11
11
|
import {
|
|
12
12
|
chunk_anti_alias_roughness_kaplanyan
|
|
13
|
-
} from "
|
|
13
|
+
} from "../../shader/chunk/geometry/normal/chunk_anti_alias_roughness_kaplanyan.js";
|
|
14
14
|
import {
|
|
15
15
|
chunk_build_orthonormal_matrix_nt
|
|
16
|
-
} from "
|
|
16
|
+
} from "../../shader/chunk/geometry/normal/chunk_build_orthonormal_matrix_nt.js";
|
|
17
17
|
import {
|
|
18
18
|
chunk_compute_indirect_specular
|
|
19
|
-
} from "
|
|
19
|
+
} from "../../shader/chunk/material/chunk_compute_indirect_specular.js";
|
|
20
20
|
import {
|
|
21
21
|
chunk_dielectric_specular_color
|
|
22
|
-
} from "
|
|
23
|
-
import { GEOMETRIC_SHADING_INFO_STRUCT } from "
|
|
24
|
-
import { MATERIAL_SHADING_INFO_STRUCT } from "
|
|
25
|
-
import { CodeChunk } from "
|
|
22
|
+
} from "../../shader/chunk/material/chunk_dielectric_specular_color.js";
|
|
23
|
+
import { GEOMETRIC_SHADING_INFO_STRUCT } from "../../shader/chunk/material/GEOMETRIC_SHADING_INFO_STRUCT.js";
|
|
24
|
+
import { MATERIAL_SHADING_INFO_STRUCT } from "../../shader/chunk/material/MATERIAL_SHADING_INFO_STRUCT.js";
|
|
25
|
+
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
26
26
|
import { FORWARD_VERTEX_SHADER_STRUCT } from "./FORWARD_VERTEX_SHADER_STRUCT.js";
|
|
27
27
|
|
|
28
28
|
/**
|
package/src/shade/renderer/rasterize/{native/oit → forward}/chunk_material_side_should_draw.d.ts
RENAMED
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
* @type {CodeChunk}
|
|
5
5
|
*/
|
|
6
6
|
export const chunk_material_side_should_draw: CodeChunk;
|
|
7
|
-
import { CodeChunk } from "
|
|
7
|
+
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
8
8
|
//# sourceMappingURL=chunk_material_side_should_draw.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_material_side_should_draw.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/forward/chunk_material_side_should_draw.js"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,8CAFU,SAAS,CAmBlB;0BAxByB,oCAAoC"}
|
package/src/shade/renderer/rasterize/{native/oit → forward}/chunk_material_side_should_draw.js
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ShadeDrawSide } from "
|
|
2
|
-
import { CodeChunk } from "
|
|
1
|
+
import { ShadeDrawSide } from "../../material/ShadeDrawSide.js";
|
|
2
|
+
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* NOTE: draw_side is a {@link ShadeDrawSide} enum value, not a bitmask.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vertex_shader_chunk.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/forward/vertex_shader_chunk.js"],"names":[],"mappings":"AAUA,4CAoDE;0BAvDwB,oCAAoC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { chunk_scene_database_access } from "
|
|
1
|
+
import { chunk_scene_database_access } from "../../scene/chunk_scene_database_access.js";
|
|
2
2
|
import {
|
|
3
3
|
chunk_compute_normal_matrix_from_m4
|
|
4
|
-
} from "
|
|
4
|
+
} from "../../shader/chunk/geometry/mat4/chunk_compute_normal_matrix_from_m4.js";
|
|
5
5
|
import {
|
|
6
6
|
chunk_read_meshlet_vertex_by_draw_index
|
|
7
|
-
} from "
|
|
8
|
-
import { CodeChunk } from "
|
|
7
|
+
} from "../../shader/chunk/geometry/meshlet/chunk_read_meshlet_vertex_by_draw_index.js";
|
|
8
|
+
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
9
9
|
import { FORWARD_VERTEX_SHADER_STRUCT } from "./FORWARD_VERTEX_SHADER_STRUCT.js";
|
|
10
10
|
|
|
11
11
|
export const vertex_shader_chunk = CodeChunk.from(
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-renderer settings of the AVBOIT transparency mode, held on `Renderer.avboit` the way the
|
|
3
|
+
* other sub-systems hold theirs (`dof`, `nss`, `path_tracer`). Read every frame by the orchestrator
|
|
4
|
+
* and carried into the warp header, so the splat and the draw see the same value for one frame.
|
|
5
|
+
*
|
|
6
|
+
* The compile-time tunables (slice counts, downscale, curve, bias) stay in `AVBOIT_CONSTANTS.js`;
|
|
7
|
+
* what lives here is the one thing that changes what a material *means*, which has to be a
|
|
8
|
+
* runtime decision the page can flip.
|
|
9
|
+
*/
|
|
10
|
+
export class AVBOITSettings {
|
|
11
|
+
/**
|
|
12
|
+
* Filter the light a transmissive surface lets through by its base colour, per channel, with
|
|
13
|
+
* `transmission_factor` as the weight — glTF's transmission semantics, where a red base colour
|
|
14
|
+
* on `transmission = 1` is red glass.
|
|
15
|
+
*
|
|
16
|
+
* Off by default because it is not what the rest of the engine does: the material model has no
|
|
17
|
+
* transmission colour today, the forward shader and the path tracer treat transmitted light as
|
|
18
|
+
* untinted, and the contract promises that flipping `transparency_mode` does not change what an
|
|
19
|
+
* asset looks like. On, the RGB extinction path does what the deck built it for; off, a
|
|
20
|
+
* transmissive surface lands where MBOIT and the tracer put it, and the per-channel plumbing
|
|
21
|
+
* costs nothing while it waits for a real transmission colour on the material.
|
|
22
|
+
*
|
|
23
|
+
* @type {boolean}
|
|
24
|
+
*/
|
|
25
|
+
transmission_tint_from_base_color: boolean;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=AVBOITSettings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AVBOITSettings.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/native/avboit/AVBOITSettings.js"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH;IAEI;;;;;;;;;;;;;OAaG;IACH,mCAFU,OAAO,CAEyB;CAC7C"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-renderer settings of the AVBOIT transparency mode, held on `Renderer.avboit` the way the
|
|
3
|
+
* other sub-systems hold theirs (`dof`, `nss`, `path_tracer`). Read every frame by the orchestrator
|
|
4
|
+
* and carried into the warp header, so the splat and the draw see the same value for one frame.
|
|
5
|
+
*
|
|
6
|
+
* The compile-time tunables (slice counts, downscale, curve, bias) stay in `AVBOIT_CONSTANTS.js`;
|
|
7
|
+
* what lives here is the one thing that changes what a material *means*, which has to be a
|
|
8
|
+
* runtime decision the page can flip.
|
|
9
|
+
*/
|
|
10
|
+
export class AVBOITSettings {
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Filter the light a transmissive surface lets through by its base colour, per channel, with
|
|
14
|
+
* `transmission_factor` as the weight — glTF's transmission semantics, where a red base colour
|
|
15
|
+
* on `transmission = 1` is red glass.
|
|
16
|
+
*
|
|
17
|
+
* Off by default because it is not what the rest of the engine does: the material model has no
|
|
18
|
+
* transmission colour today, the forward shader and the path tracer treat transmitted light as
|
|
19
|
+
* untinted, and the contract promises that flipping `transparency_mode` does not change what an
|
|
20
|
+
* asset looks like. On, the RGB extinction path does what the deck built it for; off, a
|
|
21
|
+
* transmissive surface lands where MBOIT and the tracer put it, and the per-channel plumbing
|
|
22
|
+
* costs nothing while it waits for a real transmission colour on the material.
|
|
23
|
+
*
|
|
24
|
+
* @type {boolean}
|
|
25
|
+
*/
|
|
26
|
+
transmission_tint_from_base_color = false;
|
|
27
|
+
}
|