@woosh/meep-engine 3.11.2 → 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/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/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/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/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/view/GPUViewSkyContext.d.ts.map +1 -1
- package/src/shade/renderer/view/GPUViewSkyContext.js +169 -173
- package/src/shade/renderer/volumetrics/NOTES.md +238 -0
- package/src/shade/renderer/volumetrics/chunk_volumetrics_local_light_shadow.js +145 -145
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sun_optical_depth.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sun_optical_depth.js +38 -15
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts +14 -2
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +594 -577
- 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 +19 -2
- 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 +53 -3
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_sun_shadow_volume.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_sun_shadow_volume.js +175 -59
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +8 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.js +1325 -1297
- 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
package/package.json
CHANGED
|
@@ -12,12 +12,13 @@ export class PipelineLayoutDescriptor extends ObjectDescriptorBase {
|
|
|
12
12
|
* @param {GPUShaderStage|number} stage
|
|
13
13
|
* @param {(BufferBindingLayout|SamplerBindingLayout|TextureBindingLayout|StorageTextureBindingLayout|ExternalTextureBindingLayout)[][]} bindings
|
|
14
14
|
*/
|
|
15
|
-
static forStage(stage: GPUShaderStage | number, bindings: (BufferBindingLayout | SamplerBindingLayout | TextureBindingLayout | StorageTextureBindingLayout | ExternalTextureBindingLayout)[][]): PipelineLayoutDescriptor;
|
|
15
|
+
static forStage(stage: GPUShaderStage | number, bindings: (BufferBindingLayout | SamplerBindingLayout | TextureBindingLayout | StorageTextureBindingLayout | ExternalTextureBindingLayout)[][], immediate_size?: number): PipelineLayoutDescriptor;
|
|
16
16
|
/**
|
|
17
17
|
*
|
|
18
18
|
* @param {BindGroupLayoutDescriptor[]} bind_groups
|
|
19
|
+
* @param {number} [immediate_size] bytes of immediate data, 0 when the shader declares none
|
|
19
20
|
*/
|
|
20
|
-
static from(bind_groups: BindGroupLayoutDescriptor[]): PipelineLayoutDescriptor;
|
|
21
|
+
static from(bind_groups: BindGroupLayoutDescriptor[], immediate_size?: number): PipelineLayoutDescriptor;
|
|
21
22
|
/**
|
|
22
23
|
*
|
|
23
24
|
* @param {JSONPipelineLayoutDescriptor} json
|
|
@@ -29,6 +30,19 @@ export class PipelineLayoutDescriptor extends ObjectDescriptorBase {
|
|
|
29
30
|
* @type {BindGroupLayoutDescriptor[]}
|
|
30
31
|
*/
|
|
31
32
|
bindGroupLayouts: BindGroupLayoutDescriptor[];
|
|
33
|
+
/**
|
|
34
|
+
* Bytes of immediate data the pipelines using this layout read, 0 when they read none.
|
|
35
|
+
*
|
|
36
|
+
* Not a bind group and not a binding — immediate data is part of the shader interface without
|
|
37
|
+
* being part of its resource interface, so it hangs off the layout itself.
|
|
38
|
+
*
|
|
39
|
+
* Must be a multiple of 4 and no larger than the device's `maxImmediateSize`; both are
|
|
40
|
+
* validated where the layout is created, not here, because this descriptor never sees a device.
|
|
41
|
+
*
|
|
42
|
+
* @see https://www.w3.org/TR/webgpu/#dom-gpupipelinelayoutdescriptor-immediatesize
|
|
43
|
+
* @type {number}
|
|
44
|
+
*/
|
|
45
|
+
immediateSize: number;
|
|
32
46
|
/**
|
|
33
47
|
*
|
|
34
48
|
* @param {JSONPipelineLayoutDescriptor} json
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PipelineLayoutDescriptor.d.ts","sourceRoot":"","sources":["../../../../../src/shade/descriptor/pipeline/PipelineLayoutDescriptor.js"],"names":[],"mappings":"AASA;;;;GAIG;AAEH;;GAEG;AACH;
|
|
1
|
+
{"version":3,"file":"PipelineLayoutDescriptor.d.ts","sourceRoot":"","sources":["../../../../../src/shade/descriptor/pipeline/PipelineLayoutDescriptor.js"],"names":[],"mappings":"AASA;;;;GAIG;AAEH;;GAEG;AACH;IAsBI;;;;OAIG;IACH,uBAHW,iBAAe,MAAM,YACrB,CAAC,8HAAsH,CAAC,EAAE,EAAE,qDAgBtI;IAGD;;;;OAIG;IACH,yBAHW,yBAAyB,EAAE,mBAC3B,MAAM,4BAyBhB;IAED;;;;OAIG;IACH,gDAFY,wBAAwB,CAQnC;IAnFD;;;OAGG;IACH,kBAFU,yBAAyB,EAAE,CAEhB;IAErB;;;;;;;;;;;OAWG;IACH,eAFU,MAAM,CAEC;IAoEjB;;;OAGG;IACH,8CASC;IAYD,4BAQC;IAED;;;OAGG;IACH,YAFW,wBAAwB,QAMlC;IAED;;;OAGG;IACH,SAFY,wBAAwB,CAQnC;IAGL;;;OAGG;IACH,qCAFU,OAAO,CAE4C;CAN5D;;qCA3JoC,4BAA4B;0CADvB,yCAAyC"}
|
|
@@ -24,12 +24,26 @@ export class PipelineLayoutDescriptor extends ObjectDescriptorBase {
|
|
|
24
24
|
*/
|
|
25
25
|
bindGroupLayouts = []
|
|
26
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Bytes of immediate data the pipelines using this layout read, 0 when they read none.
|
|
29
|
+
*
|
|
30
|
+
* Not a bind group and not a binding — immediate data is part of the shader interface without
|
|
31
|
+
* being part of its resource interface, so it hangs off the layout itself.
|
|
32
|
+
*
|
|
33
|
+
* Must be a multiple of 4 and no larger than the device's `maxImmediateSize`; both are
|
|
34
|
+
* validated where the layout is created, not here, because this descriptor never sees a device.
|
|
35
|
+
*
|
|
36
|
+
* @see https://www.w3.org/TR/webgpu/#dom-gpupipelinelayoutdescriptor-immediatesize
|
|
37
|
+
* @type {number}
|
|
38
|
+
*/
|
|
39
|
+
immediateSize = 0
|
|
40
|
+
|
|
27
41
|
/**
|
|
28
42
|
*
|
|
29
43
|
* @param {GPUShaderStage|number} stage
|
|
30
44
|
* @param {(BufferBindingLayout|SamplerBindingLayout|TextureBindingLayout|StorageTextureBindingLayout|ExternalTextureBindingLayout)[][]} bindings
|
|
31
45
|
*/
|
|
32
|
-
static forStage(stage, bindings) {
|
|
46
|
+
static forStage(stage, bindings, immediate_size = 0) {
|
|
33
47
|
assert.isArray(bindings, 'bindings');
|
|
34
48
|
|
|
35
49
|
const bind_group_count = bindings.length;
|
|
@@ -42,20 +56,24 @@ export class PipelineLayoutDescriptor extends ObjectDescriptorBase {
|
|
|
42
56
|
bind_groups[i] = BindGroupLayoutDescriptor.forStage(stage, "", binding_set);
|
|
43
57
|
}
|
|
44
58
|
|
|
45
|
-
return PipelineLayoutDescriptor.from(bind_groups);
|
|
59
|
+
return PipelineLayoutDescriptor.from(bind_groups, immediate_size);
|
|
46
60
|
}
|
|
47
61
|
|
|
48
62
|
|
|
49
63
|
/**
|
|
50
64
|
*
|
|
51
65
|
* @param {BindGroupLayoutDescriptor[]} bind_groups
|
|
66
|
+
* @param {number} [immediate_size] bytes of immediate data, 0 when the shader declares none
|
|
52
67
|
*/
|
|
53
|
-
static from(bind_groups) {
|
|
68
|
+
static from(bind_groups, immediate_size = 0) {
|
|
54
69
|
|
|
55
70
|
assert.isArray(bind_groups, 'bind_groups');
|
|
71
|
+
assert.isNonNegativeInteger(immediate_size, 'immediate_size');
|
|
56
72
|
|
|
57
73
|
const r = new PipelineLayoutDescriptor();
|
|
58
74
|
|
|
75
|
+
r.immediateSize = immediate_size;
|
|
76
|
+
|
|
59
77
|
const count = bind_groups.length;
|
|
60
78
|
|
|
61
79
|
for (let i = 0; i < count; i++) {
|
|
@@ -98,12 +116,16 @@ export class PipelineLayoutDescriptor extends ObjectDescriptorBase {
|
|
|
98
116
|
const bindGroupLayouts = json.bindGroupLayouts ?? [];
|
|
99
117
|
|
|
100
118
|
this.bindGroupLayouts = bindGroupLayouts.map(BindGroupLayoutDescriptor.fromJSON);
|
|
119
|
+
this.immediateSize = json.immediateSize ?? 0;
|
|
101
120
|
}
|
|
102
121
|
|
|
103
122
|
hash() {
|
|
104
123
|
return combine_hash(
|
|
105
124
|
super.hash(),
|
|
106
|
-
computeHashArray(this.bindGroupLayouts, invokeObjectHash)
|
|
125
|
+
computeHashArray(this.bindGroupLayouts, invokeObjectHash),
|
|
126
|
+
// two layouts that differ only in immediate size are different layouts; leaving this out
|
|
127
|
+
// would alias them in the manager's cache and hand a pipeline someone else's budget
|
|
128
|
+
this.immediateSize
|
|
107
129
|
);
|
|
108
130
|
}
|
|
109
131
|
|
|
@@ -113,6 +135,7 @@ export class PipelineLayoutDescriptor extends ObjectDescriptorBase {
|
|
|
113
135
|
}
|
|
114
136
|
|
|
115
137
|
return super.equals(other)
|
|
138
|
+
&& this.immediateSize === other.immediateSize
|
|
116
139
|
&& isArrayEqual(this.bindGroupLayouts, other.bindGroupLayouts);
|
|
117
140
|
}
|
|
118
141
|
|
|
@@ -123,6 +146,7 @@ export class PipelineLayoutDescriptor extends ObjectDescriptorBase {
|
|
|
123
146
|
copy(other) {
|
|
124
147
|
super.copy(other);
|
|
125
148
|
this.bindGroupLayouts = other.bindGroupLayouts.map(optional_clone);
|
|
149
|
+
this.immediateSize = other.immediateSize;
|
|
126
150
|
}
|
|
127
151
|
|
|
128
152
|
/**
|
|
@@ -12,7 +12,7 @@ export class ComputePipelineDescriptor extends PipelineDescriptorBase {
|
|
|
12
12
|
* @param {(BufferBindingLayout|SamplerBindingLayout|TextureBindingLayout|StorageTextureBindingLayout|ExternalTextureBindingLayout)[][]} bindings
|
|
13
13
|
* @param {Object<number>} [constants]
|
|
14
14
|
*/
|
|
15
|
-
static simplified({ label, code, bindings, constants }: string): ComputePipelineDescriptor;
|
|
15
|
+
static simplified({ label, code, bindings, constants, immediate_size }: string): ComputePipelineDescriptor;
|
|
16
16
|
/**
|
|
17
17
|
*
|
|
18
18
|
* @param {GPUComputePipelineDescriptor} json
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComputePipelineDescriptor.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.js"],"names":[],"mappings":"AAQA;IAGI;;;;;OAKG;IACH,mBAJW,MAAM,QACN,MAAM,UACN,wBAAwB,6BAalC;IAED;;;;;OAKG;IACH,
|
|
1
|
+
{"version":3,"file":"ComputePipelineDescriptor.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.js"],"names":[],"mappings":"AAQA;IAGI;;;;;OAKG;IACH,mBAJW,MAAM,QACN,MAAM,UACN,wBAAwB,6BAalC;IAED;;;;;OAKG;IACH,wEALW,MAAM,6BAyBhB;IAED;;;OAGG;IACH,+EAMC;IA3DD,2BAAkC;IA6DlC;;;OAGG;IACH,mDAMC;IAED;;;;OAIG;IACH,cAHW,yBAAyB,GACxB,OAAO,CAMlB;IAUL;;;OAGG;IACH,sCAFU,OAAO,CAE8C;CAN9D;uCAhGsC,8BAA8B;kCAEnC,yBAAyB;yCADlB,gCAAgC"}
|
|
@@ -34,7 +34,7 @@ export class ComputePipelineDescriptor extends PipelineDescriptorBase {
|
|
|
34
34
|
* @param {(BufferBindingLayout|SamplerBindingLayout|TextureBindingLayout|StorageTextureBindingLayout|ExternalTextureBindingLayout)[][]} bindings
|
|
35
35
|
* @param {Object<number>} [constants]
|
|
36
36
|
*/
|
|
37
|
-
static simplified({ label = "", code, bindings, constants }) {
|
|
37
|
+
static simplified({ label = "", code, bindings, constants, immediate_size = 0 }) {
|
|
38
38
|
assert.isString(label, 'label');
|
|
39
39
|
|
|
40
40
|
const r = new ComputePipelineDescriptor();
|
|
@@ -42,7 +42,10 @@ export class ComputePipelineDescriptor extends PipelineDescriptorBase {
|
|
|
42
42
|
r.label = label;
|
|
43
43
|
r.compute.module = ShaderModuleDescriptor.fromCode(code);
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
// `immediate_size` must travel with the bindings: a shader that reads immediate data whose
|
|
46
|
+
// layout declares none is a pipeline-creation error on a real device, and the two numbers are
|
|
47
|
+
// derived from the same descriptor
|
|
48
|
+
r.layout = PipelineLayoutDescriptor.forStage(GPUShaderStage.COMPUTE, bindings, immediate_size);
|
|
46
49
|
|
|
47
50
|
if(constants !== undefined){
|
|
48
51
|
assert.isObject(constants,'constants');
|