@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphicsContext.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/GraphicsContext.js"],"names":[],"mappings":"AAwBA;IAoJI,yBA8BC;IAjLD;;OAEG;IACH,YAFU,kBAAkB,CAEjB;IAEX;;OAEG;IACH,WAFU,kBAAkB,CAElB;IAOV;;OAEG;IACH,UAFU,iBAAiB,CAElB;IAET;;;OAGG;IACH,qDAOC;IAOD;;;OAGG;IACH,6CAEC;IAED;;OAEG;IACH,kBAFU,qBAAqB,CAEd;IAEjB;;OAEG;IACH,kBAFU,qBAAqB,CAEd;IAEjB;;OAEG;IACH,mBAFU,sBAAsB,CAEd;IAGlB;;OAEG;IACH,gBAFU,oBAAoB,CAEf;IAEf;;OAEG;IACH,UAFU,cAAc,CAEf;IAET;;;;OAIG;IACH,kBAFU,qBAAqB,CAEd;IAEjB;;OAEG;IACH,aAFU,gBAAgB,CAEd;IAQZ;;;OAGG;IACH,uBAFU,kBAAkB,CAEN;IAEtB;;;;OAIG;IACH,yBAFU,wBAAwB,CAEV;IAExB;;;OAGG;IACH,0BAFU,yBAAyB,CAEV;IAEzB;;;OAGG;IACH,oBAFU,mBAAmB,CAEV;IAUnB;;;OAGG;IACH,8BAEC;IAED,uBAMC;IAED;;;OAGG;IACH,wBAEC;IAkCD
|
|
1
|
+
{"version":3,"file":"GraphicsContext.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/GraphicsContext.js"],"names":[],"mappings":"AAwBA;IAoJI,yBA8BC;IAjLD;;OAEG;IACH,YAFU,kBAAkB,CAEjB;IAEX;;OAEG;IACH,WAFU,kBAAkB,CAElB;IAOV;;OAEG;IACH,UAFU,iBAAiB,CAElB;IAET;;;OAGG;IACH,qDAOC;IAOD;;;OAGG;IACH,6CAEC;IAED;;OAEG;IACH,kBAFU,qBAAqB,CAEd;IAEjB;;OAEG;IACH,kBAFU,qBAAqB,CAEd;IAEjB;;OAEG;IACH,mBAFU,sBAAsB,CAEd;IAGlB;;OAEG;IACH,gBAFU,oBAAoB,CAEf;IAEf;;OAEG;IACH,UAFU,cAAc,CAEf;IAET;;;;OAIG;IACH,kBAFU,qBAAqB,CAEd;IAEjB;;OAEG;IACH,aAFU,gBAAgB,CAEd;IAQZ;;;OAGG;IACH,uBAFU,kBAAkB,CAEN;IAEtB;;;;OAIG;IACH,yBAFU,wBAAwB,CAEV;IAExB;;;OAGG;IACH,0BAFU,yBAAyB,CAEV;IAEzB;;;OAGG;IACH,oBAFU,mBAAmB,CAEV;IAUnB;;;OAGG;IACH,8BAEC;IAED,uBAMC;IAED;;;OAGG;IACH,wBAEC;IAkCD;;;;;;;;OAQG;IACH,gGALW,oBAAoB,EAAE,cACtB;QAAC,MAAM,eAAe;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,QAmE9D;IAED;;;;OAIG;IACH,mDAFa,gBAAgB,CAI5B;IAED;;OAEG;IACH,+BAcC;IAED,4BAEC;IAED,eAmBC;IAED,gBAcC;IAGL;;;OAGG;IACH,4BAFU,OAAO,CAE0B;;CAN1C;mCA9UkC,kCAAkC;mCAGlC,kCAAkC;kCADnC,wBAAwB;2CAEf,mDAAmD;oCAH1D,2CAA2C;sCAXzC,6CAA6C;sCAC7C,6CAA6C;uCAF5C,8CAA8C;qCAIhD,0CAA0C;+BAchD,6BAA6B;sCACtB,4CAA4C;iCAbjD,+BAA+B;mCAC7B,gCAAgC;yCAC1B,sCAAsC;0CAErC,uCAAuC;oCAO7C,kCAAkC;iCARtB,8BAA8B"}
|
|
@@ -207,14 +207,26 @@ export class GraphicsContext {
|
|
|
207
207
|
* @param {GPUBindingCommandsMixin} pass
|
|
208
208
|
* @param {PipelineDescriptorBase} pipeline
|
|
209
209
|
* @param {GPUBindingResource[][]} [bindings]
|
|
210
|
+
* @param {{buffer: BinaryBuffer, offset: number, size: number}} [immediate] bytes to hand the
|
|
211
|
+
* pass through `setImmediates`, when the pipeline declares immediate data. Optional so
|
|
212
|
+
* that every caller predating immediates keeps working unchanged.
|
|
210
213
|
*/
|
|
211
214
|
setPipelineBindings(
|
|
212
215
|
pass,
|
|
213
216
|
pipeline,
|
|
214
|
-
bindings
|
|
217
|
+
bindings,
|
|
218
|
+
immediate
|
|
215
219
|
) {
|
|
216
220
|
assert.isArray(bindings, 'bindings');
|
|
217
221
|
|
|
222
|
+
if (immediate !== undefined) {
|
|
223
|
+
// `raw_bytes` is read here rather than cached by the caller: BinaryBuffer rebinds it
|
|
224
|
+
// when the backing store grows, so a reference taken earlier can be stale. It is also a
|
|
225
|
+
// Uint8Array, for which `setImmediates` counts offset and size in elements — and its
|
|
226
|
+
// elements are bytes, so the range passes through unchanged.
|
|
227
|
+
pass.setImmediates(0, immediate.buffer.raw_bytes, immediate.offset, immediate.size);
|
|
228
|
+
}
|
|
229
|
+
|
|
218
230
|
const bind_group_descriptors = pipeline.layout.bindGroupLayouts;
|
|
219
231
|
|
|
220
232
|
const bind_group_count = bindings.length;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/Renderer.js"],"names":[],"mappings":"AA4FA;IAOI,0BAEC;IAED;;OAEG;IACH,0BAAQ;IAER;;;;;;OAMG;IACH,kDAEC;IAED;;OAEG;IACH,kBAAO;IAYP;;;OAGG;IACH,2BAEC;IAaD,0CAGC;IAED,uCAEC;IAED;;;;OAIG;IACH,wBAFU,yBAAyB,CAEoB;IAEvD,6BAA4B;IAC5B,8BAA4B;IAC5B;;;;OAIG;IACH,mCAAkC;IAClC;;;;;;;OAOG;IACH,mCAFU,OAAO,CAEyB;IAC1C,+BAA6B;IAC7B,4CAA0C;IAkB1C,uCAKC;IArBD;;;;;;;;;;OAUG;IACH,oCAGC;IASD;;;;;;;OAOG;IACH,0BAFU,OAAO,CAEe;IAQhC;;;;;OAKG;IACH,sCAOC;IAjBD,mCAEC;IAiBD;;;;;;;;;OASG;IACH,6BAFU,OAAO,CAEmB;IAWpC;;;;;OAKG;IACH,8BAA+C;IAE/C;;;;;;;;OAQG;IACH,6BAFU,OAAO,CAEmB;IAEpC;;;;;;;;;;;;;;OAcG;IACH,8BAFU,OAAO,CAEoB;IAErC;;;;;;;;;;OAUG;IACH,qBAFU,OAAO,CAEW;IAU5B;;;;;OAKG;IACH,wBAA0C;IAE1C;;;;;;;;OAQG;IACH,eAFU,UAAU,GAAC,QAAQ,CAEF;IAU3B;;;;OAIG;IACH,gCAAwD;IAExD;;;;;;;;;;;;OAYG;IACH,gBAFU,OAAO,CAEK;IAEtB;;;OAGG;IACH,4BAFU,OAAO,CAEiB;IAKlC;;;OAGG;IACH,yBAEC;IAOD;;;OAGG;IACH,gCAEC;IAcD;;;;;;;;;OASG;IACH,qBAA+B;IAE/B,wBAA+B;IAE/B;;;OAGG;IACH,kBAA4B;IAiB5B;;;OAGG;IACH,2CAeC;IAED;;;OAGG;IACH,wCAEC;IA0BD;;;OAGG;IACH,iCAEC;IAED;;;;OAIG;IACH,2BAEC;IAQD;;;OAGG;IACH,+CAIC;IAED;;;OAGG;IACH,gDAIC;IAwCD;;;OAGG;IACH,6BAcC;IA1BD;;;OAGG;IACH,0BAEC;IA4BD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,iBAFU,oBAAkB,IAAI,CAET;IAEvB;;OAEG;IACH;;;;;;;;;;;;;;OAcG;IACH,2DAEC;IAED;;;;;OAKG;IACH,8CAFa,OAAO,CAInB;IAED;;;OAGG;IACH,uBAHW,UAAU,GACR,MAAM,CAIlB;IAGD,sCAIC;IAeD;;;;OAIG;IACH,iCAFY,gBAAgB,CAW3B;IAED;;;OAGG;IACH,6BAYC;IAED;;;;OAIG;IACH,wCAFa,2BAA2B,CAcvC;IAGD;;;OAGG;IACH,+BAuBC;IAmMD;;;;OAIG;IACH,0BAEC;IAgBD;;;;;;OAMG;IACH,cAFU,iBAAiB,CAEU;IAErC;;;;;;OAMG;IACH,eAgBC;IAiFD;;;;;OAKG;IACH,+EA0NC;IAED;;OAEG;IACH,gBAGC;IAQD,4BAwBC;IAqID;;;;;OAKG;IACH,UAHW,MAAM,KACN,MAAM,QAgBhB;IAoFD,0CAMC;IAED;;;;;;;;;;OAUG;IACH,qEAHW,MAAM,GACJ,OAAO,CAsBnB;IAED;;;;;;;;;;;;;;;OAeG;IACH,8EAJW,MAAM,UACN,iBAAiB,GACf,OAAO,
|
|
1
|
+
{"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/Renderer.js"],"names":[],"mappings":"AA4FA;IAOI,0BAEC;IAED;;OAEG;IACH,0BAAQ;IAER;;;;;;OAMG;IACH,kDAEC;IAED;;OAEG;IACH,kBAAO;IAYP;;;OAGG;IACH,2BAEC;IAaD,0CAGC;IAED,uCAEC;IAED;;;;OAIG;IACH,wBAFU,yBAAyB,CAEoB;IAEvD,6BAA4B;IAC5B,8BAA4B;IAC5B;;;;OAIG;IACH,mCAAkC;IAClC;;;;;;;OAOG;IACH,mCAFU,OAAO,CAEyB;IAC1C,+BAA6B;IAC7B,4CAA0C;IAkB1C,uCAKC;IArBD;;;;;;;;;;OAUG;IACH,oCAGC;IASD;;;;;;;OAOG;IACH,0BAFU,OAAO,CAEe;IAQhC;;;;;OAKG;IACH,sCAOC;IAjBD,mCAEC;IAiBD;;;;;;;;;OASG;IACH,6BAFU,OAAO,CAEmB;IAWpC;;;;;OAKG;IACH,8BAA+C;IAE/C;;;;;;;;OAQG;IACH,6BAFU,OAAO,CAEmB;IAEpC;;;;;;;;;;;;;;OAcG;IACH,8BAFU,OAAO,CAEoB;IAErC;;;;;;;;;;OAUG;IACH,qBAFU,OAAO,CAEW;IAU5B;;;;;OAKG;IACH,wBAA0C;IAE1C;;;;;;;;OAQG;IACH,eAFU,UAAU,GAAC,QAAQ,CAEF;IAU3B;;;;OAIG;IACH,gCAAwD;IAExD;;;;;;;;;;;;OAYG;IACH,gBAFU,OAAO,CAEK;IAEtB;;;OAGG;IACH,4BAFU,OAAO,CAEiB;IAKlC;;;OAGG;IACH,yBAEC;IAOD;;;OAGG;IACH,gCAEC;IAcD;;;;;;;;;OASG;IACH,qBAA+B;IAE/B,wBAA+B;IAE/B;;;OAGG;IACH,kBAA4B;IAiB5B;;;OAGG;IACH,2CAeC;IAED;;;OAGG;IACH,wCAEC;IA0BD;;;OAGG;IACH,iCAEC;IAED;;;;OAIG;IACH,2BAEC;IAQD;;;OAGG;IACH,+CAIC;IAED;;;OAGG;IACH,gDAIC;IAwCD;;;OAGG;IACH,6BAcC;IA1BD;;;OAGG;IACH,0BAEC;IA4BD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,iBAFU,oBAAkB,IAAI,CAET;IAEvB;;OAEG;IACH;;;;;;;;;;;;;;OAcG;IACH,2DAEC;IAED;;;;;OAKG;IACH,8CAFa,OAAO,CAInB;IAED;;;OAGG;IACH,uBAHW,UAAU,GACR,MAAM,CAIlB;IAGD,sCAIC;IAeD;;;;OAIG;IACH,iCAFY,gBAAgB,CAW3B;IAED;;;OAGG;IACH,6BAYC;IAED;;;;OAIG;IACH,wCAFa,2BAA2B,CAcvC;IAGD;;;OAGG;IACH,+BAuBC;IAmMD;;;;OAIG;IACH,0BAEC;IAgBD;;;;;;OAMG;IACH,cAFU,iBAAiB,CAEU;IAErC;;;;;;OAMG;IACH,eAgBC;IAiFD;;;;;OAKG;IACH,+EA0NC;IAED;;OAEG;IACH,gBAGC;IAQD,4BAwBC;IAqID;;;;;OAKG;IACH,UAHW,MAAM,KACN,MAAM,QAgBhB;IAoFD,0CAMC;IAED;;;;;;;;;;OAUG;IACH,qEAHW,MAAM,GACJ,OAAO,CAsBnB;IAED;;;;;;;;;;;;;;;OAeG;IACH,8EAJW,MAAM,UACN,iBAAiB,GACf,OAAO,CAi3BnB;;CACJ;6BA16E4B,yBAAyB;0CACZ,gCAAgC;2BApB/C,yCAAyC;6BAFvC,4CAA4C;8BAD3C,2CAA2C;4BAiC7C,uBAAuB;gCAtCnB,sBAAsB;mBArCnC,oCAAoC;oBACnC,4BAA4B;kCAuEd,gCAAgC;2BApDvC,2BAA2B;iCAkDrB,0CAA0C;4CApC/B,+DAA+D;yBA6BlF,yBAAyB;kCAMhB,wBAAwB;oBAvBtC,0BAA0B;uCAPP,sDAAsD"}
|
|
@@ -16,21 +16,8 @@ import { CameraManager } from "./camera/CameraManager.js";
|
|
|
16
16
|
import { shader_background } from "./deferred/shader_background.js";
|
|
17
17
|
import { shader_composite_volumetrics } from "./deferred/shader_composite_volumetrics.js";
|
|
18
18
|
import { shader_deferred_main, shader_deferred_main_restir } from "./deferred/shader_deferred_main.js";
|
|
19
|
-
import { ReSTIRDI } from "./restir/di/ReSTIRDI.js";
|
|
20
19
|
import { shader_tonemap_HDR } from "./deferred/shader_tonemap_HDR.js";
|
|
21
20
|
import { shader_tonemap_LDR } from "./deferred/shader_tonemap_LDR.js";
|
|
22
|
-
import { G_BUFFER_MIP_LEVELS } from "./gbuffer/G_BUFFER_MIP_LEVELS.js";
|
|
23
|
-
import {
|
|
24
|
-
graph_rasterize_meshes_transparent_oit
|
|
25
|
-
} from "./rasterize/native/oit/graph_rasterize_meshes_transparent_oit.js";
|
|
26
|
-
import {
|
|
27
|
-
viz_rasterization_alpha_tested_pass_descriptor
|
|
28
|
-
} from "./rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.js";
|
|
29
|
-
import {
|
|
30
|
-
viz_rasterization_opaque_pass_descriptor
|
|
31
|
-
} from "./rasterize/native/viz/viz_rasterization_opaque_pass_descriptor.js";
|
|
32
|
-
import { RasterizationJob } from "./rasterize/RasterizationJob.js";
|
|
33
|
-
import { graph_rasterize_scene } from "./rasterize/standard/graph_rasterize_scene.js";
|
|
34
21
|
import { FrameContext } from "./extension/FrameContext.js";
|
|
35
22
|
import { FramePhase } from "./extension/FramePhase.js";
|
|
36
23
|
import { GBufferTextures } from "./extension/GBufferTextures.js";
|
|
@@ -38,6 +25,7 @@ import { PresentTarget } from "./extension/PresentTarget.js";
|
|
|
38
25
|
import { RenderExtensionRegistry } from "./extension/RenderExtensionRegistry.js";
|
|
39
26
|
import { SceneColor } from "./extension/SceneColor.js";
|
|
40
27
|
import { ViewTextures } from "./extension/ViewTextures.js";
|
|
28
|
+
import { G_BUFFER_MIP_LEVELS } from "./gbuffer/G_BUFFER_MIP_LEVELS.js";
|
|
41
29
|
import { shader_brick4_diffuse } from "./global_illumination/brick4/gpu/draw/shader_brick4_diffuse.js";
|
|
42
30
|
import {
|
|
43
31
|
shader_brick4_indirect_lighting
|
|
@@ -53,24 +41,36 @@ import { graph_build_light_clusters } from "./light/cluster/graph_build_light_cl
|
|
|
53
41
|
import { AccumulatingPathTracer } from "./path_tracer/accumulating/AccumulatingPathTracer.js";
|
|
54
42
|
import { graph_postprocess_bloom } from "./postprocess/bloom/graph_postprocess_bloom.js";
|
|
55
43
|
import { shader_ffx_rcas } from "./postprocess/cas/shader_ffx_rcas.js";
|
|
44
|
+
import { DepthOfFieldU } from "./postprocess/dof/gather/DepthOfFieldU.js";
|
|
45
|
+
import { DepthOfField } from "./postprocess/dof/raymarch/DepthOfField.js";
|
|
56
46
|
import { GPUCameraExposureManager } from "./postprocess/eye/GPUCameraExposureManager.js";
|
|
47
|
+
import { MotionBlur } from "./postprocess/motion_blur/MotionBlur.js";
|
|
57
48
|
import { NSS } from "./postprocess/nss/NSS.js";
|
|
58
49
|
import { PostProcess } from "./postprocess/PostProcess.js";
|
|
59
50
|
import { shader_depth_occlusion_clip } from "./postprocess/taa/shader_depth_occlusion_clip.js";
|
|
60
51
|
import { TAA } from "./postprocess/taa/TAA.js";
|
|
61
|
-
import { MotionBlur } from "./postprocess/motion_blur/MotionBlur.js";
|
|
62
|
-
import { DepthOfField } from "./postprocess/dof/raymarch/DepthOfField.js";
|
|
63
|
-
import { DepthOfFieldU } from "./postprocess/dof/gather/DepthOfFieldU.js";
|
|
64
52
|
import { graph_add_per_object_velocity } from "./postprocess/velocity/graph_add_per_object_velocity.js";
|
|
53
|
+
import { shader_debug_velocity } from "./postprocess/velocity/shader_debug_velocity.js";
|
|
54
|
+
import {
|
|
55
|
+
graph_rasterize_meshes_transparent_oit
|
|
56
|
+
} from "./rasterize/native/oit/graph_rasterize_meshes_transparent_oit.js";
|
|
57
|
+
import {
|
|
58
|
+
viz_rasterization_alpha_tested_pass_descriptor
|
|
59
|
+
} from "./rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.js";
|
|
60
|
+
import {
|
|
61
|
+
viz_rasterization_opaque_pass_descriptor
|
|
62
|
+
} from "./rasterize/native/viz/viz_rasterization_opaque_pass_descriptor.js";
|
|
63
|
+
import { RasterizationJob } from "./rasterize/RasterizationJob.js";
|
|
64
|
+
import { graph_rasterize_scene } from "./rasterize/standard/graph_rasterize_scene.js";
|
|
65
|
+
import { ReSTIRDI } from "./restir/di/ReSTIRDI.js";
|
|
65
66
|
import { SceneManager } from "./scene/SceneManager.js";
|
|
66
67
|
import { ShadeIndirectLightingMode } from "./ShadeIndirectLightingMode.js";
|
|
67
|
-
import { ShadeUpscalerType } from "./ShadeUpscalerType.js";
|
|
68
68
|
import { graph_image_pass } from "./shader/graph/graph_image_pass.js";
|
|
69
69
|
import { graph_import_buffer } from "./shader/graph/graph_import_buffer.js";
|
|
70
70
|
import { graph_import_texture } from "./shader/graph/graph_import_texture.js";
|
|
71
|
+
import { ShadeUpscalerType } from "./ShadeUpscalerType.js";
|
|
71
72
|
import { CascadedSceneSDF } from "./shadow/sdf/cascade/CascadedSceneSDF.js";
|
|
72
73
|
import { STATIC_GRAPHICS_ENGINE_ASSETS } from "./STATIC_GRAPHICS_ENGINE_ASSETS.js";
|
|
73
|
-
import { shader_debug_velocity } from "./postprocess/velocity/shader_debug_velocity.js";
|
|
74
74
|
import { GPUTextureContext } from "./texture/GPUTextureContext.js";
|
|
75
75
|
import { RenderTarget } from "./texture/RenderTarget.js";
|
|
76
76
|
import { View } from "./view/View.js";
|
|
@@ -2267,6 +2267,8 @@ export class Renderer {
|
|
|
2267
2267
|
|
|
2268
2268
|
if (this.#feature_enabled_transparencies) {
|
|
2269
2269
|
// do transparent alpha pass
|
|
2270
|
+
graph.push_scope("transparencies");
|
|
2271
|
+
|
|
2270
2272
|
current_color_out = graph_rasterize_meshes_transparent_oit({
|
|
2271
2273
|
graph,
|
|
2272
2274
|
buckets: gr_render_buckets,
|
|
@@ -2288,6 +2290,8 @@ export class Renderer {
|
|
|
2288
2290
|
|
|
2289
2291
|
indirect_lighting_mode: this.indirect_lighting_mode,
|
|
2290
2292
|
});
|
|
2293
|
+
|
|
2294
|
+
graph.pop_scope();
|
|
2291
2295
|
}
|
|
2292
2296
|
|
|
2293
2297
|
frame.phase = FramePhase.AfterTransparency;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUSky.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/atmosphere/GPUSky.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GPUSky.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/atmosphere/GPUSky.js"],"names":[],"mappings":"AAUA;IAuCI;;;OAGG;IACH,uCAmBC;IAlDD;;;OAGG;IACH,2CAEC;IAOD;;;OAGG;IACH,iDAEC;IAiCD,gBAGC;IAED,cAYC;IAED;;OAEG;IACH,eA+CC;;CAEJ;kCA3IiC,iCAAiC"}
|
|
@@ -1,143 +1,146 @@
|
|
|
1
|
-
import { FrameGraph } from "../../../engine/graphics/render/frame_graph/FrameGraph.js";
|
|
2
|
-
import { TextureResourceDescriptor } from "../../device/graph/TextureResourceDescriptor.js";
|
|
3
|
-
import { ShadeGPUCommandContext } from "../../device/ShadeGPUCommandContext.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
*
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
*
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
*
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
*
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
this.#lut_transmittance
|
|
60
|
-
this.#lut_transmittance.descriptor.
|
|
61
|
-
this.#lut_transmittance.descriptor.
|
|
62
|
-
this.#lut_transmittance.
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
this.#lut_multiple_scattering
|
|
66
|
-
this.#lut_multiple_scattering.descriptor.
|
|
67
|
-
this.#lut_multiple_scattering.descriptor.
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
const
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
1
|
+
import { FrameGraph } from "../../../engine/graphics/render/frame_graph/FrameGraph.js";
|
|
2
|
+
import { TextureResourceDescriptor } from "../../device/graph/TextureResourceDescriptor.js";
|
|
3
|
+
import { ShadeGPUCommandContext } from "../../device/ShadeGPUCommandContext.js";
|
|
4
|
+
import { graph_compute_pass } from "../shader/graph/compute/graph_compute_pass.js";
|
|
5
|
+
import { graph_image_pass } from "../shader/graph/graph_image_pass.js";
|
|
6
|
+
import { debug_draw_texture } from "../texture/debug_draw_texture.js";
|
|
7
|
+
import { GPUTextureContext } from "../texture/GPUTextureContext.js";
|
|
8
|
+
import { shader_multiscatter_lut } from "./shader_multiscatter_lut.js";
|
|
9
|
+
import { shader_transmittance_lut } from "./shader_transmittance_lut.js";
|
|
10
|
+
|
|
11
|
+
export class GPUSky {
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @type {GraphicsContext}
|
|
15
|
+
*/
|
|
16
|
+
#graphics;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @type {GPUTextureContext}
|
|
20
|
+
*/
|
|
21
|
+
#lut_transmittance;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
*
|
|
25
|
+
* @returns {GPUTextureContext}
|
|
26
|
+
*/
|
|
27
|
+
get lut_transmittance() {
|
|
28
|
+
return this.#lut_transmittance;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @type {GPUTextureContext}
|
|
33
|
+
*/
|
|
34
|
+
#lut_multiple_scattering;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
*
|
|
38
|
+
* @returns {GPUTextureContext}
|
|
39
|
+
*/
|
|
40
|
+
get lut_multiple_scattering() {
|
|
41
|
+
return this.#lut_multiple_scattering;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
*
|
|
46
|
+
* @type {boolean}
|
|
47
|
+
*/
|
|
48
|
+
#needs_update = true;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
*
|
|
52
|
+
* @param {GraphicsContext} graphics
|
|
53
|
+
*/
|
|
54
|
+
constructor(graphics) {
|
|
55
|
+
this.#graphics = graphics;
|
|
56
|
+
|
|
57
|
+
const device = graphics.device;
|
|
58
|
+
|
|
59
|
+
this.#lut_transmittance = new GPUTextureContext(device);
|
|
60
|
+
this.#lut_transmittance.descriptor.label = "Sky / Transmittance LUT";
|
|
61
|
+
this.#lut_transmittance.descriptor.format = "rgba16float";
|
|
62
|
+
this.#lut_transmittance.descriptor.usage = GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_SRC;
|
|
63
|
+
this.#lut_transmittance.resize(256, 64);
|
|
64
|
+
|
|
65
|
+
this.#lut_multiple_scattering = new GPUTextureContext(device);
|
|
66
|
+
this.#lut_multiple_scattering.descriptor.label = "Sky / Multiple Scattering LUT";
|
|
67
|
+
this.#lut_multiple_scattering.descriptor.format = "rgba16float";
|
|
68
|
+
// written by a compute shader, so STORAGE_BINDING rather than RENDER_ATTACHMENT
|
|
69
|
+
this.#lut_multiple_scattering.descriptor.usage = GPUTextureUsage.STORAGE_BINDING | GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_SRC;
|
|
70
|
+
this.#lut_multiple_scattering.resize(32, 32);
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
destroy() {
|
|
76
|
+
this.#lut_transmittance.destroy();
|
|
77
|
+
this.#lut_multiple_scattering.destroy();
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
debug() {
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
let y = 50;
|
|
84
|
+
debug_draw_texture({ texture: this.#lut_transmittance, x: 50, y: y });
|
|
85
|
+
|
|
86
|
+
y += this.#lut_transmittance.size[1] + 50;
|
|
87
|
+
|
|
88
|
+
debug_draw_texture({ texture: this.#lut_multiple_scattering, x: 50, y: y });
|
|
89
|
+
|
|
90
|
+
y += this.#lut_multiple_scattering.size[1] + 50;
|
|
91
|
+
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
*
|
|
96
|
+
*/
|
|
97
|
+
update() {
|
|
98
|
+
if (!this.#needs_update) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
const graph = new FrameGraph("sky update");
|
|
103
|
+
|
|
104
|
+
const command_ctx = ShadeGPUCommandContext.create(
|
|
105
|
+
this.#graphics,
|
|
106
|
+
"Renderer/main"
|
|
107
|
+
);
|
|
108
|
+
|
|
109
|
+
const gr_transmittance = graph.import_resource("transmittance", TextureResourceDescriptor.fromTexture(this.#lut_transmittance.gpu_texture), this.#lut_transmittance);
|
|
110
|
+
const gr_multiscatter = graph.import_resource("multiscatter", TextureResourceDescriptor.fromTexture(this.#lut_multiple_scattering.gpu_texture), this.#lut_multiple_scattering);
|
|
111
|
+
|
|
112
|
+
graph_image_pass({
|
|
113
|
+
graph,
|
|
114
|
+
shader: shader_transmittance_lut,
|
|
115
|
+
inputs: {
|
|
116
|
+
settings: {
|
|
117
|
+
steps: 40,
|
|
118
|
+
// read off the texture rather than restated, so the two cannot disagree
|
|
119
|
+
resolution: [this.#lut_transmittance.width, this.#lut_transmittance.height],
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
output: [gr_transmittance]
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
graph_compute_pass({
|
|
127
|
+
graph,
|
|
128
|
+
shader: shader_multiscatter_lut,
|
|
129
|
+
// one workgroup per LUT texel, counted off the texture being written so the
|
|
130
|
+
// dispatch cannot cover a different area than the shader stores into
|
|
131
|
+
group_count: [this.#lut_multiple_scattering.width, this.#lut_multiple_scattering.height, 1],
|
|
132
|
+
bindings: {
|
|
133
|
+
tSkyLutTransmittance: gr_transmittance,
|
|
134
|
+
tSkyLutMultiscatterOut: gr_multiscatter
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
command_ctx.encodeGraph(graph);
|
|
139
|
+
|
|
140
|
+
command_ctx.finish();
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
this.#needs_update = false;
|
|
144
|
+
}
|
|
145
|
+
|
|
143
146
|
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Directions are drawn on an 8x8 grid, stratified in azimuth and in the cosine of the polar
|
|
3
|
+
* angle. Matches Hillaire's `SQRTSAMPLECOUNT`.
|
|
4
|
+
* @type {number}
|
|
5
|
+
*/
|
|
6
|
+
export const MULTISCATTER_LUT_SQRT_SAMPLES: number;
|
|
7
|
+
/**
|
|
8
|
+
* One thread integrates one direction, so this is also the workgroup size.
|
|
9
|
+
*
|
|
10
|
+
* 64 is Hillaire's `[numthreads(1,1,64)]` count. It is a multiple of every legal subgroup
|
|
11
|
+
* size up to 64, and the reduction handles a subgroup wider than the workgroup, so no
|
|
12
|
+
* hardware needs a different number here.
|
|
13
|
+
* @type {number}
|
|
14
|
+
*/
|
|
15
|
+
export const MULTISCATTER_LUT_DIRECTION_COUNT: number;
|
|
16
|
+
/**
|
|
17
|
+
* Ray-march steps per direction. Hillaire's `SampleCountIni` for this LUT; the comment there
|
|
18
|
+
* reads "a minimum set of step is required for accuracy unfortunately".
|
|
19
|
+
*
|
|
20
|
+
* Compile-time on purpose: as a uniform the inner loop cannot be unrolled and the trip count
|
|
21
|
+
* has to be re-tested against an f32 every iteration.
|
|
22
|
+
* @type {number}
|
|
23
|
+
*/
|
|
24
|
+
export const MULTISCATTER_LUT_STEPS: number;
|
|
25
|
+
/**
|
|
26
|
+
* Upper bound on the number of subgroups in one workgroup, which is how many partial sums
|
|
27
|
+
* the cross-subgroup reduction has to combine.
|
|
28
|
+
*
|
|
29
|
+
* WGSL pins the subgroup size to a power of two in [4, 128], so the worst case is
|
|
30
|
+
* {@link MULTISCATTER_LUT_DIRECTION_COUNT} / 4.
|
|
31
|
+
* @type {number}
|
|
32
|
+
*/
|
|
33
|
+
export const MULTISCATTER_LUT_MAX_SUBGROUP_PARTIALS: number;
|
|
34
|
+
//# sourceMappingURL=MULTISCATTER_LUT_CONFIG.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MULTISCATTER_LUT_CONFIG.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/atmosphere/MULTISCATTER_LUT_CONFIG.js"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,4CAFU,MAAM,CAE+B;AAE/C;;;;;;;GAOG;AACH,+CAFU,MAAM,CAE8F;AAE9G;;;;;;;GAOG;AACH,qCAFU,MAAM,CAEyB;AAEzC;;;;;;;GAOG;AACH,qDAFU,MAAM,CAE2E"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Directions are drawn on an 8x8 grid, stratified in azimuth and in the cosine of the polar
|
|
3
|
+
* angle. Matches Hillaire's `SQRTSAMPLECOUNT`.
|
|
4
|
+
* @type {number}
|
|
5
|
+
*/
|
|
6
|
+
export const MULTISCATTER_LUT_SQRT_SAMPLES = 8;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* One thread integrates one direction, so this is also the workgroup size.
|
|
10
|
+
*
|
|
11
|
+
* 64 is Hillaire's `[numthreads(1,1,64)]` count. It is a multiple of every legal subgroup
|
|
12
|
+
* size up to 64, and the reduction handles a subgroup wider than the workgroup, so no
|
|
13
|
+
* hardware needs a different number here.
|
|
14
|
+
* @type {number}
|
|
15
|
+
*/
|
|
16
|
+
export const MULTISCATTER_LUT_DIRECTION_COUNT = MULTISCATTER_LUT_SQRT_SAMPLES * MULTISCATTER_LUT_SQRT_SAMPLES;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Ray-march steps per direction. Hillaire's `SampleCountIni` for this LUT; the comment there
|
|
20
|
+
* reads "a minimum set of step is required for accuracy unfortunately".
|
|
21
|
+
*
|
|
22
|
+
* Compile-time on purpose: as a uniform the inner loop cannot be unrolled and the trip count
|
|
23
|
+
* has to be re-tested against an f32 every iteration.
|
|
24
|
+
* @type {number}
|
|
25
|
+
*/
|
|
26
|
+
export const MULTISCATTER_LUT_STEPS = 20;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Upper bound on the number of subgroups in one workgroup, which is how many partial sums
|
|
30
|
+
* the cross-subgroup reduction has to combine.
|
|
31
|
+
*
|
|
32
|
+
* WGSL pins the subgroup size to a power of two in [4, 128], so the worst case is
|
|
33
|
+
* {@link MULTISCATTER_LUT_DIRECTION_COUNT} / 4.
|
|
34
|
+
* @type {number}
|
|
35
|
+
*/
|
|
36
|
+
export const MULTISCATTER_LUT_MAX_SUBGROUP_PARTIALS = MULTISCATTER_LUT_DIRECTION_COUNT / 4;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filtering sampler for the sky LUTs (transmittance, multiple-scattering).
|
|
3
|
+
*
|
|
4
|
+
* Both LUTs are `rgba16float`, which is filterable in core WebGPU — only the 32-bit float
|
|
5
|
+
* formats need the `float32-filterable` feature — so these can go through the texture unit
|
|
6
|
+
* instead of the 4-tap manual bilinear in `texture_sample_bilinear_uv`.
|
|
7
|
+
*
|
|
8
|
+
* `min` and `mag` are both set: the LUTs are single-mip and sampled with an explicit LOD of
|
|
9
|
+
* 0, which selects the magnification filter, but relying on that alone would silently fall
|
|
10
|
+
* back to point sampling if either LUT ever grew mips.
|
|
11
|
+
*
|
|
12
|
+
* Clamp-to-edge reproduces the manual filter's per-corner clamping exactly: `uv` is
|
|
13
|
+
* saturated by `sky_lut_uv`, and at the edges both bilinear taps collapse onto the edge
|
|
14
|
+
* texel.
|
|
15
|
+
*
|
|
16
|
+
* @type {Readonly<SamplerDescriptor>}
|
|
17
|
+
*/
|
|
18
|
+
export const SAMPLER_SKY_LUT: Readonly<SamplerDescriptor>;
|
|
19
|
+
import { SamplerDescriptor } from "../../descriptor/texture/SamplerDescriptor.js";
|
|
20
|
+
//# sourceMappingURL=SAMPLER_SKY_LUT.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SAMPLER_SKY_LUT.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/atmosphere/SAMPLER_SKY_LUT.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AACH,8BAFU,SAAS,iBAAiB,CAAC,CAOjC;kCAxB8B,+CAA+C"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { SamplerDescriptor } from "../../descriptor/texture/SamplerDescriptor.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Filtering sampler for the sky LUTs (transmittance, multiple-scattering).
|
|
5
|
+
*
|
|
6
|
+
* Both LUTs are `rgba16float`, which is filterable in core WebGPU — only the 32-bit float
|
|
7
|
+
* formats need the `float32-filterable` feature — so these can go through the texture unit
|
|
8
|
+
* instead of the 4-tap manual bilinear in `texture_sample_bilinear_uv`.
|
|
9
|
+
*
|
|
10
|
+
* `min` and `mag` are both set: the LUTs are single-mip and sampled with an explicit LOD of
|
|
11
|
+
* 0, which selects the magnification filter, but relying on that alone would silently fall
|
|
12
|
+
* back to point sampling if either LUT ever grew mips.
|
|
13
|
+
*
|
|
14
|
+
* Clamp-to-edge reproduces the manual filter's per-corner clamping exactly: `uv` is
|
|
15
|
+
* saturated by `sky_lut_uv`, and at the edges both bilinear taps collapse onto the edge
|
|
16
|
+
* texel.
|
|
17
|
+
*
|
|
18
|
+
* @type {Readonly<SamplerDescriptor>}
|
|
19
|
+
*/
|
|
20
|
+
export const SAMPLER_SKY_LUT = Object.freeze(SamplerDescriptor.from({
|
|
21
|
+
magFilter: "linear",
|
|
22
|
+
minFilter: "linear",
|
|
23
|
+
addressModeU: "clamp-to-edge",
|
|
24
|
+
addressModeV: "clamp-to-edge",
|
|
25
|
+
}));
|
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* One direction's contribution to Equations (5) and (7) from the paper: `out_lum` is the
|
|
3
|
+
* second-order in-scattered luminance along `rayDir`, `out_fms` the luminance that would
|
|
4
|
+
* come back if the medium scattered one unit of light isotropically. The caller integrates
|
|
5
|
+
* over the direction set -- see {@link chunk_multiscatter_sample_direction} -- by taking the
|
|
6
|
+
* mean, which is what the paper's uniform phase p_u = 1/(4*PI) reduces to.
|
|
7
|
+
*
|
|
8
|
+
* Splitting one direction out of the loop is what lets `shader_multiscatter_lut` put a
|
|
9
|
+
* thread on each of the 64 directions, the way Hillaire's `NewMultiScattCS` does.
|
|
10
|
+
*
|
|
11
|
+
* `pos` is assumed to be inside the atmosphere and at or above the surface, which is what
|
|
12
|
+
* makes the far root of the outer sphere the atmosphere exit.
|
|
13
|
+
*
|
|
3
14
|
* @see "A Scalable and Production Ready Sky and Atmosphere Rendering Technique", Hillaire (2020)
|
|
15
|
+
* @see https://www.shadertoy.com/view/slSXRW
|
|
16
|
+
* @type {CodeChunk}
|
|
4
17
|
*/
|
|
5
18
|
export const chunk_get_multiscatter_values: CodeChunk;
|
|
6
19
|
import { CodeChunk } from "../shader/compiler/CodeChunk.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_get_multiscatter_values.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/atmosphere/chunk_get_multiscatter_values.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chunk_get_multiscatter_values.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/atmosphere/chunk_get_multiscatter_values.js"],"names":[],"mappings":"AAuBA;;;;;;;;;;;;;;;;GAgBG;AACH,4CAFU,SAAS,CA4HlB;0BAjJyB,iCAAiC"}
|