@ifc-lite/renderer 3.2.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/aabb-edges.d.ts +10 -0
- package/dist/aabb-edges.d.ts.map +1 -1
- package/dist/aabb-edges.js +13 -0
- package/dist/aabb-edges.js.map +1 -1
- package/dist/ao-params.d.ts +85 -0
- package/dist/ao-params.d.ts.map +1 -0
- package/dist/ao-params.js +109 -0
- package/dist/ao-params.js.map +1 -0
- package/dist/ao-pass.d.ts +47 -0
- package/dist/ao-pass.d.ts.map +1 -0
- package/dist/ao-pass.js +157 -0
- package/dist/ao-pass.js.map +1 -0
- package/dist/camera-matrices.d.ts +3 -0
- package/dist/camera-matrices.d.ts.map +1 -1
- package/dist/camera-matrices.js +12 -1
- package/dist/camera-matrices.js.map +1 -1
- package/dist/camera-orientation.d.ts +62 -0
- package/dist/camera-orientation.d.ts.map +1 -0
- package/dist/camera-orientation.js +155 -0
- package/dist/camera-orientation.js.map +1 -0
- package/dist/camera-projection.d.ts +3 -1
- package/dist/camera-projection.d.ts.map +1 -1
- package/dist/camera-projection.js +26 -20
- package/dist/camera-projection.js.map +1 -1
- package/dist/camera-surface-zoom.d.ts +32 -0
- package/dist/camera-surface-zoom.d.ts.map +1 -0
- package/dist/camera-surface-zoom.js +37 -0
- package/dist/camera-surface-zoom.js.map +1 -0
- package/dist/camera.d.ts +32 -61
- package/dist/camera.d.ts.map +1 -1
- package/dist/camera.js +71 -167
- package/dist/camera.js.map +1 -1
- package/dist/clash-solid-pipeline.d.ts +9 -3
- package/dist/clash-solid-pipeline.d.ts.map +1 -1
- package/dist/clash-solid-pipeline.js +31 -8
- package/dist/clash-solid-pipeline.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +4 -3
- package/dist/constants.js.map +1 -1
- package/dist/depth-reconstruct.d.ts +43 -0
- package/dist/depth-reconstruct.d.ts.map +1 -0
- package/dist/depth-reconstruct.js +35 -0
- package/dist/depth-reconstruct.js.map +1 -0
- package/dist/device.js +1 -1
- package/dist/device.js.map +1 -1
- package/dist/edge-params.d.ts +43 -0
- package/dist/edge-params.d.ts.map +1 -0
- package/dist/edge-params.js +63 -0
- package/dist/edge-params.js.map +1 -0
- package/dist/edge-pass.d.ts +38 -0
- package/dist/edge-pass.d.ts.map +1 -0
- package/dist/edge-pass.js +111 -0
- package/dist/edge-pass.js.map +1 -0
- package/dist/environment.d.ts +26 -15
- package/dist/environment.d.ts.map +1 -1
- package/dist/environment.js +24 -13
- package/dist/environment.js.map +1 -1
- package/dist/federation-registry.d.ts +16 -0
- package/dist/federation-registry.d.ts.map +1 -1
- package/dist/federation-registry.js +80 -9
- package/dist/federation-registry.js.map +1 -1
- package/dist/gpu-static-upload.d.ts +39 -0
- package/dist/gpu-static-upload.d.ts.map +1 -0
- package/dist/gpu-static-upload.js +70 -0
- package/dist/gpu-static-upload.js.map +1 -0
- package/dist/gpu-upload-guard.d.ts +12 -23
- package/dist/gpu-upload-guard.d.ts.map +1 -1
- package/dist/gpu-upload-guard.js +12 -26
- package/dist/gpu-upload-guard.js.map +1 -1
- package/dist/index.d.ts +58 -35
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +255 -284
- package/dist/index.js.map +1 -1
- package/dist/instanced-render.d.ts +25 -5
- package/dist/instanced-render.d.ts.map +1 -1
- package/dist/instanced-render.js +50 -13
- package/dist/instanced-render.js.map +1 -1
- package/dist/instanced-rte.d.ts +17 -0
- package/dist/instanced-rte.d.ts.map +1 -0
- package/dist/instanced-rte.js +32 -0
- package/dist/instanced-rte.js.map +1 -0
- package/dist/mesh-material.d.ts +26 -0
- package/dist/mesh-material.d.ts.map +1 -0
- package/dist/mesh-material.js +52 -0
- package/dist/mesh-material.js.map +1 -0
- package/dist/mesh-rte-uniforms.d.ts +47 -0
- package/dist/mesh-rte-uniforms.d.ts.map +1 -0
- package/dist/mesh-rte-uniforms.js +60 -0
- package/dist/mesh-rte-uniforms.js.map +1 -0
- package/dist/model-bounds-tracker.d.ts +7 -0
- package/dist/model-bounds-tracker.d.ts.map +1 -1
- package/dist/model-bounds-tracker.js +16 -5
- package/dist/model-bounds-tracker.js.map +1 -1
- package/dist/model-translation.d.ts +1 -1
- package/dist/model-translation.d.ts.map +1 -1
- package/dist/model-translation.js +50 -2
- package/dist/model-translation.js.map +1 -1
- package/dist/overlay-theme-uniforms.d.ts +54 -0
- package/dist/overlay-theme-uniforms.d.ts.map +1 -0
- package/dist/overlay-theme-uniforms.js +89 -0
- package/dist/overlay-theme-uniforms.js.map +1 -0
- package/dist/overlay-theme.d.ts +73 -0
- package/dist/overlay-theme.d.ts.map +1 -0
- package/dist/overlay-theme.js +24 -0
- package/dist/overlay-theme.js.map +1 -0
- package/dist/pick-rte-snapshot.d.ts +7 -0
- package/dist/pick-rte-snapshot.d.ts.map +1 -0
- package/dist/pick-rte-snapshot.js +15 -0
- package/dist/pick-rte-snapshot.js.map +1 -0
- package/dist/pick-types.d.ts +17 -0
- package/dist/pick-types.d.ts.map +1 -0
- package/dist/pick-types.js +5 -0
- package/dist/pick-types.js.map +1 -0
- package/dist/pick-uniforms.d.ts +6 -0
- package/dist/pick-uniforms.d.ts.map +1 -1
- package/dist/pick-uniforms.js +22 -18
- package/dist/pick-uniforms.js.map +1 -1
- package/dist/pick-world-position.d.ts +18 -0
- package/dist/pick-world-position.d.ts.map +1 -0
- package/dist/pick-world-position.js +21 -0
- package/dist/pick-world-position.js.map +1 -0
- package/dist/picker-readbacks.d.ts +6 -0
- package/dist/picker-readbacks.d.ts.map +1 -0
- package/dist/picker-readbacks.js +20 -0
- package/dist/picker-readbacks.js.map +1 -0
- package/dist/picker-rte-uniforms.d.ts +6 -0
- package/dist/picker-rte-uniforms.d.ts.map +1 -0
- package/dist/picker-rte-uniforms.js +41 -0
- package/dist/picker-rte-uniforms.js.map +1 -0
- package/dist/picker.d.ts +6 -7
- package/dist/picker.d.ts.map +1 -1
- package/dist/picker.js +88 -115
- package/dist/picker.js.map +1 -1
- package/dist/picking-manager.d.ts +8 -0
- package/dist/picking-manager.d.ts.map +1 -1
- package/dist/picking-manager.js +46 -19
- package/dist/picking-manager.js.map +1 -1
- package/dist/pipeline.d.ts +3 -7
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +27 -31
- package/dist/pipeline.js.map +1 -1
- package/dist/point-picker.d.ts +5 -1
- package/dist/point-picker.d.ts.map +1 -1
- package/dist/point-picker.js +49 -9
- package/dist/point-picker.js.map +1 -1
- package/dist/pointcloud/point-cloud-handle-ids.d.ts +22 -0
- package/dist/pointcloud/point-cloud-handle-ids.d.ts.map +1 -0
- package/dist/pointcloud/point-cloud-handle-ids.js +31 -0
- package/dist/pointcloud/point-cloud-handle-ids.js.map +1 -0
- package/dist/pointcloud/point-cloud-node.d.ts +14 -6
- package/dist/pointcloud/point-cloud-node.d.ts.map +1 -1
- package/dist/pointcloud/point-cloud-node.js.map +1 -1
- package/dist/pointcloud/point-cloud-pick-sources.d.ts +47 -0
- package/dist/pointcloud/point-cloud-pick-sources.d.ts.map +1 -0
- package/dist/pointcloud/point-cloud-pick-sources.js +32 -0
- package/dist/pointcloud/point-cloud-pick-sources.js.map +1 -0
- package/dist/pointcloud/point-cloud-placement.d.ts.map +1 -1
- package/dist/pointcloud/point-cloud-placement.js +20 -5
- package/dist/pointcloud/point-cloud-placement.js.map +1 -1
- package/dist/pointcloud/point-cloud-ray-transform.d.ts +78 -4
- package/dist/pointcloud/point-cloud-ray-transform.d.ts.map +1 -1
- package/dist/pointcloud/point-cloud-ray-transform.js +31 -84
- package/dist/pointcloud/point-cloud-ray-transform.js.map +1 -1
- package/dist/pointcloud/point-cloud-renderer.d.ts +21 -19
- package/dist/pointcloud/point-cloud-renderer.d.ts.map +1 -1
- package/dist/pointcloud/point-cloud-renderer.js +46 -52
- package/dist/pointcloud/point-cloud-renderer.js.map +1 -1
- package/dist/pointcloud/point-cloud-stream-lifecycle.d.ts +44 -0
- package/dist/pointcloud/point-cloud-stream-lifecycle.d.ts.map +1 -0
- package/dist/pointcloud/point-cloud-stream-lifecycle.js +44 -0
- package/dist/pointcloud/point-cloud-stream-lifecycle.js.map +1 -0
- package/dist/pointcloud/point-cloud-uniforms.d.ts +5 -0
- package/dist/pointcloud/point-cloud-uniforms.d.ts.map +1 -1
- package/dist/pointcloud/point-cloud-uniforms.js +55 -44
- package/dist/pointcloud/point-cloud-uniforms.js.map +1 -1
- package/dist/pointcloud/point-cloud-visibility.d.ts +10 -0
- package/dist/pointcloud/point-cloud-visibility.d.ts.map +1 -0
- package/dist/pointcloud/point-cloud-visibility.js +18 -0
- package/dist/pointcloud/point-cloud-visibility.js.map +1 -0
- package/dist/pointcloud/point-pipeline.d.ts +4 -9
- package/dist/pointcloud/point-pipeline.d.ts.map +1 -1
- package/dist/pointcloud/point-pipeline.js +4 -9
- package/dist/pointcloud/point-pipeline.js.map +1 -1
- package/dist/pointcloud/point-shader.wgsl.d.ts +1 -21
- package/dist/pointcloud/point-shader.wgsl.d.ts.map +1 -1
- package/dist/pointcloud/point-shader.wgsl.js +25 -5
- package/dist/pointcloud/point-shader.wgsl.js.map +1 -1
- package/dist/post-pass-chain.d.ts +38 -0
- package/dist/post-pass-chain.d.ts.map +1 -0
- package/dist/post-pass-chain.js +105 -0
- package/dist/post-pass-chain.js.map +1 -0
- package/dist/raycast-engine.d.ts +7 -5
- package/dist/raycast-engine.d.ts.map +1 -1
- package/dist/raycast-engine.js +17 -20
- package/dist/raycast-engine.js.map +1 -1
- package/dist/raycast-point-cloud-query.d.ts +1 -1
- package/dist/raycast-point-cloud-query.d.ts.map +1 -1
- package/dist/reference-image-pipeline.d.ts +1 -1
- package/dist/reference-image-pipeline.d.ts.map +1 -1
- package/dist/reference-image-pipeline.js +25 -7
- package/dist/reference-image-pipeline.js.map +1 -1
- package/dist/reference-images.d.ts +1 -1
- package/dist/reference-images.d.ts.map +1 -1
- package/dist/reference-images.js +13 -5
- package/dist/reference-images.js.map +1 -1
- package/dist/relative-to-eye.d.ts +146 -0
- package/dist/relative-to-eye.d.ts.map +1 -0
- package/dist/relative-to-eye.js +326 -0
- package/dist/relative-to-eye.js.map +1 -0
- package/dist/render-section-draw.d.ts +11 -0
- package/dist/render-section-draw.d.ts.map +1 -1
- package/dist/render-section-draw.js +6 -3
- package/dist/render-section-draw.js.map +1 -1
- package/dist/renderer-color-readback.d.ts +50 -0
- package/dist/renderer-color-readback.d.ts.map +1 -0
- package/dist/renderer-color-readback.js +145 -0
- package/dist/renderer-color-readback.js.map +1 -0
- package/dist/renderer-overlays.d.ts +20 -10
- package/dist/renderer-overlays.d.ts.map +1 -1
- package/dist/renderer-overlays.js +44 -34
- package/dist/renderer-overlays.js.map +1 -1
- package/dist/renderer-screenshot.d.ts +4 -0
- package/dist/renderer-screenshot.d.ts.map +1 -0
- package/dist/renderer-screenshot.js +17 -0
- package/dist/renderer-screenshot.js.map +1 -0
- package/dist/renderer-symbolic-overlays.d.ts +4 -2
- package/dist/renderer-symbolic-overlays.d.ts.map +1 -1
- package/dist/renderer-symbolic-overlays.js +33 -13
- package/dist/renderer-symbolic-overlays.js.map +1 -1
- package/dist/renderer-viewport.d.ts +45 -0
- package/dist/renderer-viewport.d.ts.map +1 -1
- package/dist/renderer-viewport.js +44 -0
- package/dist/renderer-viewport.js.map +1 -1
- package/dist/rte-clip-space.d.ts +12 -0
- package/dist/rte-clip-space.d.ts.map +1 -0
- package/dist/rte-clip-space.js +22 -0
- package/dist/rte-clip-space.js.map +1 -0
- package/dist/rte-frustum.d.ts +24 -0
- package/dist/rte-frustum.d.ts.map +1 -0
- package/dist/rte-frustum.js +45 -0
- package/dist/rte-frustum.js.map +1 -0
- package/dist/scene-batch-upload.d.ts.map +1 -1
- package/dist/scene-batch-upload.js +14 -38
- package/dist/scene-batch-upload.js.map +1 -1
- package/dist/scene-device-recovery.d.ts.map +1 -1
- package/dist/scene-device-recovery.js +5 -9
- package/dist/scene-device-recovery.js.map +1 -1
- package/dist/scene-finalize-regroup.d.ts +54 -0
- package/dist/scene-finalize-regroup.d.ts.map +1 -0
- package/dist/scene-finalize-regroup.js +136 -0
- package/dist/scene-finalize-regroup.js.map +1 -0
- package/dist/scene-instance-bounds.d.ts +12 -0
- package/dist/scene-instance-bounds.d.ts.map +1 -0
- package/dist/scene-instance-bounds.js +48 -0
- package/dist/scene-instance-bounds.js.map +1 -0
- package/dist/scene-instance-materialization.d.ts +4 -1
- package/dist/scene-instance-materialization.d.ts.map +1 -1
- package/dist/scene-instance-materialization.js +21 -6
- package/dist/scene-instance-materialization.js.map +1 -1
- package/dist/scene-instance-translation.d.ts +17 -0
- package/dist/scene-instance-translation.d.ts.map +1 -0
- package/dist/scene-instance-translation.js +50 -0
- package/dist/scene-instance-translation.js.map +1 -0
- package/dist/scene-instance-types.d.ts +6 -0
- package/dist/scene-instance-types.d.ts.map +1 -1
- package/dist/scene-model-translation.d.ts +2 -0
- package/dist/scene-model-translation.d.ts.map +1 -1
- package/dist/scene-model-translation.js +1 -1
- package/dist/scene-model-translation.js.map +1 -1
- package/dist/scene-rect-select.d.ts +11 -1
- package/dist/scene-rect-select.d.ts.map +1 -1
- package/dist/scene-rect-select.js +7 -4
- package/dist/scene-rect-select.js.map +1 -1
- package/dist/scene.d.ts +27 -20
- package/dist/scene.d.ts.map +1 -1
- package/dist/scene.js +109 -238
- package/dist/scene.js.map +1 -1
- package/dist/section-2d-lift.d.ts +10 -2
- package/dist/section-2d-lift.d.ts.map +1 -1
- package/dist/section-2d-lift.js +14 -6
- package/dist/section-2d-lift.js.map +1 -1
- package/dist/section-2d-line-buffer.d.ts +12 -4
- package/dist/section-2d-line-buffer.d.ts.map +1 -1
- package/dist/section-2d-line-buffer.js +59 -33
- package/dist/section-2d-line-buffer.js.map +1 -1
- package/dist/section-2d-overlay.d.ts +18 -72
- package/dist/section-2d-overlay.d.ts.map +1 -1
- package/dist/section-2d-overlay.js +72 -103
- package/dist/section-2d-overlay.js.map +1 -1
- package/dist/section-2d-types.d.ts +38 -0
- package/dist/section-2d-types.d.ts.map +1 -0
- package/dist/section-2d-types.js +6 -0
- package/dist/section-2d-types.js.map +1 -0
- package/dist/section-cap-pipelines.d.ts +6 -0
- package/dist/section-cap-pipelines.d.ts.map +1 -0
- package/dist/section-cap-pipelines.js +87 -0
- package/dist/section-cap-pipelines.js.map +1 -0
- package/dist/section-plane-geometry.d.ts +24 -0
- package/dist/section-plane-geometry.d.ts.map +1 -0
- package/dist/section-plane-geometry.js +93 -0
- package/dist/section-plane-geometry.js.map +1 -0
- package/dist/section-plane.d.ts +26 -24
- package/dist/section-plane.d.ts.map +1 -1
- package/dist/section-plane.js +57 -182
- package/dist/section-plane.js.map +1 -1
- package/dist/shaders/ao.wgsl.d.ts +2 -0
- package/dist/shaders/ao.wgsl.d.ts.map +1 -0
- package/dist/shaders/ao.wgsl.js +234 -0
- package/dist/shaders/ao.wgsl.js.map +1 -0
- package/dist/shaders/color-transfer.wgsl.d.ts +28 -0
- package/dist/shaders/color-transfer.wgsl.d.ts.map +1 -0
- package/dist/shaders/color-transfer.wgsl.js +55 -0
- package/dist/shaders/color-transfer.wgsl.js.map +1 -0
- package/dist/shaders/depth-reconstruct.wgsl.d.ts +16 -0
- package/dist/shaders/depth-reconstruct.wgsl.d.ts.map +1 -0
- package/dist/shaders/depth-reconstruct.wgsl.js +69 -0
- package/dist/shaders/depth-reconstruct.wgsl.js.map +1 -0
- package/dist/shaders/edges.wgsl.d.ts +2 -0
- package/dist/shaders/edges.wgsl.d.ts.map +1 -0
- package/dist/shaders/edges.wgsl.js +158 -0
- package/dist/shaders/edges.wgsl.js.map +1 -0
- package/dist/shaders/main-rte-shadow.wgsl.d.ts +4 -0
- package/dist/shaders/main-rte-shadow.wgsl.d.ts.map +1 -0
- package/dist/shaders/main-rte-shadow.wgsl.js +54 -0
- package/dist/shaders/main-rte-shadow.wgsl.js.map +1 -0
- package/dist/shaders/main.wgsl.d.ts +1 -6
- package/dist/shaders/main.wgsl.d.ts.map +1 -1
- package/dist/shaders/main.wgsl.js +183 -228
- package/dist/shaders/main.wgsl.js.map +1 -1
- package/dist/shaders/relative-to-eye.wgsl.d.ts +12 -0
- package/dist/shaders/relative-to-eye.wgsl.d.ts.map +1 -0
- package/dist/shaders/relative-to-eye.wgsl.js +40 -0
- package/dist/shaders/relative-to-eye.wgsl.js.map +1 -0
- package/dist/shaders/section-2d-overlay.wgsl.d.ts +28 -12
- package/dist/shaders/section-2d-overlay.wgsl.d.ts.map +1 -1
- package/dist/shaders/section-2d-overlay.wgsl.js +40 -13
- package/dist/shaders/section-2d-overlay.wgsl.js.map +1 -1
- package/dist/shaders/shadow.wgsl.d.ts +1 -1
- package/dist/shaders/shadow.wgsl.d.ts.map +1 -1
- package/dist/shaders/shadow.wgsl.js +25 -7
- package/dist/shaders/shadow.wgsl.js.map +1 -1
- package/dist/shaders/sky.wgsl.d.ts +1 -11
- package/dist/shaders/sky.wgsl.d.ts.map +1 -1
- package/dist/shaders/sky.wgsl.js +17 -19
- package/dist/shaders/sky.wgsl.js.map +1 -1
- package/dist/shaders/specular.wgsl.d.ts +34 -0
- package/dist/shaders/specular.wgsl.d.ts.map +1 -0
- package/dist/shaders/specular.wgsl.js +134 -0
- package/dist/shaders/specular.wgsl.js.map +1 -0
- package/dist/shaders/symbolic-overlay.wgsl.d.ts +2 -9
- package/dist/shaders/symbolic-overlay.wgsl.d.ts.map +1 -1
- package/dist/shaders/symbolic-overlay.wgsl.js +88 -17
- package/dist/shaders/symbolic-overlay.wgsl.js.map +1 -1
- package/dist/shaders/textured.wgsl.d.ts.map +1 -1
- package/dist/shaders/textured.wgsl.js +11 -9
- package/dist/shaders/textured.wgsl.js.map +1 -1
- package/dist/shadow-light-matrix.d.ts +7 -0
- package/dist/shadow-light-matrix.d.ts.map +1 -1
- package/dist/shadow-light-matrix.js +11 -0
- package/dist/shadow-light-matrix.js.map +1 -1
- package/dist/shadow-occluder-batches.d.ts +10 -0
- package/dist/shadow-occluder-batches.d.ts.map +1 -0
- package/dist/shadow-occluder-batches.js +39 -0
- package/dist/shadow-occluder-batches.js.map +1 -0
- package/dist/shadow-occluders.d.ts.map +1 -1
- package/dist/shadow-occluders.js +4 -0
- package/dist/shadow-occluders.js.map +1 -1
- package/dist/shadow-pass.d.ts +5 -51
- package/dist/shadow-pass.d.ts.map +1 -1
- package/dist/shadow-pass.js +49 -45
- package/dist/shadow-pass.js.map +1 -1
- package/dist/shadow-types.d.ts +39 -0
- package/dist/shadow-types.d.ts.map +1 -0
- package/dist/shadow-types.js +15 -0
- package/dist/shadow-types.js.map +1 -0
- package/dist/symbolic-overlay-geometry.d.ts +7 -0
- package/dist/symbolic-overlay-geometry.d.ts.map +1 -0
- package/dist/symbolic-overlay-geometry.js +43 -0
- package/dist/symbolic-overlay-geometry.js.map +1 -0
- package/dist/symbolic-overlay-pipelines.d.ts +24 -36
- package/dist/symbolic-overlay-pipelines.d.ts.map +1 -1
- package/dist/symbolic-overlay-pipelines.js +175 -182
- package/dist/symbolic-overlay-pipelines.js.map +1 -1
- package/dist/symbolic-text-atlas.d.ts +21 -0
- package/dist/symbolic-text-atlas.d.ts.map +1 -1
- package/dist/symbolic-text-atlas.js +29 -1
- package/dist/symbolic-text-atlas.js.map +1 -1
- package/dist/types.d.ts +20 -26
- package/dist/types.d.ts.map +1 -1
- package/dist/visual-enhancement.d.ts +30 -1
- package/dist/visual-enhancement.d.ts.map +1 -1
- package/dist/visual-enhancement.js +44 -12
- package/dist/visual-enhancement.js.map +1 -1
- package/package.json +3 -3
- package/dist/post-processor.d.ts +0 -60
- package/dist/post-processor.d.ts.map +0 -1
- package/dist/post-processor.js +0 -353
- package/dist/post-processor.js.map +0 -1
package/dist/post-processor.js
DELETED
|
@@ -1,353 +0,0 @@
|
|
|
1
|
-
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
-
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
-
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
-
/**
|
|
5
|
-
* Post-processing pipeline
|
|
6
|
-
* Currently implements enhanced tone mapping in shader
|
|
7
|
-
* SSAO and edge enhancement can be added as separate passes
|
|
8
|
-
*/
|
|
9
|
-
export class PostProcessor {
|
|
10
|
-
_device;
|
|
11
|
-
options;
|
|
12
|
-
colorFormat;
|
|
13
|
-
isMultisampled;
|
|
14
|
-
uniformBuffer;
|
|
15
|
-
uniformStaging;
|
|
16
|
-
uniformF32;
|
|
17
|
-
uniformU32;
|
|
18
|
-
bindGroupLayout;
|
|
19
|
-
pipeline;
|
|
20
|
-
cachedBindGroup = null;
|
|
21
|
-
cachedDepthView = null;
|
|
22
|
-
cachedObjectIdView = null;
|
|
23
|
-
constructor(device, options = {}, sampleCount = 1) {
|
|
24
|
-
this._device = device.getDevice();
|
|
25
|
-
this.colorFormat = device.getFormat();
|
|
26
|
-
this.isMultisampled = sampleCount > 1;
|
|
27
|
-
this.options = {
|
|
28
|
-
enableContactShading: false,
|
|
29
|
-
contactRadius: 1.0,
|
|
30
|
-
contactIntensity: 0.3,
|
|
31
|
-
...options,
|
|
32
|
-
};
|
|
33
|
-
this.uniformStaging = new ArrayBuffer(48);
|
|
34
|
-
this.uniformF32 = new Float32Array(this.uniformStaging);
|
|
35
|
-
this.uniformU32 = new Uint32Array(this.uniformStaging);
|
|
36
|
-
this.uniformBuffer = this._device.createBuffer({
|
|
37
|
-
// WGSL uniform layout for Params requires 48 bytes due to 16-byte alignment.
|
|
38
|
-
size: 48,
|
|
39
|
-
usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
|
|
40
|
-
});
|
|
41
|
-
this.bindGroupLayout = this._device.createBindGroupLayout({
|
|
42
|
-
entries: [
|
|
43
|
-
{
|
|
44
|
-
binding: 0,
|
|
45
|
-
visibility: GPUShaderStage.FRAGMENT,
|
|
46
|
-
texture: { sampleType: 'depth', viewDimension: '2d', multisampled: this.isMultisampled },
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
binding: 1,
|
|
50
|
-
visibility: GPUShaderStage.FRAGMENT,
|
|
51
|
-
texture: { sampleType: 'unfilterable-float', viewDimension: '2d', multisampled: this.isMultisampled },
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
binding: 2,
|
|
55
|
-
visibility: GPUShaderStage.FRAGMENT,
|
|
56
|
-
buffer: { type: 'uniform' },
|
|
57
|
-
},
|
|
58
|
-
],
|
|
59
|
-
});
|
|
60
|
-
const depthTexDecl = this.isMultisampled
|
|
61
|
-
? '@group(0) @binding(0) var depthTex: texture_depth_multisampled_2d;'
|
|
62
|
-
: '@group(0) @binding(0) var depthTex: texture_depth_2d;';
|
|
63
|
-
const idTexDecl = this.isMultisampled
|
|
64
|
-
? '@group(0) @binding(1) var idTex: texture_multisampled_2d<f32>;'
|
|
65
|
-
: '@group(0) @binding(1) var idTex: texture_2d<f32>;';
|
|
66
|
-
const depthLoadExpr = this.isMultisampled
|
|
67
|
-
? 'textureLoad(depthTex, c, 0u)'
|
|
68
|
-
: 'textureLoad(depthTex, c, 0)';
|
|
69
|
-
const idLoadExpr = this.isMultisampled
|
|
70
|
-
? 'textureLoad(idTex, c, 0u)'
|
|
71
|
-
: 'textureLoad(idTex, c, 0)';
|
|
72
|
-
const shader = this._device.createShaderModule({
|
|
73
|
-
code: `
|
|
74
|
-
struct Params {
|
|
75
|
-
contactRadiusPx: f32,
|
|
76
|
-
contactIntensity: f32,
|
|
77
|
-
seamRadiusPx: f32,
|
|
78
|
-
seamIntensity: f32,
|
|
79
|
-
flags: vec4<u32>, // x=contactQuality y=seamQuality z=seamsEnabled w=reserved
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
${depthTexDecl}
|
|
83
|
-
${idTexDecl}
|
|
84
|
-
@group(0) @binding(2) var<uniform> params: Params;
|
|
85
|
-
|
|
86
|
-
struct VsOut {
|
|
87
|
-
@builtin(position) pos: vec4<f32>,
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
@vertex
|
|
91
|
-
fn vs_main(@builtin(vertex_index) v: u32) -> VsOut {
|
|
92
|
-
var o: VsOut;
|
|
93
|
-
var p = array<vec2<f32>, 3>(
|
|
94
|
-
vec2<f32>(-1.0, -3.0),
|
|
95
|
-
vec2<f32>(-1.0, 1.0),
|
|
96
|
-
vec2<f32>( 3.0, 1.0)
|
|
97
|
-
);
|
|
98
|
-
o.pos = vec4<f32>(p[v], 0.0, 1.0);
|
|
99
|
-
return o;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
fn sampleDepthClamped(ip: vec2<i32>, dims: vec2<i32>) -> f32 {
|
|
103
|
-
let c = vec2<i32>(clamp(ip.x, 0, dims.x - 1), clamp(ip.y, 0, dims.y - 1));
|
|
104
|
-
return ${depthLoadExpr};
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
fn decodeId24(encoded: vec4<f32>) -> u32 {
|
|
108
|
-
let r = u32(round(encoded.r * 255.0)) & 255u;
|
|
109
|
-
let g = u32(round(encoded.g * 255.0)) & 255u;
|
|
110
|
-
let b = u32(round(encoded.b * 255.0)) & 255u;
|
|
111
|
-
return (r << 16u) | (g << 8u) | b;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
fn sampleIdClamped(ip: vec2<i32>, dims: vec2<i32>) -> u32 {
|
|
115
|
-
let c = vec2<i32>(clamp(ip.x, 0, dims.x - 1), clamp(ip.y, 0, dims.y - 1));
|
|
116
|
-
return decodeId24(${idLoadExpr});
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
@fragment
|
|
120
|
-
fn fs_main(@builtin(position) fragPos: vec4<f32>) -> @location(0) vec4<f32> {
|
|
121
|
-
let dimsU = textureDimensions(depthTex);
|
|
122
|
-
let dims = vec2<i32>(i32(dimsU.x), i32(dimsU.y));
|
|
123
|
-
let p = vec2<i32>(i32(fragPos.x), i32(fragPos.y));
|
|
124
|
-
|
|
125
|
-
let center = sampleDepthClamped(p, dims);
|
|
126
|
-
if (center <= 0.00001) {
|
|
127
|
-
return vec4<f32>(0.0, 0.0, 0.0, 0.0);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
let r = max(1, i32(params.contactRadiusPx));
|
|
131
|
-
var accum = 0.0;
|
|
132
|
-
var count = 0.0;
|
|
133
|
-
|
|
134
|
-
// Reverse-Z: higher depth means closer to camera.
|
|
135
|
-
let d1 = sampleDepthClamped(p + vec2<i32>( r, 0), dims);
|
|
136
|
-
let d2 = sampleDepthClamped(p + vec2<i32>(-r, 0), dims);
|
|
137
|
-
let d3 = sampleDepthClamped(p + vec2<i32>( 0, r), dims);
|
|
138
|
-
let d4 = sampleDepthClamped(p + vec2<i32>( 0, -r), dims);
|
|
139
|
-
accum += max(0.0, d1 - center);
|
|
140
|
-
accum += max(0.0, d2 - center);
|
|
141
|
-
accum += max(0.0, d3 - center);
|
|
142
|
-
accum += max(0.0, d4 - center);
|
|
143
|
-
count += 4.0;
|
|
144
|
-
|
|
145
|
-
if (params.flags.x == 1u) {
|
|
146
|
-
let d5 = sampleDepthClamped(p + vec2<i32>( r, r), dims);
|
|
147
|
-
let d6 = sampleDepthClamped(p + vec2<i32>(-r, r), dims);
|
|
148
|
-
let d7 = sampleDepthClamped(p + vec2<i32>( r, -r), dims);
|
|
149
|
-
let d8 = sampleDepthClamped(p + vec2<i32>(-r, -r), dims);
|
|
150
|
-
accum += max(0.0, d5 - center);
|
|
151
|
-
accum += max(0.0, d6 - center);
|
|
152
|
-
accum += max(0.0, d7 - center);
|
|
153
|
-
accum += max(0.0, d8 - center);
|
|
154
|
-
count += 4.0;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
let contact = clamp((accum / max(count, 1.0)) * (120.0 * params.contactIntensity), 0.0, 0.7);
|
|
158
|
-
|
|
159
|
-
var seam = 0.0;
|
|
160
|
-
if (params.flags.z == 1u) {
|
|
161
|
-
let idCenter = sampleIdClamped(p, dims);
|
|
162
|
-
if (idCenter != 0u) {
|
|
163
|
-
let rs = max(1, i32(params.seamRadiusPx));
|
|
164
|
-
let idX1 = sampleIdClamped(p + vec2<i32>( rs, 0), dims);
|
|
165
|
-
let idX0 = sampleIdClamped(p + vec2<i32>(-rs, 0), dims);
|
|
166
|
-
let idY1 = sampleIdClamped(p + vec2<i32>(0, rs), dims);
|
|
167
|
-
let idY0 = sampleIdClamped(p + vec2<i32>(0, -rs), dims);
|
|
168
|
-
|
|
169
|
-
// Sample depths at same positions to filter coplanar entity boundaries.
|
|
170
|
-
// Coplanar surfaces from different entities only differ by the z-hash
|
|
171
|
-
// anti-z-fighting offset (~2.5e-4 relative). Two complementary gates:
|
|
172
|
-
// - slope-aware first difference: depth-DISCONTINUOUS edges
|
|
173
|
-
// (silhouettes, one surface occluding another).
|
|
174
|
-
// - per-axis second difference > 3e-4: depth-CONTINUOUS creases
|
|
175
|
-
// (wall/wall and floor/wall corners). At a corner the depth slope
|
|
176
|
-
// changes across the seam, so |d(+r) + d(-r) - 2*center| measures
|
|
177
|
-
// the slope mismatch; it stays at the z-hash offset (<= 2.55e-4)
|
|
178
|
-
// for coplanar continuations. The old first-difference-only gate
|
|
179
|
-
// flickered around its threshold along corners -> DASHED lines.
|
|
180
|
-
// Known accepted edges of this gate: a coplanar feature narrower than
|
|
181
|
-
// 2*rs px puts BOTH taps on the other entity (sum of two hash offsets,
|
|
182
|
-
// up to 5.1e-4, can fire) — narrow inter-entity features deserve a seam
|
|
183
|
-
// line anyway. In ortho the z-hash offset shrinks with the scene-fitted
|
|
184
|
-
// far-near range, so large ortho views fall back to the 5e-4 gate.
|
|
185
|
-
let sX1 = sampleDepthClamped(p + vec2<i32>( rs, 0), dims);
|
|
186
|
-
let sX0 = sampleDepthClamped(p + vec2<i32>(-rs, 0), dims);
|
|
187
|
-
let sY1 = sampleDepthClamped(p + vec2<i32>(0, rs), dims);
|
|
188
|
-
let sY0 = sampleDepthClamped(p + vec2<i32>(0, -rs), dims);
|
|
189
|
-
let depthRef = max(center, 0.0001);
|
|
190
|
-
let depthRelThreshold = 5e-4;
|
|
191
|
-
let creaseRelThreshold = 3e-4;
|
|
192
|
-
let creaseX = abs(sX1 + sX0 - 2.0 * center) / depthRef > creaseRelThreshold;
|
|
193
|
-
let creaseY = abs(sY1 + sY0 - 2.0 * center) / depthRef > creaseRelThreshold;
|
|
194
|
-
|
|
195
|
-
// Discontinuity gate, slope-aware: a depth jump only counts as an
|
|
196
|
-
// occlusion edge when it clearly exceeds the in-plane slope measured
|
|
197
|
-
// on the OPPOSITE side of the pixel (2x asymmetry) on top of the
|
|
198
|
-
// absolute floor. A flush coplanar joint viewed at a grazing angle
|
|
199
|
-
// carries a huge per-pixel slope that used to trip the absolute
|
|
200
|
-
// threshold and draw noisy dashed lines across floors/walls; its
|
|
201
|
-
// jumps are symmetric, so the asymmetry test suppresses it. Genuine
|
|
202
|
-
// silhouettes jump far beyond the opposite-side slope. Features whose
|
|
203
|
-
// depth step shrinks below the local slope are sub-pixel at that
|
|
204
|
-
// angle anyway, so fading their line out is the correct behaviour.
|
|
205
|
-
let jX1 = abs(sX1 - center) / depthRef;
|
|
206
|
-
let jX0 = abs(sX0 - center) / depthRef;
|
|
207
|
-
let jY1 = abs(sY1 - center) / depthRef;
|
|
208
|
-
let jY0 = abs(sY0 - center) / depthRef;
|
|
209
|
-
let discX1 = jX1 > max(depthRelThreshold, 2.0 * jX0);
|
|
210
|
-
let discX0 = jX0 > max(depthRelThreshold, 2.0 * jX1);
|
|
211
|
-
let discY1 = jY1 > max(depthRelThreshold, 2.0 * jY0);
|
|
212
|
-
let discY0 = jY0 > max(depthRelThreshold, 2.0 * jY1);
|
|
213
|
-
|
|
214
|
-
let edge4Count =
|
|
215
|
-
f32(idX1 != idCenter && idX1 != 0u && (creaseX || discX1)) +
|
|
216
|
-
f32(idX0 != idCenter && idX0 != 0u && (creaseX || discX0)) +
|
|
217
|
-
f32(idY1 != idCenter && idY1 != 0u && (creaseY || discY1)) +
|
|
218
|
-
f32(idY0 != idCenter && idY0 != 0u && (creaseY || discY0));
|
|
219
|
-
seam = edge4Count * 0.25;
|
|
220
|
-
|
|
221
|
-
if (params.flags.y == 1u) {
|
|
222
|
-
let idD1 = sampleIdClamped(p + vec2<i32>( rs, rs), dims);
|
|
223
|
-
let idD2 = sampleIdClamped(p + vec2<i32>(-rs, rs), dims);
|
|
224
|
-
let idD3 = sampleIdClamped(p + vec2<i32>( rs, -rs), dims);
|
|
225
|
-
let idD4 = sampleIdClamped(p + vec2<i32>(-rs, -rs), dims);
|
|
226
|
-
let sD1 = sampleDepthClamped(p + vec2<i32>( rs, rs), dims);
|
|
227
|
-
let sD2 = sampleDepthClamped(p + vec2<i32>(-rs, rs), dims);
|
|
228
|
-
let sD3 = sampleDepthClamped(p + vec2<i32>( rs, -rs), dims);
|
|
229
|
-
let sD4 = sampleDepthClamped(p + vec2<i32>(-rs, -rs), dims);
|
|
230
|
-
// Same crease + slope-aware discontinuity gates along the diagonals.
|
|
231
|
-
let creaseD1 = abs(sD1 + sD4 - 2.0 * center) / depthRef > creaseRelThreshold;
|
|
232
|
-
let creaseD2 = abs(sD2 + sD3 - 2.0 * center) / depthRef > creaseRelThreshold;
|
|
233
|
-
let jD1 = abs(sD1 - center) / depthRef;
|
|
234
|
-
let jD2 = abs(sD2 - center) / depthRef;
|
|
235
|
-
let jD3 = abs(sD3 - center) / depthRef;
|
|
236
|
-
let jD4 = abs(sD4 - center) / depthRef;
|
|
237
|
-
let discD1 = jD1 > max(depthRelThreshold, 2.0 * jD4);
|
|
238
|
-
let discD4 = jD4 > max(depthRelThreshold, 2.0 * jD1);
|
|
239
|
-
let discD2 = jD2 > max(depthRelThreshold, 2.0 * jD3);
|
|
240
|
-
let discD3 = jD3 > max(depthRelThreshold, 2.0 * jD2);
|
|
241
|
-
let edgeDiagCount =
|
|
242
|
-
f32(idD1 != idCenter && idD1 != 0u && (creaseD1 || discD1)) +
|
|
243
|
-
f32(idD2 != idCenter && idD2 != 0u && (creaseD2 || discD2)) +
|
|
244
|
-
f32(idD3 != idCenter && idD3 != 0u && (creaseD2 || discD3)) +
|
|
245
|
-
f32(idD4 != idCenter && idD4 != 0u && (creaseD1 || discD4));
|
|
246
|
-
let edgeDiag = edgeDiagCount * 0.25;
|
|
247
|
-
seam = max(seam, (seam + edgeDiag) * 0.5);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
let seamDarken = clamp(seam * params.seamIntensity, 0.0, 0.35);
|
|
253
|
-
let overlay = max(contact, seamDarken);
|
|
254
|
-
return vec4<f32>(0.0, 0.0, 0.0, overlay);
|
|
255
|
-
}
|
|
256
|
-
`,
|
|
257
|
-
});
|
|
258
|
-
this.pipeline = this._device.createRenderPipeline({
|
|
259
|
-
layout: this._device.createPipelineLayout({ bindGroupLayouts: [this.bindGroupLayout] }),
|
|
260
|
-
vertex: {
|
|
261
|
-
module: shader,
|
|
262
|
-
entryPoint: 'vs_main',
|
|
263
|
-
},
|
|
264
|
-
fragment: {
|
|
265
|
-
module: shader,
|
|
266
|
-
entryPoint: 'fs_main',
|
|
267
|
-
targets: [{
|
|
268
|
-
format: this.colorFormat,
|
|
269
|
-
blend: {
|
|
270
|
-
color: {
|
|
271
|
-
srcFactor: 'zero',
|
|
272
|
-
dstFactor: 'one-minus-src-alpha',
|
|
273
|
-
},
|
|
274
|
-
alpha: {
|
|
275
|
-
srcFactor: 'zero',
|
|
276
|
-
dstFactor: 'one',
|
|
277
|
-
},
|
|
278
|
-
},
|
|
279
|
-
}],
|
|
280
|
-
},
|
|
281
|
-
primitive: {
|
|
282
|
-
topology: 'triangle-list',
|
|
283
|
-
cullMode: 'none',
|
|
284
|
-
},
|
|
285
|
-
});
|
|
286
|
-
}
|
|
287
|
-
/**
|
|
288
|
-
* Apply lightweight contact shading in a fullscreen overlay pass.
|
|
289
|
-
*/
|
|
290
|
-
apply(commandEncoder, options) {
|
|
291
|
-
if (!this.options.enableContactShading && !options.enableSeparationLines) {
|
|
292
|
-
return;
|
|
293
|
-
}
|
|
294
|
-
const contactQualityFlag = options.contactQuality === 'high' ? 1 : 0;
|
|
295
|
-
const seamQualityFlag = options.separationQuality === 'high' ? 1 : 0;
|
|
296
|
-
const contactRadiusPx = options.contactQuality === 'high' ? options.radius : options.radius * 0.5;
|
|
297
|
-
const seamRadiusPx = options.separationQuality === 'high' ? options.separationRadius : 1.0;
|
|
298
|
-
this.uniformF32[0] = contactRadiusPx;
|
|
299
|
-
this.uniformF32[1] = options.intensity;
|
|
300
|
-
this.uniformF32[2] = seamRadiusPx;
|
|
301
|
-
this.uniformF32[3] = options.separationIntensity;
|
|
302
|
-
this.uniformU32[4] = contactQualityFlag;
|
|
303
|
-
this.uniformU32[5] = seamQualityFlag;
|
|
304
|
-
this.uniformU32[6] = options.enableSeparationLines ? 1 : 0;
|
|
305
|
-
this.uniformU32[7] = 0;
|
|
306
|
-
this._device.queue.writeBuffer(this.uniformBuffer, 0, this.uniformStaging);
|
|
307
|
-
if (this.cachedDepthView !== options.depthView || this.cachedObjectIdView !== options.objectIdView || this.cachedBindGroup === null) {
|
|
308
|
-
this.cachedBindGroup = this._device.createBindGroup({
|
|
309
|
-
layout: this.bindGroupLayout,
|
|
310
|
-
entries: [
|
|
311
|
-
{ binding: 0, resource: options.depthView },
|
|
312
|
-
{ binding: 1, resource: options.objectIdView },
|
|
313
|
-
{ binding: 2, resource: { buffer: this.uniformBuffer } },
|
|
314
|
-
],
|
|
315
|
-
});
|
|
316
|
-
this.cachedDepthView = options.depthView;
|
|
317
|
-
this.cachedObjectIdView = options.objectIdView;
|
|
318
|
-
}
|
|
319
|
-
const pass = commandEncoder.beginRenderPass({
|
|
320
|
-
colorAttachments: [{
|
|
321
|
-
view: options.targetView,
|
|
322
|
-
loadOp: 'load',
|
|
323
|
-
storeOp: 'store',
|
|
324
|
-
}],
|
|
325
|
-
});
|
|
326
|
-
pass.setPipeline(this.pipeline);
|
|
327
|
-
pass.setBindGroup(0, this.cachedBindGroup);
|
|
328
|
-
pass.draw(3, 1, 0, 0);
|
|
329
|
-
pass.end();
|
|
330
|
-
}
|
|
331
|
-
/**
|
|
332
|
-
* Update post-processing options
|
|
333
|
-
*/
|
|
334
|
-
updateOptions(options) {
|
|
335
|
-
this.options = { ...this.options, ...options };
|
|
336
|
-
}
|
|
337
|
-
destroyed = false;
|
|
338
|
-
/**
|
|
339
|
-
* Destroy all GPU resources held by this post-processor.
|
|
340
|
-
* After calling this method the post-processor is no longer usable.
|
|
341
|
-
* Safe to call multiple times.
|
|
342
|
-
*/
|
|
343
|
-
destroy() {
|
|
344
|
-
if (this.destroyed)
|
|
345
|
-
return;
|
|
346
|
-
this.destroyed = true;
|
|
347
|
-
this.uniformBuffer.destroy();
|
|
348
|
-
this.cachedBindGroup = null;
|
|
349
|
-
this.cachedDepthView = null;
|
|
350
|
-
this.cachedObjectIdView = null;
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
//# sourceMappingURL=post-processor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"post-processor.js","sourceRoot":"","sources":["../src/post-processor.ts"],"names":[],"mappings":"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"}
|