@woosh/meep-engine 3.11.1 → 3.11.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bundle-worker-terrain.js +1 -1
- package/package.json +1 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +294 -290
- package/src/engine/graphics3/ParticipatingMedia.d.ts +111 -0
- package/src/engine/graphics3/ParticipatingMedia.d.ts.map +1 -0
- package/src/engine/graphics3/ParticipatingMedia.js +203 -0
- package/src/engine/graphics3/ParticipatingMediaSerializationAdapter.d.ts +34 -0
- package/src/engine/graphics3/ParticipatingMediaSerializationAdapter.d.ts.map +1 -0
- package/src/engine/graphics3/ParticipatingMediaSerializationAdapter.js +73 -0
- package/src/engine/graphics3/ParticipatingMediaSystem3.d.ts +87 -0
- package/src/engine/graphics3/ParticipatingMediaSystem3.d.ts.map +1 -0
- package/src/engine/graphics3/ParticipatingMediaSystem3.js +184 -0
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.d.ts +16 -2
- package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.d.ts.map +1 -1
- package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.js +28 -4
- package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.d.ts +1 -1
- package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.d.ts.map +1 -1
- package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.js +5 -2
- package/src/shade/device/IMMEDIATE_DATA_PLAN_2026_08_28.md +564 -451
- package/src/shade/device/ShadeGPUCommandContext.d.ts +18 -2
- package/src/shade/device/ShadeGPUCommandContext.d.ts.map +1 -1
- package/src/shade/device/ShadeGPUCommandContext.js +994 -940
- package/src/shade/device/immediate_data_supported.d.ts +33 -0
- package/src/shade/device/immediate_data_supported.d.ts.map +1 -0
- package/src/shade/device/immediate_data_supported.js +53 -0
- package/src/shade/device/mock/SoftwareGPUCommandEncoder.d.ts +18 -0
- package/src/shade/device/mock/SoftwareGPUCommandEncoder.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUCommandEncoder.js +24 -0
- package/src/shade/device/mock/SoftwareGPUComputePassEncoder.d.ts +7 -0
- package/src/shade/device/mock/SoftwareGPUComputePassEncoder.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUComputePassEncoder.js +49 -1
- package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUDevice.js +20 -2
- package/src/shade/device/mock/SoftwareGPUImmediateData.d.ts +65 -0
- package/src/shade/device/mock/SoftwareGPUImmediateData.d.ts.map +1 -0
- package/src/shade/device/mock/SoftwareGPUImmediateData.js +160 -0
- package/src/shade/device/mock/SoftwareGPURenderPassEncoder.d.ts +7 -0
- package/src/shade/device/mock/SoftwareGPURenderPassEncoder.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPURenderPassEncoder.js +50 -0
- package/src/shade/device/mock/pipeline_immediate_size.d.ts +11 -0
- package/src/shade/device/mock/pipeline_immediate_size.d.ts.map +1 -0
- package/src/shade/device/mock/pipeline_immediate_size.js +18 -0
- package/src/shade/device/pipeline/PipelineLayoutManager.d.ts.map +1 -1
- package/src/shade/device/pipeline/PipelineLayoutManager.js +1 -0
- package/src/shade/playground/volumetrics_froxel/README.md +104 -1
- package/src/shade/playground/volumetrics_froxel/index.html +20 -1
- package/src/shade/playground/volumetrics_froxel/main.d.ts.map +1 -1
- package/src/shade/playground/volumetrics_froxel/main.js +298 -0
- package/src/shade/playground/volumetrics_froxel/measure.d.ts +119 -0
- package/src/shade/playground/volumetrics_froxel/measure.d.ts.map +1 -0
- package/src/shade/playground/volumetrics_froxel/measure.js +559 -0
- package/src/shade/renderer/GraphicsContext.d.ts +9 -2
- package/src/shade/renderer/GraphicsContext.d.ts.map +1 -1
- package/src/shade/renderer/GraphicsContext.js +13 -1
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +22 -18
- package/src/shade/renderer/atmosphere/GPUSky.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/GPUSky.js +145 -142
- package/src/shade/renderer/atmosphere/MULTISCATTER_LUT_CONFIG.d.ts +34 -0
- package/src/shade/renderer/atmosphere/MULTISCATTER_LUT_CONFIG.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/MULTISCATTER_LUT_CONFIG.js +36 -0
- package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.d.ts +20 -0
- package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.js +25 -0
- package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.d.ts +14 -1
- package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_get_multiscatter_values.js +163 -177
- package/src/shade/renderer/atmosphere/chunk_multiscatter_sample_direction.d.ts +20 -0
- package/src/shade/renderer/atmosphere/chunk_multiscatter_sample_direction.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/chunk_multiscatter_sample_direction.js +46 -0
- package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.d.ts +11 -1
- package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_sample_multiscatter_lut.js +57 -27
- package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.d.ts +19 -1
- package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_sample_transmittance_lut.js +69 -33
- package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.d.ts +13 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/chunk_sky_lut_compute_uv.js +35 -35
- package/src/shade/renderer/atmosphere/chunk_sky_lut_params.d.ts +13 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_params.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_params.js +38 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_texel_to_unit.d.ts +17 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_texel_to_unit.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_texel_to_unit.js +29 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_uv.d.ts +21 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_uv.d.ts.map +1 -0
- package/src/shade/renderer/atmosphere/chunk_sky_lut_uv.js +42 -0
- package/src/shade/renderer/atmosphere/shader_multiscatter_lut.d.ts +2 -2
- package/src/shade/renderer/atmosphere/shader_multiscatter_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/shader_multiscatter_lut.js +165 -84
- package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.js +215 -204
- package/src/shade/renderer/atmosphere/shader_transmittance_lut.d.ts.map +1 -1
- package/src/shade/renderer/atmosphere/shader_transmittance_lut.js +79 -67
- package/src/shade/renderer/light/cluster/graph_assign_clsuters.d.ts.map +1 -1
- package/src/shade/renderer/light/cluster/graph_assign_clsuters.js +6 -2
- package/src/shade/renderer/postprocess/gtao/GTAO.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/GTAO.js +4 -0
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- 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 +341 -345
- package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.d.ts +0 -2
- package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.js +58 -57
- package/src/shade/renderer/rasterize/expand/mesh/graph_expand_meshes_to_meshlets.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/mesh/graph_expand_meshes_to_meshlets.js +7 -3
- package/src/shade/renderer/rasterize/fast/graph_extract_meshes_from_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/fast/graph_extract_meshes_from_bucket.js +77 -81
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.js +5 -1
- package/src/shade/renderer/shader/ComputeShader.d.ts.map +1 -1
- package/src/shade/renderer/shader/ComputeShader.js +6 -2
- package/src/shade/renderer/shader/ImageShader.d.ts.map +1 -1
- package/src/shade/renderer/shader/ImageShader.js +4 -1
- package/src/shade/renderer/shader/ShaderDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/ShaderDescriptor.js +26 -0
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.d.ts +18 -0
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.js +32 -0
- package/src/shade/renderer/shader/chunk/atmosphere/PLANET_CENTER_DECLARATION.d.ts +7 -0
- package/src/shade/renderer/shader/chunk/atmosphere/PLANET_CENTER_DECLARATION.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/atmosphere/PLANET_CENTER_DECLARATION.js +17 -6
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.d.ts +21 -0
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.js +69 -0
- package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_contains_aabb3.d.ts +9 -0
- package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_contains_aabb3.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_contains_aabb3.js +22 -0
- package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_from_transformed_corners.d.ts +16 -0
- package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_from_transformed_corners.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_from_transformed_corners.js +41 -0
- package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_m4.d.ts +11 -0
- package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_m4.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_m4.js +15 -19
- package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_plane_matrix.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_plane_matrix.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/frustum/chunk_frustum_transform_plane_matrix.js +44 -0
- package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_octahedral_unit_decode.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/octahedron/chunk_uv_octahedral_unit_decode.js +1 -4
- package/src/shade/renderer/shader/compiler/CodeChunk.d.ts +7 -1
- package/src/shade/renderer/shader/compiler/CodeChunk.d.ts.map +1 -1
- package/src/shade/renderer/shader/compiler/CodeChunk.js +37 -2
- package/src/shade/renderer/shader/graph/compute/compute_binding_read_names.d.ts.map +1 -1
- package/src/shade/renderer/shader/graph/compute/compute_binding_read_names.js +6 -0
- package/src/shade/renderer/shader/graph/compute/graph_compute_indirect_pass.js +1 -1
- package/src/shade/renderer/shader/graph/compute/graph_compute_pass.js +1 -1
- package/src/shade/renderer/shader/graph/graph_image_pass.js +1 -1
- package/src/shade/renderer/shader/graph/graph_prepare_bindings.d.ts.map +1 -1
- package/src/shade/renderer/shader/graph/graph_prepare_bindings.js +7 -0
- package/src/shade/renderer/shader/graph/graph_prepare_pass_input_data.d.ts +3 -1
- package/src/shade/renderer/shader/graph/graph_prepare_pass_input_data.d.ts.map +1 -1
- package/src/shade/renderer/shader/graph/graph_prepare_pass_input_data.js +12 -1
- package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/pass/RenderPassDescriptor.js +1 -0
- package/src/shade/renderer/shader/resource/IMMEDIATE_DATA.d.ts +21 -0
- package/src/shade/renderer/shader/resource/IMMEDIATE_DATA.d.ts.map +1 -0
- package/src/shade/renderer/shader/resource/IMMEDIATE_DATA.js +21 -0
- package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts +59 -1
- package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.js +195 -2
- package/src/shade/renderer/shader/type/type_has_arrays.d.ts +14 -0
- package/src/shade/renderer/shader/type/type_has_arrays.d.ts.map +1 -0
- package/src/shade/renderer/shader/type/type_has_arrays.js +33 -0
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_point2.d.ts +14 -13
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_point2.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_point2.js +133 -129
- package/src/shade/renderer/view/GPUViewSkyContext.d.ts.map +1 -1
- package/src/shade/renderer/view/GPUViewSkyContext.js +169 -173
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +480 -315
- package/src/shade/renderer/volumetrics/NOTES.md +887 -8
- package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts +5 -0
- package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.js +21 -2
- package/src/shade/renderer/volumetrics/SceneVolumetrics.d.ts +26 -0
- package/src/shade/renderer/volumetrics/SceneVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/SceneVolumetrics.js +64 -21
- package/src/shade/renderer/volumetrics/VOLUMETRICS_METADATA_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/VOLUMETRICS_METADATA_STRUCT.js +84 -28
- package/src/shade/renderer/volumetrics/VOLUMETRICS_SUN_SHADOW_RESOLUTION.d.ts +98 -0
- package/src/shade/renderer/volumetrics/VOLUMETRICS_SUN_SHADOW_RESOLUTION.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/VOLUMETRICS_SUN_SHADOW_RESOLUTION.js +111 -0
- package/src/shade/renderer/volumetrics/build_volumetrics_sun_shadow_transform.d.ts +84 -0
- package/src/shade/renderer/volumetrics/build_volumetrics_sun_shadow_transform.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/build_volumetrics_sun_shadow_transform.js +252 -0
- package/src/shade/renderer/volumetrics/chunk_integrate_optical_depth.js +75 -75
- package/src/shade/renderer/volumetrics/chunk_volumetrics_local_light_shadow.d.ts +43 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_local_light_shadow.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_local_light_shadow.js +145 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sample_froxel_extinction.d.ts +20 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sample_froxel_extinction.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sample_froxel_extinction.js +48 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sun_optical_depth.d.ts +38 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sun_optical_depth.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sun_optical_depth.js +130 -0
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts +18 -3
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +193 -70
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts +16 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.js +83 -15
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.js +29 -18
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_scattering_lut.js +260 -260
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_sun_shadow_volume.d.ts +58 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_sun_shadow_volume.d.ts.map +1 -0
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_sun_shadow_volume.js +290 -0
- package/src/shade/wgsl/emulator/CPUBitmapData.d.ts +25 -0
- package/src/shade/wgsl/emulator/CPUBitmapData.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/CPUBitmapData.js +33 -0
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +2228 -2215
- package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.js +210 -2
- package/src/shade/wgsl/emulator/cpu_texture_gather.d.ts +69 -0
- package/src/shade/wgsl/emulator/cpu_texture_gather.d.ts.map +1 -0
- package/src/shade/wgsl/emulator/cpu_texture_gather.js +148 -0
- package/src/shade/wgsl/emulator/cpu_texture_sample.d.ts +16 -0
- package/src/shade/wgsl/emulator/cpu_texture_sample.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/cpu_texture_sample.js +176 -172
- package/src/shade/renderer/volumetrics/VOLUMETRICS_WORKGROUP_RESOLUTION.d.ts +0 -2
- package/src/shade/renderer/volumetrics/VOLUMETRICS_WORKGROUP_RESOLUTION.d.ts.map +0 -1
- package/src/shade/renderer/volumetrics/VOLUMETRICS_WORKGROUP_RESOLUTION.js +0 -1
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
export const PUSH_CONSTANTS: WebGPUStruct;
|
|
2
1
|
export const shader_read_out_bucket: ComputeShader;
|
|
3
|
-
import { WebGPUStruct } from "../../shader/type/WebGPUStruct.js";
|
|
4
2
|
import { ComputeShader } from "../../shader/ComputeShader.js";
|
|
5
3
|
//# sourceMappingURL=shader_read_out_bucket.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_read_out_bucket.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/bucket/shader_read_out_bucket.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_read_out_bucket.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/bucket/shader_read_out_bucket.js"],"names":[],"mappings":"AAqDA,mDAKE;8BArD4B,+BAA+B"}
|
|
@@ -1,58 +1,59 @@
|
|
|
1
|
-
import { u32 } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
2
|
-
import { WebGPUStruct } from "../../shader/type/WebGPUStruct.js";
|
|
3
|
-
import { COLLECTION_U32_STRUCT_READ } from "../../gpu_primitive/COLLECTION_U32_STRUCT_READ.js";
|
|
4
|
-
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
5
|
-
import { COMPUTE_SHADER_DEFAULT_GROUP_SIZE } from "../../shader/COMPUTE_SHADER_DEFAULT_GROUP_SIZE.js";
|
|
6
|
-
import { ComputeShader } from "../../shader/ComputeShader.js";
|
|
7
|
-
import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
8
|
-
import {
|
|
9
|
-
RASTERIZATION_BUCKET_SORT_OUTPUT_STRUCT_READ
|
|
10
|
-
} from "../expand/bucket/RASTERIZATION_BUCKET_SORT_OUTPUT_STRUCT_READ.js";
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const resources = new ShaderResourceSetDescriptor();
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
bucket_id: u32,
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
.addStorageBuffer("
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
let
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
1
|
+
import { u32 } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
2
|
+
import { WebGPUStruct } from "../../shader/type/WebGPUStruct.js";
|
|
3
|
+
import { COLLECTION_U32_STRUCT_READ } from "../../gpu_primitive/COLLECTION_U32_STRUCT_READ.js";
|
|
4
|
+
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
5
|
+
import { COMPUTE_SHADER_DEFAULT_GROUP_SIZE } from "../../shader/COMPUTE_SHADER_DEFAULT_GROUP_SIZE.js";
|
|
6
|
+
import { ComputeShader } from "../../shader/ComputeShader.js";
|
|
7
|
+
import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
8
|
+
import {
|
|
9
|
+
RASTERIZATION_BUCKET_SORT_OUTPUT_STRUCT_READ
|
|
10
|
+
} from "../expand/bucket/RASTERIZATION_BUCKET_SORT_OUTPUT_STRUCT_READ.js";
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
const resources = new ShaderResourceSetDescriptor();
|
|
14
|
+
|
|
15
|
+
const PUSH_CONSTANTS = WebGPUStruct.from({
|
|
16
|
+
bucket_id: u32,
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
// per-dispatch, four bytes, read-only: immediate data rather than a pooled buffer, a staging copy
|
|
20
|
+
// and a bind group of its own
|
|
21
|
+
resources.setImmediate("settings", PUSH_CONSTANTS);
|
|
22
|
+
|
|
23
|
+
resources.createGroup()
|
|
24
|
+
.addStorageBuffer("input", RASTERIZATION_BUCKET_SORT_OUTPUT_STRUCT_READ)
|
|
25
|
+
.addStorageBuffer("output", COLLECTION_U32_STRUCT_READ, true)
|
|
26
|
+
|
|
27
|
+
const body = CodeChunk.from(
|
|
28
|
+
//language=WGSL
|
|
29
|
+
`
|
|
30
|
+
@compute @workgroup_size(${COMPUTE_SHADER_DEFAULT_GROUP_SIZE})
|
|
31
|
+
fn main(@builtin(global_invocation_id) global_id : vec3<u32>){
|
|
32
|
+
|
|
33
|
+
let input_index = global_id.x;
|
|
34
|
+
|
|
35
|
+
let bucket_header = input.headers[settings.bucket_id];
|
|
36
|
+
let bucket_size = bucket_header.count;
|
|
37
|
+
|
|
38
|
+
if(input_index == 0){
|
|
39
|
+
output.count = bucket_size;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if(input_index >= bucket_size){
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// just copy
|
|
47
|
+
let mesh_index = input.elements[input_index + bucket_header.offset];
|
|
48
|
+
|
|
49
|
+
output.elements[input_index] = mesh_index;
|
|
50
|
+
}
|
|
51
|
+
`
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
export const shader_read_out_bucket = ComputeShader.from({
|
|
55
|
+
label: 'Read out bucket',
|
|
56
|
+
resources,
|
|
57
|
+
body,
|
|
58
|
+
group_size: [COMPUTE_SHADER_DEFAULT_GROUP_SIZE]
|
|
58
59
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph_expand_meshes_to_meshlets.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/expand/mesh/graph_expand_meshes_to_meshlets.js"],"names":[],"mappings":"AAiBA;;;;;;;;GAQG;AACH,
|
|
1
|
+
{"version":3,"file":"graph_expand_meshes_to_meshlets.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/expand/mesh/graph_expand_meshes_to_meshlets.js"],"names":[],"mappings":"AAiBA;;;;;;;;GAQG;AACH,gJA+IC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { assert } from "../../../../../core/assert.js";
|
|
2
2
|
import { BufferResourceDescriptor } from "../../../../device/graph/BufferResourceDescriptor.js";
|
|
3
|
-
import { graph_prefix_scan_csdldf } from "../../../gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdldf.js";
|
|
4
|
-
import { COMPUTE_SHADER_DEFAULT_GROUP_SIZE } from "../../../shader/COMPUTE_SHADER_DEFAULT_GROUP_SIZE.js";
|
|
5
|
-
import { graph_compute_pass } from "../../../shader/graph/compute/graph_compute_pass.js";
|
|
6
3
|
import {
|
|
7
4
|
graph_build_indirect_dispatch_command,
|
|
8
5
|
INDIRECT_COMPUTE_COMMAND_DESCRIPTOR
|
|
9
6
|
} from "../../../gpu_primitive/indirect/IndirectComputeCommandBuildPass.js";
|
|
7
|
+
import { graph_prefix_scan_csdldf } from "../../../gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdldf.js";
|
|
8
|
+
import { COMPUTE_SHADER_DEFAULT_GROUP_SIZE } from "../../../shader/COMPUTE_SHADER_DEFAULT_GROUP_SIZE.js";
|
|
9
|
+
import { graph_compute_pass } from "../../../shader/graph/compute/graph_compute_pass.js";
|
|
10
10
|
|
|
11
11
|
import { RasterizationCollectionType } from "../RasterizationCollectionType.js";
|
|
12
12
|
import { shader_increment_count_by_prefix_sum } from "./shader_increment_count_by_prefix_sum.js";
|
|
@@ -36,6 +36,8 @@ export function graph_expand_meshes_to_meshlets({
|
|
|
36
36
|
assert.defined(limits, 'limits');
|
|
37
37
|
assert.defined(scene, 'scene');
|
|
38
38
|
|
|
39
|
+
graph.push_scope("expand meshes to meshlets");
|
|
40
|
+
|
|
39
41
|
const stage_1_command = graph_build_indirect_dispatch_command(graph, input_meshes, COMPUTE_SHADER_DEFAULT_GROUP_SIZE);
|
|
40
42
|
|
|
41
43
|
const count_meshlets_data = {};
|
|
@@ -162,5 +164,7 @@ export function graph_expand_meshes_to_meshlets({
|
|
|
162
164
|
}
|
|
163
165
|
});
|
|
164
166
|
|
|
167
|
+
graph.pop_scope();
|
|
168
|
+
|
|
165
169
|
return output;
|
|
166
170
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph_extract_meshes_from_bucket.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/fast/graph_extract_meshes_from_bucket.js"],"names":[],"mappings":"AAUA;;;;;;;;;GASG;AACH,sGAFa,MAAM,
|
|
1
|
+
{"version":3,"file":"graph_extract_meshes_from_bucket.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/fast/graph_extract_meshes_from_bucket.js"],"names":[],"mappings":"AAUA;;;;;;;;;GASG;AACH,sGAFa,MAAM,CA2DlB"}
|
|
@@ -1,82 +1,78 @@
|
|
|
1
|
-
import { BufferResourceDescriptor } from "../../../device/graph/BufferResourceDescriptor.js";
|
|
2
|
-
import { u32 } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
3
|
-
import { COMPUTE_SHADER_DEFAULT_GROUP_SIZE } from "../../shader/COMPUTE_SHADER_DEFAULT_GROUP_SIZE.js";
|
|
4
|
-
import {
|
|
5
|
-
build_indirect_compute_dispatch_command,
|
|
6
|
-
INDIRECT_COMPUTE_COMMAND_DESCRIPTOR
|
|
7
|
-
} from "../../gpu_primitive/indirect/IndirectComputeCommandBuildPass.js";
|
|
8
|
-
import { RasterizationCollectionType } from "../expand/RasterizationCollectionType.js";
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Extract a single bucket's mesh indices out of a bucket-sorted mesh buffer.
|
|
13
|
-
* Produces a flat {@link COLLECTION_U32_STRUCT_READ} buffer.
|
|
14
|
-
*
|
|
15
|
-
* @param {FrameGraph} graph
|
|
16
|
-
* @param {number} buckets bucket-sorted meshes resource ID
|
|
17
|
-
* @param {number} bucket_id
|
|
18
|
-
* @param {GPUCollectionLimits} limits
|
|
19
|
-
* @returns {number} resource ID of extracted mesh list
|
|
20
|
-
*/
|
|
21
|
-
export function graph_extract_meshes_from_bucket({
|
|
22
|
-
graph,
|
|
23
|
-
buckets,
|
|
24
|
-
bucket_id,
|
|
25
|
-
limits,
|
|
26
|
-
}) {
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
*
|
|
30
|
-
* @param data
|
|
31
|
-
* @param {FramePassResources} resources
|
|
32
|
-
* @param {GraphicsExecutionContext} context
|
|
33
|
-
*/
|
|
34
|
-
function execute(data, resources, context) {
|
|
35
|
-
const encoder = context.encoder;
|
|
36
|
-
|
|
37
|
-
const buckets = resources.get(data.buckets);
|
|
38
|
-
const output = resources.get(data.output);
|
|
39
|
-
const command = resources.get(data.command);
|
|
40
|
-
|
|
41
|
-
const bucket_id = data.bucket_id;
|
|
42
|
-
|
|
43
|
-
build_indirect_compute_dispatch_command(
|
|
44
|
-
COMPUTE_SHADER_DEFAULT_GROUP_SIZE,
|
|
45
|
-
encoder,
|
|
46
|
-
buckets,
|
|
47
|
-
// the bucketed buffer header consists of pairs of u32 values (count,offset)
|
|
48
|
-
bucket_id * (u32.size * 2),
|
|
49
|
-
command,
|
|
50
|
-
0
|
|
51
|
-
);
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
0, 16 // clear count
|
|
79
|
-
));
|
|
80
|
-
|
|
81
|
-
return data.output;
|
|
1
|
+
import { BufferResourceDescriptor } from "../../../device/graph/BufferResourceDescriptor.js";
|
|
2
|
+
import { u32 } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
3
|
+
import { COMPUTE_SHADER_DEFAULT_GROUP_SIZE } from "../../shader/COMPUTE_SHADER_DEFAULT_GROUP_SIZE.js";
|
|
4
|
+
import {
|
|
5
|
+
build_indirect_compute_dispatch_command,
|
|
6
|
+
INDIRECT_COMPUTE_COMMAND_DESCRIPTOR
|
|
7
|
+
} from "../../gpu_primitive/indirect/IndirectComputeCommandBuildPass.js";
|
|
8
|
+
import { RasterizationCollectionType } from "../expand/RasterizationCollectionType.js";
|
|
9
|
+
import { shader_read_out_bucket } from "../bucket/shader_read_out_bucket.js";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Extract a single bucket's mesh indices out of a bucket-sorted mesh buffer.
|
|
13
|
+
* Produces a flat {@link COLLECTION_U32_STRUCT_READ} buffer.
|
|
14
|
+
*
|
|
15
|
+
* @param {FrameGraph} graph
|
|
16
|
+
* @param {number} buckets bucket-sorted meshes resource ID
|
|
17
|
+
* @param {number} bucket_id
|
|
18
|
+
* @param {GPUCollectionLimits} limits
|
|
19
|
+
* @returns {number} resource ID of extracted mesh list
|
|
20
|
+
*/
|
|
21
|
+
export function graph_extract_meshes_from_bucket({
|
|
22
|
+
graph,
|
|
23
|
+
buckets,
|
|
24
|
+
bucket_id,
|
|
25
|
+
limits,
|
|
26
|
+
}) {
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
*
|
|
30
|
+
* @param data
|
|
31
|
+
* @param {FramePassResources} resources
|
|
32
|
+
* @param {GraphicsExecutionContext} context
|
|
33
|
+
*/
|
|
34
|
+
function execute(data, resources, context) {
|
|
35
|
+
const encoder = context.encoder;
|
|
36
|
+
|
|
37
|
+
const buckets = resources.get(data.buckets);
|
|
38
|
+
const output = resources.get(data.output);
|
|
39
|
+
const command = resources.get(data.command);
|
|
40
|
+
|
|
41
|
+
const bucket_id = data.bucket_id;
|
|
42
|
+
|
|
43
|
+
build_indirect_compute_dispatch_command(
|
|
44
|
+
COMPUTE_SHADER_DEFAULT_GROUP_SIZE,
|
|
45
|
+
encoder,
|
|
46
|
+
buckets,
|
|
47
|
+
// the bucketed buffer header consists of pairs of u32 values (count,offset)
|
|
48
|
+
bucket_id * (u32.size * 2),
|
|
49
|
+
command,
|
|
50
|
+
0
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
shader_read_out_bucket.dispatchIndirect({
|
|
54
|
+
encoder,
|
|
55
|
+
command,
|
|
56
|
+
bindings: {
|
|
57
|
+
settings: { bucket_id },
|
|
58
|
+
input: buckets,
|
|
59
|
+
output,
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const data = {};
|
|
65
|
+
|
|
66
|
+
const pass = graph.add("extract meshes from bucket", data, execute);
|
|
67
|
+
|
|
68
|
+
data.buckets = pass.read(buckets);
|
|
69
|
+
data.bucket_id = bucket_id;
|
|
70
|
+
data.command = pass.create("command", INDIRECT_COMPUTE_COMMAND_DESCRIPTOR);
|
|
71
|
+
data.output = pass.create("output", BufferResourceDescriptor.from(
|
|
72
|
+
limits.compute_buffer_size(RasterizationCollectionType.Meshes),
|
|
73
|
+
GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
|
|
74
|
+
0, 16 // clear count
|
|
75
|
+
));
|
|
76
|
+
|
|
77
|
+
return data.output;
|
|
82
78
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph_rasterize_scene.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/standard/graph_rasterize_scene.js"],"names":[],"mappings":"AAcA;;;;;;;;;GASG;AACH,4EAFa,MAAM,
|
|
1
|
+
{"version":3,"file":"graph_rasterize_scene.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/standard/graph_rasterize_scene.js"],"names":[],"mappings":"AAcA;;;;;;;;;GASG;AACH,4EAFa,MAAM,CA4LlB"}
|
|
@@ -4,10 +4,10 @@ import { ShadeDrawSide } from "../../material/ShadeDrawSide.js";
|
|
|
4
4
|
import { graph_import_buffer } from "../../shader/graph/graph_import_buffer.js";
|
|
5
5
|
import { graph_import_texture } from "../../shader/graph/graph_import_texture.js";
|
|
6
6
|
import { graph_record_stat } from "../../util/graph_record_stat.js";
|
|
7
|
+
import { graph_mesh_frustum_cull } from "../compute/graph_mesh_frustum_cull.js";
|
|
7
8
|
import { rasterization_material_bucket } from "../expand/bucket/chunk_rasterization_material_bucket.js";
|
|
8
9
|
import { graph_meshes_classify_buckets } from "../expand/bucket/mesh/graph_meshes_classify_buckets.js";
|
|
9
10
|
import { RasterizationCollectionType } from "../expand/RasterizationCollectionType.js";
|
|
10
|
-
import { graph_mesh_frustum_cull } from "../compute/graph_mesh_frustum_cull.js";
|
|
11
11
|
import { graph_rasterize_meshes_alpha_tested } from "../native/graph_rasterize_meshes_alpha_tested.js";
|
|
12
12
|
import { graph_rasterize_partial_opaque } from "./graph_rasterize_partial_opaque.js";
|
|
13
13
|
import { graph_rasterize_remaining_opaque } from "./graph_rasterize_remaining_opaque.js";
|
|
@@ -32,6 +32,8 @@ export function graph_rasterize_scene({
|
|
|
32
32
|
|
|
33
33
|
assert.defined(limits, 'limits');
|
|
34
34
|
|
|
35
|
+
graph.push_scope("rasterize scene");
|
|
36
|
+
|
|
35
37
|
const view_ctx = job.view_ctx;
|
|
36
38
|
const viewport = job.viewport;
|
|
37
39
|
|
|
@@ -203,5 +205,7 @@ export function graph_rasterize_scene({
|
|
|
203
205
|
}
|
|
204
206
|
}
|
|
205
207
|
|
|
208
|
+
graph.pop_scope();
|
|
209
|
+
|
|
206
210
|
return gr_render_buckets;
|
|
207
211
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComputeShader.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/shader/ComputeShader.js"],"names":[],"mappings":"AAMA;
|
|
1
|
+
{"version":3,"file":"ComputeShader.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/shader/ComputeShader.js"],"names":[],"mappings":"AAMA;IA2EI;;;;;;;OAOG;IACH,sDANW,MAAM,GAIJ,aAAa,CAiCzB;IAvDD;;;OAGG;IACH,wBAFW,gBAAgB,EAY1B;IA7DD;;;OAGG;IACH,0CAEC;IASD;;;OAGG;IACH,2BAEC;IAED;;;OAGG;IACH,2BAEC;IAED;;;OAGG;IACH,2BAEC;IAED;;;OAGG;IACH,mCAEC;IA2DD;;;;;OAKG;IACH,oFAuBC;IAED;;;;;;;;;OASG;IACH,mFA4BC;IAED;;;;;;;OAOG;IACH,4GAyCC;IAED;;;;;;OAMG;IACH,+FAsCC;IAGL;;;OAGG;IACH,0BAFU,OAAO,CAEsB;;CANtC;0CAjSyC,gEAAgE;iCACzE,uBAAuB"}
|
|
@@ -73,7 +73,8 @@ export class ComputeShader {
|
|
|
73
73
|
this.#pipeline = ComputePipelineDescriptor.simplified({
|
|
74
74
|
label: descriptor.label,
|
|
75
75
|
code: descriptor.compile(),
|
|
76
|
-
bindings: descriptor.resources.generateBindingsArray()
|
|
76
|
+
bindings: descriptor.resources.generateBindingsArray(),
|
|
77
|
+
immediate_size: descriptor.resources.immediateSize
|
|
77
78
|
});
|
|
78
79
|
|
|
79
80
|
}
|
|
@@ -141,9 +142,12 @@ export class ComputeShader {
|
|
|
141
142
|
|
|
142
143
|
const gpu_bindings = resources.generateBindings(bindings, encoder);
|
|
143
144
|
|
|
145
|
+
const immediate = encoder.writeImmediate(resources, bindings);
|
|
146
|
+
|
|
144
147
|
return encoder.constructComputePass({
|
|
145
148
|
pipeline: this.#pipeline,
|
|
146
|
-
bindings: gpu_bindings
|
|
149
|
+
bindings: gpu_bindings,
|
|
150
|
+
immediate
|
|
147
151
|
});
|
|
148
152
|
}
|
|
149
153
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageShader.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/shader/ImageShader.js"],"names":[],"mappings":"AAQA;;GAEG;AACH;IAyGI;;;;;;OAMG;IACH,uEAFa,WAAW,CAavB;IAlFD;;;;;OAKG;IACH,sEAuDC;IAhGD;;;OAGG;IACH,mCAEC;IAED;;;OAGG;IACH,cAFU,MAAM,EAAE,EAAE,CAEF;IAOlB;;;OAGG;IACH,yCAEC;IAED;;;OAGG;IACH,6BAEC;IAsFD;;;;;;;;;OASG;IACH,
|
|
1
|
+
{"version":3,"file":"ImageShader.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/shader/ImageShader.js"],"names":[],"mappings":"AAQA;;GAEG;AACH;IAyGI;;;;;;OAMG;IACH,uEAFa,WAAW,CAavB;IAlFD;;;;;OAKG;IACH,sEAuDC;IAhGD;;;OAGG;IACH,mCAEC;IAED;;;OAGG;IACH,cAFU,MAAM,EAAE,EAAE,CAEF;IAOlB;;;OAGG;IACH,yCAEC;IAED;;;OAGG;IACH,6BAEC;IAsFD;;;;;;;;;OASG;IACH,6HAsEC;;CACJ"}
|
|
@@ -165,6 +165,8 @@ export class ImageShader {
|
|
|
165
165
|
|
|
166
166
|
const resolved_bindings = shader_descriptor.resources.generateBindings(bindings, encoder);
|
|
167
167
|
|
|
168
|
+
const immediate = encoder.writeImmediate(shader_descriptor.resources, bindings);
|
|
169
|
+
|
|
168
170
|
encoder.pushDebugGroup(shader_descriptor.label);
|
|
169
171
|
|
|
170
172
|
let pipeline = this.#pipeline;
|
|
@@ -179,7 +181,8 @@ export class ImageShader {
|
|
|
179
181
|
pipeline,
|
|
180
182
|
bindings: resolved_bindings,
|
|
181
183
|
colorAttachments,
|
|
182
|
-
depthStencilAttachment
|
|
184
|
+
depthStencilAttachment,
|
|
185
|
+
immediate
|
|
183
186
|
});
|
|
184
187
|
|
|
185
188
|
if (viewport !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShaderDescriptor.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/shader/ShaderDescriptor.js"],"names":[],"mappings":"AAIA;
|
|
1
|
+
{"version":3,"file":"ShaderDescriptor.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/shader/ShaderDescriptor.js"],"names":[],"mappings":"AAIA;IA2II;;;;;OAKG;IACH,yCAJW,MAAM,oBAwBhB;IA9JD;;;OAGG;IACH,oBAEC;IAOD;;;OAGG;IACH,6CAEC;IAaD;;;OAGG;IACH,0CAEC;IAED;;;OAGG;IACH,WAFY,MAAM,CAiCjB;IAED;;;OAGG;IACH,iDA6BC;IAED;;;;;OAKG;IACH,0CAHa,OAAO,CAenB;;CA6BJ;4CAxK2C,2CAA2C"}
|
|
@@ -70,6 +70,14 @@ export class ShaderDescriptor {
|
|
|
70
70
|
for (const extension of extensions) {
|
|
71
71
|
result_parts.unshift(`enable ${extension};`);
|
|
72
72
|
}
|
|
73
|
+
|
|
74
|
+
// Language extensions take `requires`, not `enable`, and are not GPUFeatureNames — so they
|
|
75
|
+
// are not folded into `#features`, which `validate_gpu_features` checks against
|
|
76
|
+
// `device.features`. Looking `immediate_address_space` up there would never find it.
|
|
77
|
+
for (const language_extension of compiled.language_extensions) {
|
|
78
|
+
result_parts.unshift(`requires ${language_extension};`);
|
|
79
|
+
}
|
|
80
|
+
|
|
73
81
|
result_parts.push(compiled.text);
|
|
74
82
|
|
|
75
83
|
this.#features = Object.freeze(extensions);
|
|
@@ -92,6 +100,24 @@ export class ShaderDescriptor {
|
|
|
92
100
|
}
|
|
93
101
|
}
|
|
94
102
|
|
|
103
|
+
{
|
|
104
|
+
// immediate data budget. Not a device floor — a browser without immediates still starts
|
|
105
|
+
// and still renders; it just cannot run *this* shader. Saying so by name beats the
|
|
106
|
+
// shader-creation error a device would otherwise raise, which names neither the shader
|
|
107
|
+
// nor the feature.
|
|
108
|
+
const required = this.resources.immediateSize;
|
|
109
|
+
|
|
110
|
+
if (required > 0) {
|
|
111
|
+
const limit = device.limits.maxImmediateSize ?? 0;
|
|
112
|
+
|
|
113
|
+
if (limit < required) {
|
|
114
|
+
throw new Error(
|
|
115
|
+
`Shader '${this.label}' needs ${required} bytes of immediate data and this device offers ${limit}. Immediate data is an optional capability — check immediate_data_supported() and pick a shader variant that uses a uniform buffer instead.`
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
95
121
|
this.validate_gpu_features(device);
|
|
96
122
|
}
|
|
97
123
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The two sphere radii the atmosphere is bounded by, as f32.
|
|
3
|
+
*
|
|
4
|
+
* `PLANET_RADIUS` and `ATMOSPHERE_HEIGHT` carry no type suffix, so they are AbstractInt.
|
|
5
|
+
* That converts silently wherever it is used directly in an f32 expression, but binding one
|
|
6
|
+
* to an un-annotated `let` materialises it to i32 — which then neither mixes with f32 nor
|
|
7
|
+
* holds the square of a planetary radius, since 6478000^2 is four orders of magnitude past
|
|
8
|
+
* what an i32 can represent. Anything that needs a radius as a value rather than as a term
|
|
9
|
+
* takes it from here.
|
|
10
|
+
*
|
|
11
|
+
* The squares are what the ray/sphere quadratics actually want, and as module-scope consts
|
|
12
|
+
* they are folded once rather than recomputed per invocation.
|
|
13
|
+
*
|
|
14
|
+
* @type {CodeChunk}
|
|
15
|
+
*/
|
|
16
|
+
export const ATMOSPHERE_RADII_DECLARATION: CodeChunk;
|
|
17
|
+
import { CodeChunk } from "../../compiler/CodeChunk.js";
|
|
18
|
+
//# sourceMappingURL=ATMOSPHERE_RADII_DECLARATION.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ATMOSPHERE_RADII_DECLARATION.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/atmosphere/ATMOSPHERE_RADII_DECLARATION.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AACH,2CAFU,SAAS,CAcjB;0BA/BwB,6BAA6B"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { CodeChunk } from "../../compiler/CodeChunk.js";
|
|
2
|
+
import { ATMOSPHERE_HEIGHT_DECLARATION } from "./ATMOSPHERE_HEIGHT_DECLARATION.js";
|
|
3
|
+
import { PLANET_RADIUS_DECLARATION } from "./PLANET_RADIUS_DECLARATION.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The two sphere radii the atmosphere is bounded by, as f32.
|
|
7
|
+
*
|
|
8
|
+
* `PLANET_RADIUS` and `ATMOSPHERE_HEIGHT` carry no type suffix, so they are AbstractInt.
|
|
9
|
+
* That converts silently wherever it is used directly in an f32 expression, but binding one
|
|
10
|
+
* to an un-annotated `let` materialises it to i32 — which then neither mixes with f32 nor
|
|
11
|
+
* holds the square of a planetary radius, since 6478000^2 is four orders of magnitude past
|
|
12
|
+
* what an i32 can represent. Anything that needs a radius as a value rather than as a term
|
|
13
|
+
* takes it from here.
|
|
14
|
+
*
|
|
15
|
+
* The squares are what the ray/sphere quadratics actually want, and as module-scope consts
|
|
16
|
+
* they are folded once rather than recomputed per invocation.
|
|
17
|
+
*
|
|
18
|
+
* @type {CodeChunk}
|
|
19
|
+
*/
|
|
20
|
+
export const ATMOSPHERE_RADII_DECLARATION = CodeChunk.from(
|
|
21
|
+
//language=WGSL
|
|
22
|
+
`
|
|
23
|
+
const ATMOSPHERE_GROUND_RADIUS = f32(PLANET_RADIUS);
|
|
24
|
+
const ATMOSPHERE_TOP_RADIUS = f32(PLANET_RADIUS) + f32(ATMOSPHERE_HEIGHT);
|
|
25
|
+
|
|
26
|
+
const ATMOSPHERE_GROUND_RADIUS_SQUARED = ATMOSPHERE_GROUND_RADIUS * ATMOSPHERE_GROUND_RADIUS;
|
|
27
|
+
const ATMOSPHERE_TOP_RADIUS_SQUARED = ATMOSPHERE_TOP_RADIUS * ATMOSPHERE_TOP_RADIUS;
|
|
28
|
+
`, [
|
|
29
|
+
PLANET_RADIUS_DECLARATION,
|
|
30
|
+
ATMOSPHERE_HEIGHT_DECLARATION,
|
|
31
|
+
]
|
|
32
|
+
);
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The dependency is load-bearing rather than tidiness: without it the emitted module's
|
|
3
|
+
* ordering was whatever else happened to pull PLANET_RADIUS_DECLARATION in first, and a
|
|
4
|
+
* closure where nothing did put this line above the constant it reads.
|
|
5
|
+
*
|
|
6
|
+
* @type {CodeChunk}
|
|
7
|
+
*/
|
|
1
8
|
export const PLANET_CENTER_DECLARATION: CodeChunk;
|
|
2
9
|
import { CodeChunk } from "../../compiler/CodeChunk.js";
|
|
3
10
|
//# sourceMappingURL=PLANET_CENTER_DECLARATION.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PLANET_CENTER_DECLARATION.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/atmosphere/PLANET_CENTER_DECLARATION.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PLANET_CENTER_DECLARATION.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/atmosphere/PLANET_CENTER_DECLARATION.js"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,wCAFU,SAAS,CAQjB;0BAhBwB,6BAA6B"}
|
|
@@ -1,6 +1,17 @@
|
|
|
1
|
-
import { CodeChunk } from "../../compiler/CodeChunk.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { CodeChunk } from "../../compiler/CodeChunk.js";
|
|
2
|
+
import { PLANET_RADIUS_DECLARATION } from "./PLANET_RADIUS_DECLARATION.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The dependency is load-bearing rather than tidiness: without it the emitted module's
|
|
6
|
+
* ordering was whatever else happened to pull PLANET_RADIUS_DECLARATION in first, and a
|
|
7
|
+
* closure where nothing did put this line above the constant it reads.
|
|
8
|
+
*
|
|
9
|
+
* @type {CodeChunk}
|
|
10
|
+
*/
|
|
11
|
+
export const PLANET_CENTER_DECLARATION = CodeChunk.from(
|
|
12
|
+
//language=WGSL
|
|
13
|
+
`const PLANET_CENTER = vec3(0.0, -PLANET_RADIUS, 0.0);`,
|
|
14
|
+
[
|
|
15
|
+
PLANET_RADIUS_DECLARATION
|
|
16
|
+
]
|
|
17
|
+
);
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How far a ray inside the atmosphere may be marched, and whether it ends on the surface.
|
|
3
|
+
*
|
|
4
|
+
* The ground and the atmosphere shell are concentric on the planet and the ray is shared, so
|
|
5
|
+
* one quadratic setup serves both intersections — only the radius term differs. Calling a
|
|
6
|
+
* general sphere-intersection routine twice instead recomputes the ray-origin offset and all
|
|
7
|
+
* three dot products for the second sphere, and re-derives a leading coefficient that is 1
|
|
8
|
+
* for a unit direction.
|
|
9
|
+
*
|
|
10
|
+
* `origin_rel` is relative to the planet centre and assumed to be inside the atmosphere and
|
|
11
|
+
* at or above the surface, which is what makes the shell's far root the exit point.
|
|
12
|
+
* `ray_direction` must be normalised.
|
|
13
|
+
*
|
|
14
|
+
* `ground_distance` is negative when the ray never meets the surface, which includes looking
|
|
15
|
+
* up from above it: both roots are behind the origin there.
|
|
16
|
+
*
|
|
17
|
+
* @type {CodeChunk}
|
|
18
|
+
*/
|
|
19
|
+
export const chunk_atmosphere_ray_bounds: CodeChunk;
|
|
20
|
+
import { CodeChunk } from "../../compiler/CodeChunk.js";
|
|
21
|
+
//# sourceMappingURL=chunk_atmosphere_ray_bounds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_atmosphere_ray_bounds.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/atmosphere/chunk_atmosphere_ray_bounds.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;GAiBG;AACH,0CAFU,SAAS,CAiDjB;0BApEwB,6BAA6B"}
|