angular-three-soba 2.0.0-beta.4 → 2.0.0-beta.41
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/abstractions/billboard/billboard.d.ts +12 -8
- package/abstractions/detailed/detailed.d.ts +26 -0
- package/abstractions/edges/edges.d.ts +24 -12
- package/abstractions/grid/grid.d.ts +42 -51
- package/abstractions/index.d.ts +1 -7
- package/abstractions/text/text.d.ts +10 -4
- package/abstractions/text-3d/text-3d.d.ts +51 -41
- package/cameras/camera/camera-content.d.ts +1 -1
- package/cameras/camera/camera.d.ts +16 -13
- package/cameras/cube-camera/cube-camera.d.ts +49 -23
- package/cameras/index.d.ts +0 -1
- package/cameras/orthographic-camera/orthographic-camera.d.ts +29 -18
- package/cameras/perspective-camera/perspective-camera.d.ts +10 -1
- package/controls/orbit-controls/orbit-controls.d.ts +34 -15
- package/esm2022/abstractions/billboard/billboard.mjs +36 -33
- package/esm2022/abstractions/detailed/detailed.mjs +64 -0
- package/esm2022/abstractions/edges/edges.mjs +58 -63
- package/esm2022/abstractions/grid/grid.mjs +140 -110
- package/esm2022/abstractions/index.mjs +2 -8
- package/esm2022/abstractions/text/text.mjs +123 -122
- package/esm2022/abstractions/text-3d/text-3d.mjs +120 -115
- package/esm2022/cameras/camera/camera-content.mjs +6 -6
- package/esm2022/cameras/camera/camera.mjs +48 -42
- package/esm2022/cameras/cube-camera/cube-camera.mjs +120 -100
- package/esm2022/cameras/index.mjs +1 -2
- package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +78 -75
- package/esm2022/cameras/perspective-camera/perspective-camera.mjs +25 -26
- package/esm2022/controls/orbit-controls/orbit-controls.mjs +109 -85
- package/esm2022/gizmos/angular-three-soba-gizmos.mjs +5 -0
- package/esm2022/gizmos/gizmo-helper/gizmo-helper.mjs +198 -0
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/constants.mjs +31 -0
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +93 -0
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +151 -0
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.mjs +66 -0
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +71 -0
- package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +195 -0
- package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +272 -0
- package/esm2022/gizmos/index.mjs +4 -0
- package/esm2022/loaders/gltf-loader/gltf-loader.mjs +14 -9
- package/esm2022/loaders/loader/loader.mjs +92 -87
- package/esm2022/loaders/progress/progress.mjs +31 -30
- package/esm2022/loaders/texture-loader/texture-loader.mjs +20 -15
- package/esm2022/materials/index.mjs +2 -1
- package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +60 -51
- package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +239 -255
- package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +99 -97
- package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +164 -144
- package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +44 -42
- package/esm2022/materials/point-material/point-material.mjs +50 -0
- package/esm2022/misc/animations/animations.mjs +28 -23
- package/esm2022/misc/bake-shadows/bake-shadows.mjs +13 -13
- package/esm2022/misc/caustics/caustics.mjs +387 -0
- package/esm2022/misc/decal/decal.mjs +187 -0
- package/esm2022/misc/depth-buffer/depth-buffer.mjs +41 -37
- package/esm2022/misc/example/example.mjs +161 -0
- package/esm2022/misc/fbo/fbo.mjs +42 -36
- package/esm2022/misc/html/html-wrapper.mjs +478 -0
- package/esm2022/misc/html/html.mjs +305 -0
- package/esm2022/misc/index.mjs +10 -1
- package/esm2022/misc/sampler/sampler.mjs +132 -0
- package/esm2022/misc/shadow/shadow.mjs +111 -0
- package/esm2022/misc/stats-gl/stats-gl.mjs +61 -0
- package/esm2022/misc/trail/trail.mjs +204 -0
- package/esm2022/misc/trail-texture/inject-trail-texture.mjs +17 -0
- package/esm2022/misc/trail-texture/trail-texture.mjs +106 -0
- package/esm2022/modifiers/angular-three-soba-modifiers.mjs +5 -0
- package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +64 -0
- package/esm2022/modifiers/index.mjs +2 -0
- package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +44 -0
- package/esm2022/performances/adaptive-events/adaptive-events.mjs +27 -0
- package/esm2022/performances/angular-three-soba-performances.mjs +5 -0
- package/esm2022/performances/index.mjs +8 -0
- package/esm2022/performances/instances/instances.mjs +221 -0
- package/esm2022/performances/instances/position-mesh.mjs +52 -0
- package/esm2022/performances/points/points-input.mjs +64 -0
- package/esm2022/performances/points/points.mjs +327 -0
- package/esm2022/performances/points/position-point.mjs +54 -0
- package/esm2022/performances/segments/segment-object.mjs +9 -0
- package/esm2022/performances/segments/segments.mjs +183 -0
- package/esm2022/shaders/blur-pass/blur-pass.mjs +2 -2
- package/esm2022/shaders/caustics/caustics-material.mjs +130 -0
- package/esm2022/shaders/caustics/caustics-projection-material.mjs +32 -0
- package/esm2022/shaders/convolution-material/convolution-material.mjs +3 -2
- package/esm2022/shaders/discard-material/discard-material.mjs +1 -1
- package/esm2022/shaders/grid-material/grid-material.mjs +30 -14
- package/esm2022/shaders/index.mjs +5 -3
- package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +42 -41
- package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +2 -2
- package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +3 -2
- package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +7 -4
- package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +1 -1
- package/esm2022/shaders/shader-material/shader-material.mjs +3 -5
- package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +18 -25
- package/esm2022/shaders/sparkles-material/sparkles-material.mjs +32 -46
- package/esm2022/shaders/spot-light-material/spot-light-material.mjs +8 -7
- package/esm2022/shaders/star-field-material/star-field-material.mjs +3 -2
- package/esm2022/shaders/wireframe-material/wireframe-material.mjs +247 -0
- package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +161 -176
- package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +8 -8
- package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +129 -129
- package/esm2022/staging/backdrop/backdrop.mjs +77 -0
- package/esm2022/staging/bb-anchor/bb-anchor.mjs +69 -0
- package/esm2022/staging/bounds/bounds.mjs +145 -143
- package/esm2022/staging/camera-shake/camera-shake.mjs +86 -80
- package/esm2022/staging/center/center.mjs +129 -112
- package/esm2022/staging/cloud/cloud.mjs +118 -124
- package/esm2022/staging/contact-shadows/contact-shadows.mjs +131 -136
- package/esm2022/staging/environment/assets.mjs +12 -12
- package/esm2022/staging/environment/environment-cube.mjs +28 -30
- package/esm2022/staging/environment/environment-ground.mjs +17 -19
- package/esm2022/staging/environment/environment-input.mjs +98 -85
- package/esm2022/staging/environment/environment-map.mjs +33 -33
- package/esm2022/staging/environment/environment-portal.mjs +75 -97
- package/esm2022/staging/environment/environment.mjs +34 -51
- package/esm2022/staging/environment/utils.mjs +40 -17
- package/esm2022/staging/float/float.mjs +70 -58
- package/esm2022/staging/index.mjs +7 -3
- package/esm2022/staging/matcap-texture/matcap-texture.mjs +64 -0
- package/esm2022/staging/normal-texture/normal-texture.mjs +53 -0
- package/esm2022/staging/sky/sky.mjs +85 -80
- package/esm2022/staging/sparkles/sparkles.mjs +108 -105
- package/esm2022/staging/spot-light/shadow-mesh-input.mjs +63 -0
- package/esm2022/staging/spot-light/shadow-mesh.mjs +267 -0
- package/esm2022/staging/spot-light/spot-light-input.mjs +67 -58
- package/esm2022/staging/spot-light/spot-light.mjs +51 -63
- package/esm2022/staging/spot-light/volumetric-mesh.mjs +67 -70
- package/esm2022/staging/stage/stage.mjs +305 -290
- package/esm2022/staging/stars/stars.mjs +101 -102
- package/esm2022/staging/wireframe/wireframe-input.mjs +191 -0
- package/esm2022/staging/wireframe/wireframe.mjs +228 -0
- package/esm2022/utils/angular-three-soba-utils.mjs +5 -0
- package/esm2022/utils/constants.mjs +3 -0
- package/esm2022/utils/content/content.mjs +15 -0
- package/esm2022/utils/index.mjs +3 -0
- package/fesm2022/angular-three-soba-abstractions.mjs +504 -2079
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +293 -260
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +108 -83
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-gizmos.mjs +1045 -0
- package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -0
- package/fesm2022/angular-three-soba-loaders.mjs +148 -132
- package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-materials.mjs +656 -588
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +2202 -99
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-modifiers.mjs +71 -0
- package/fesm2022/angular-three-soba-modifiers.mjs.map +1 -0
- package/fesm2022/angular-three-soba-performances.mjs +957 -0
- package/fesm2022/angular-three-soba-performances.mjs.map +1 -0
- package/fesm2022/angular-three-soba-shaders.mjs +508 -269
- package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +2910 -2573
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2022/angular-three-soba-utils.mjs +25 -0
- package/fesm2022/angular-three-soba-utils.mjs.map +1 -0
- package/gizmos/README.md +3 -0
- package/gizmos/gizmo-helper/gizmo-helper.d.ts +73 -0
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +22 -0
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +29 -0
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.d.ts +33 -0
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +10 -0
- package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +40 -0
- package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +30 -0
- package/gizmos/index.d.ts +3 -0
- package/loaders/gltf-loader/gltf-loader.d.ts +15 -4
- package/loaders/loader/loader.d.ts +19 -17
- package/loaders/progress/progress.d.ts +1 -1
- package/loaders/texture-loader/texture-loader.d.ts +8 -3
- package/materials/index.d.ts +1 -0
- package/materials/mesh-distort-material/mesh-distort-material.d.ts +25 -15
- package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +74 -56
- package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +33 -21
- package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +55 -39
- package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +19 -10
- package/materials/point-material/point-material.d.ts +24 -0
- package/metadata.json +1 -0
- package/misc/animations/animations.d.ts +6 -4
- package/misc/caustics/caustics.d.ts +87 -0
- package/misc/decal/decal.d.ts +49 -0
- package/misc/depth-buffer/depth-buffer.d.ts +2 -2
- package/misc/example/example.d.ts +85 -0
- package/misc/fbo/fbo.d.ts +2 -2
- package/misc/html/html-wrapper.d.ts +559 -0
- package/misc/html/html.d.ts +218 -0
- package/misc/index.d.ts +9 -0
- package/misc/sampler/sampler.d.ts +67 -0
- package/misc/shadow/shadow.d.ts +37 -0
- package/misc/stats-gl/stats-gl.d.ts +24 -0
- package/misc/trail/trail.d.ts +57 -0
- package/misc/trail-texture/inject-trail-texture.d.ts +9 -0
- package/misc/trail-texture/trail-texture.d.ts +50 -0
- package/modifiers/README.md +3 -0
- package/modifiers/curve-modifier/curve-modifier.d.ts +23 -0
- package/modifiers/index.d.ts +1 -0
- package/package.json +42 -24
- package/performances/README.md +3 -0
- package/performances/adaptive-dpr/adaptive-dpr.d.ts +14 -0
- package/{performance/adaptive → performances/adaptive-events}/adaptive-events.d.ts +3 -0
- package/performances/index.d.ts +7 -0
- package/performances/instances/instances.d.ts +83 -0
- package/{performance → performances}/instances/position-mesh.d.ts +1 -1
- package/performances/points/points-input.d.ts +32 -0
- package/performances/points/points.d.ts +96 -0
- package/performances/points/position-point.d.ts +11 -0
- package/performances/segments/segment-object.d.ts +7 -0
- package/performances/segments/segments.d.ts +128 -0
- package/shaders/grid-material/grid-material.d.ts +33 -0
- package/shaders/index.d.ts +4 -2
- package/shaders/mesh-distort-material/mesh-distort-material.d.ts +173 -6
- package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +1 -1
- package/shaders/shader-material/shader-material.d.ts +2 -2
- package/shaders/soft-shadow-material/soft-shadow-material.d.ts +10 -1
- package/shaders/sparkles-material/sparkles-material.d.ts +13 -0
- package/shaders/spot-light-material/spot-light-material.d.ts +11 -2
- package/shaders/star-field-material/star-field-material.d.ts +9 -0
- package/shaders/wireframe-material/wireframe-material.d.ts +58 -0
- package/staging/accumulative-shadows/accumulative-shadows.d.ts +93 -39
- package/staging/accumulative-shadows/randomized-lights.d.ts +41 -28
- package/staging/backdrop/backdrop.d.ts +30 -0
- package/staging/bb-anchor/bb-anchor.d.ts +27 -0
- package/staging/bounds/bounds.d.ts +105 -25
- package/staging/camera-shake/camera-shake.d.ts +30 -19
- package/staging/center/center.d.ts +43 -35
- package/staging/cloud/cloud.d.ts +27 -24
- package/staging/contact-shadows/contact-shadows.d.ts +43 -30
- package/staging/environment/assets.d.ts +9 -9
- package/staging/environment/environment-cube.d.ts +9 -5
- package/staging/environment/environment-ground.d.ts +7 -7
- package/staging/environment/environment-input.d.ts +38 -38
- package/staging/environment/environment-map.d.ts +10 -5
- package/staging/environment/environment-portal.d.ts +10 -5
- package/staging/environment/environment.d.ts +0 -4
- package/staging/environment/utils.d.ts +2 -2
- package/staging/float/float.d.ts +15 -11
- package/staging/index.d.ts +6 -2
- package/staging/matcap-texture/matcap-texture.d.ts +13 -0
- package/staging/normal-texture/normal-texture.d.ts +16 -0
- package/staging/sky/sky.d.ts +28 -21
- package/staging/sparkles/sparkles.d.ts +36 -22
- package/staging/spot-light/shadow-mesh-input.d.ts +29 -0
- package/staging/spot-light/shadow-mesh.d.ts +37 -0
- package/staging/spot-light/spot-light-input.d.ts +25 -25
- package/staging/spot-light/spot-light.d.ts +35 -15
- package/staging/spot-light/volumetric-mesh.d.ts +15 -9
- package/staging/stage/stage.d.ts +89 -65
- package/staging/stars/stars.d.ts +28 -17
- package/staging/wireframe/wireframe-input.d.ts +65 -0
- package/staging/wireframe/wireframe.d.ts +28 -0
- package/utils/README.md +3 -0
- package/utils/constants.d.ts +1 -0
- package/utils/content/content.d.ts +8 -0
- package/utils/index.d.ts +2 -0
- package/web-types.json +1 -0
- package/abstractions/catmull-rom-line/catmull-rom-line.d.ts +0 -25
- package/abstractions/cubic-bezier-line/cubic-bezier-line.d.ts +0 -25
- package/abstractions/gizmo-helper/gizmo-helper.d.ts +0 -34
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -30
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +0 -32
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -14
- package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -47
- package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -40
- package/abstractions/line/line-input.d.ts +0 -42
- package/abstractions/line/line.d.ts +0 -35
- package/abstractions/quadratic-bezier-line/quadratic-bezier-line.d.ts +0 -23
- package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +0 -131
- package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +0 -113
- package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +0 -210
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -95
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -155
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -62
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -80
- package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -206
- package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -273
- package/esm2022/abstractions/line/line-input.mjs +0 -113
- package/esm2022/abstractions/line/line.mjs +0 -165
- package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -128
- package/esm2022/performance/adaptive/adaptive-dpr.mjs +0 -46
- package/esm2022/performance/adaptive/adaptive-events.mjs +0 -31
- package/esm2022/performance/angular-three-soba-performance.mjs +0 -5
- package/esm2022/performance/detailed/detailed.mjs +0 -61
- package/esm2022/performance/index.mjs +0 -7
- package/esm2022/performance/instances/instance.mjs +0 -48
- package/esm2022/performance/instances/instances.mjs +0 -189
- package/esm2022/performance/instances/position-mesh.mjs +0 -52
- package/esm2022/performance/stats/stats.mjs +0 -79
- package/esm2022/shaders/caustics-material/caustics-material.mjs +0 -128
- package/esm2022/shaders/caustics-material/caustics-projection-material.mjs +0 -33
- package/esm2022/staging/caustics/caustisc.mjs +0 -384
- package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +0 -57
- package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +0 -256
- package/fesm2022/angular-three-soba-performance.mjs +0 -487
- package/fesm2022/angular-three-soba-performance.mjs.map +0 -1
- package/performance/README.md +0 -3
- package/performance/adaptive/adaptive-dpr.d.ts +0 -8
- package/performance/detailed/detailed.d.ts +0 -20
- package/performance/index.d.ts +0 -6
- package/performance/instances/instance.d.ts +0 -9
- package/performance/instances/instances.d.ts +0 -35
- package/performance/stats/stats.d.ts +0 -18
- package/plugin/generators.json +0 -19
- package/plugin/libs/plugin/README.md +0 -11
- package/plugin/package.json +0 -9
- package/plugin/src/generators/init/compat.d.ts +0 -2
- package/plugin/src/generators/init/compat.js +0 -6
- package/plugin/src/generators/init/compat.js.map +0 -1
- package/plugin/src/generators/init/init.d.ts +0 -7
- package/plugin/src/generators/init/init.js +0 -28
- package/plugin/src/generators/init/init.js.map +0 -1
- package/plugin/src/generators/init/schema.json +0 -6
- package/plugin/src/index.d.ts +0 -1
- package/plugin/src/index.js +0 -6
- package/plugin/src/index.js.map +0 -1
- package/staging/caustics/caustisc.d.ts +0 -70
- package/staging/spot-light/spot-light-shadow-mesh-input.d.ts +0 -29
- package/staging/spot-light/spot-light-shadow-mesh.d.ts +0 -38
- /package/{abstractions → gizmos}/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -0
- /package/shaders/{caustics-material → caustics}/caustics-material.d.ts +0 -0
- /package/shaders/{caustics-material → caustics}/caustics-projection-material.d.ts +0 -0
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { CUSTOM_ELEMENTS_SCHEMA, Component, Injector, Input, NgZone, computed, effect, forwardRef, inject, signal, untracked, } from '@angular/core';
|
|
2
|
+
import { NgtArgs, extend, injectBeforeRender, injectNgtRef, is, signalStore, } from 'angular-three';
|
|
3
|
+
import { createInjectionToken } from 'ngxtension/create-injection-token';
|
|
4
|
+
import * as THREE from 'three';
|
|
5
|
+
import { Line2, LineMaterial, LineSegmentsGeometry } from 'three-stdlib';
|
|
6
|
+
import { SegmentObject } from './segment-object';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
const normPos = (pos) => pos instanceof THREE.Vector3
|
|
9
|
+
? pos
|
|
10
|
+
: new THREE.Vector3(...(typeof pos === 'number' ? [pos, pos, pos] : pos));
|
|
11
|
+
extend({ SegmentObject });
|
|
12
|
+
export const [injectNgtsSegmentsApi, provideNgtsSegmentsApi] = createInjectionToken((segments) => segments.api, { isRoot: false, deps: [forwardRef(() => NgtsSegments)] });
|
|
13
|
+
export class NgtsSegment {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.inputs = signalStore({});
|
|
16
|
+
this.segmentRef = injectNgtRef();
|
|
17
|
+
this.segmentsApi = injectNgtsSegmentsApi();
|
|
18
|
+
this.injector = inject(Injector);
|
|
19
|
+
this.zone = inject(NgZone);
|
|
20
|
+
this.start = this.inputs.select('start');
|
|
21
|
+
this.end = this.inputs.select('end');
|
|
22
|
+
this.normalizedStart = computed(() => normPos(this.start()));
|
|
23
|
+
this.normalizedEnd = computed(() => normPos(this.end()));
|
|
24
|
+
this.color = this.inputs.select('color');
|
|
25
|
+
}
|
|
26
|
+
set _start(start) {
|
|
27
|
+
this.inputs.set({ start });
|
|
28
|
+
}
|
|
29
|
+
set _end(end) {
|
|
30
|
+
this.inputs.set({ end });
|
|
31
|
+
}
|
|
32
|
+
set _color(color) {
|
|
33
|
+
this.inputs.set({ color });
|
|
34
|
+
}
|
|
35
|
+
ngOnInit() {
|
|
36
|
+
effect((onCleanup) => {
|
|
37
|
+
const cleanup = this.zone.runOutsideAngular(() => {
|
|
38
|
+
const api = this.segmentsApi();
|
|
39
|
+
return api.subscribe(this.segmentRef);
|
|
40
|
+
});
|
|
41
|
+
onCleanup(cleanup);
|
|
42
|
+
}, { injector: this.injector });
|
|
43
|
+
}
|
|
44
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsSegment, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
45
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsSegment, isStandalone: true, selector: "ngts-segment", inputs: { segmentRef: "segmentRef", _start: ["start", "_start"], _end: ["end", "_end"], _color: ["color", "_color"] }, ngImport: i0, template: `
|
|
46
|
+
<ngt-segment-object [ref]="segmentRef" [color]="color()" [start]="normalizedStart()" [end]="normalizedEnd()" />
|
|
47
|
+
`, isInline: true }); }
|
|
48
|
+
}
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsSegment, decorators: [{
|
|
50
|
+
type: Component,
|
|
51
|
+
args: [{
|
|
52
|
+
selector: 'ngts-segment',
|
|
53
|
+
standalone: true,
|
|
54
|
+
template: `
|
|
55
|
+
<ngt-segment-object [ref]="segmentRef" [color]="color()" [start]="normalizedStart()" [end]="normalizedEnd()" />
|
|
56
|
+
`,
|
|
57
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
58
|
+
}]
|
|
59
|
+
}], propDecorators: { segmentRef: [{
|
|
60
|
+
type: Input
|
|
61
|
+
}], _start: [{
|
|
62
|
+
type: Input,
|
|
63
|
+
args: [{ alias: 'start' }]
|
|
64
|
+
}], _end: [{
|
|
65
|
+
type: Input,
|
|
66
|
+
args: [{ alias: 'end' }]
|
|
67
|
+
}], _color: [{
|
|
68
|
+
type: Input,
|
|
69
|
+
args: [{ alias: 'color' }]
|
|
70
|
+
}] } });
|
|
71
|
+
export class NgtsSegments {
|
|
72
|
+
set _limit(limit) {
|
|
73
|
+
this.inputs.set({ limit });
|
|
74
|
+
}
|
|
75
|
+
set _lineWidth(lineWidth) {
|
|
76
|
+
this.inputs.set({ lineWidth });
|
|
77
|
+
}
|
|
78
|
+
constructor() {
|
|
79
|
+
this.inputs = signalStore({ limit: 1000, lineWidth: 1 });
|
|
80
|
+
this.segmentsRef = injectNgtRef();
|
|
81
|
+
this.segments = signal([]);
|
|
82
|
+
this.limit = this.inputs.select('limit');
|
|
83
|
+
this.positions = computed(() => Array(this.limit() * 6).fill(0));
|
|
84
|
+
this.colors = computed(() => Array(this.limit() * 6).fill(0));
|
|
85
|
+
this.resolution = new THREE.Vector2(512, 512);
|
|
86
|
+
this.lineWidth = this.inputs.select('lineWidth');
|
|
87
|
+
this.line = new Line2();
|
|
88
|
+
this.material = new LineMaterial();
|
|
89
|
+
this.geometry = new LineSegmentsGeometry();
|
|
90
|
+
this.api = computed(() => ({
|
|
91
|
+
subscribe: (segmentRef) => {
|
|
92
|
+
untracked(() => {
|
|
93
|
+
this.segments.update((s) => [...s, segmentRef]);
|
|
94
|
+
});
|
|
95
|
+
return () => {
|
|
96
|
+
untracked(() => {
|
|
97
|
+
this.segments.update((s) => s.filter((segment) => segment !== segmentRef));
|
|
98
|
+
});
|
|
99
|
+
};
|
|
100
|
+
},
|
|
101
|
+
}));
|
|
102
|
+
this.beforeRender();
|
|
103
|
+
}
|
|
104
|
+
beforeRender() {
|
|
105
|
+
injectBeforeRender(() => {
|
|
106
|
+
const [segments, limit, positions, colors] = [
|
|
107
|
+
this.segments(),
|
|
108
|
+
this.limit(),
|
|
109
|
+
this.positions(),
|
|
110
|
+
this.colors(),
|
|
111
|
+
];
|
|
112
|
+
for (let i = 0; i < limit; i++) {
|
|
113
|
+
const segmentRef = segments[i];
|
|
114
|
+
const segment = is.ref(segmentRef) ? segmentRef.nativeElement : segmentRef;
|
|
115
|
+
if (segment) {
|
|
116
|
+
positions[i * 6 + 0] = segment.start.x;
|
|
117
|
+
positions[i * 6 + 1] = segment.start.y;
|
|
118
|
+
positions[i * 6 + 2] = segment.start.z;
|
|
119
|
+
positions[i * 6 + 3] = segment.end.x;
|
|
120
|
+
positions[i * 6 + 4] = segment.end.y;
|
|
121
|
+
positions[i * 6 + 5] = segment.end.z;
|
|
122
|
+
colors[i * 6 + 0] = segment.color.r;
|
|
123
|
+
colors[i * 6 + 1] = segment.color.g;
|
|
124
|
+
colors[i * 6 + 2] = segment.color.b;
|
|
125
|
+
colors[i * 6 + 3] = segment.color.r;
|
|
126
|
+
colors[i * 6 + 4] = segment.color.g;
|
|
127
|
+
colors[i * 6 + 5] = segment.color.b;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
this.geometry.setColors(colors);
|
|
131
|
+
this.geometry.setPositions(positions);
|
|
132
|
+
this.line.computeLineDistances();
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsSegments, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
136
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtsSegments, isStandalone: true, selector: "ngts-segments", inputs: { segmentsRef: "segmentsRef", _limit: ["limit", "_limit"], _lineWidth: ["lineWidth", "_lineWidth"] }, providers: [provideNgtsSegmentsApi()], ngImport: i0, template: `
|
|
137
|
+
<ngt-primitive *args="[line]" [ref]="segmentsRef">
|
|
138
|
+
<ngt-primitive *args="[geometry]" attach="geometry" />
|
|
139
|
+
<ngt-primitive
|
|
140
|
+
*args="[material]"
|
|
141
|
+
attach="material"
|
|
142
|
+
ngtCompound
|
|
143
|
+
[vertexColors]="true"
|
|
144
|
+
[resolution]="resolution"
|
|
145
|
+
[linewidth]="lineWidth()"
|
|
146
|
+
/>
|
|
147
|
+
<ng-content />
|
|
148
|
+
</ngt-primitive>
|
|
149
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
|
|
150
|
+
}
|
|
151
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtsSegments, decorators: [{
|
|
152
|
+
type: Component,
|
|
153
|
+
args: [{
|
|
154
|
+
selector: 'ngts-segments',
|
|
155
|
+
standalone: true,
|
|
156
|
+
template: `
|
|
157
|
+
<ngt-primitive *args="[line]" [ref]="segmentsRef">
|
|
158
|
+
<ngt-primitive *args="[geometry]" attach="geometry" />
|
|
159
|
+
<ngt-primitive
|
|
160
|
+
*args="[material]"
|
|
161
|
+
attach="material"
|
|
162
|
+
ngtCompound
|
|
163
|
+
[vertexColors]="true"
|
|
164
|
+
[resolution]="resolution"
|
|
165
|
+
[linewidth]="lineWidth()"
|
|
166
|
+
/>
|
|
167
|
+
<ng-content />
|
|
168
|
+
</ngt-primitive>
|
|
169
|
+
`,
|
|
170
|
+
imports: [NgtArgs],
|
|
171
|
+
providers: [provideNgtsSegmentsApi()],
|
|
172
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
173
|
+
}]
|
|
174
|
+
}], ctorParameters: function () { return []; }, propDecorators: { segmentsRef: [{
|
|
175
|
+
type: Input
|
|
176
|
+
}], _limit: [{
|
|
177
|
+
type: Input,
|
|
178
|
+
args: [{ alias: 'limit' }]
|
|
179
|
+
}], _lineWidth: [{
|
|
180
|
+
type: Input,
|
|
181
|
+
args: [{ alias: 'lineWidth' }]
|
|
182
|
+
}] } });
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvcGVyZm9ybWFuY2VzL3NyYy9zZWdtZW50cy9zZWdtZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsR0FFVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ04sT0FBTyxFQUNQLE1BQU0sRUFDTixrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLEVBQUUsRUFDRixXQUFXLEdBSVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDekUsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQXFCakQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUE4QixFQUEwQixFQUFFLENBQzFFLEdBQUcsWUFBWSxLQUFLLENBQUMsT0FBTztJQUMzQixDQUFDLENBQUMsR0FBRztJQUNMLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQThCLENBQUMsQ0FBQztBQUUxRyxNQUFNLENBQUMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0FBRTFCLE1BQU0sQ0FBQyxNQUFNLENBQUMscUJB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RyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQ3BDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2lCQUNwQzthQUNEO1lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0E1RVcsWUFBWTtrR0FBWixZQUFZLDBLQUhiLENBQUMsc0JBQXNCLEVBQUUsQ0FBQywwQkFmM0I7Ozs7Ozs7Ozs7Ozs7RUFhVCw0REFDUyxPQUFPOzsyRkFJTCxZQUFZO2tCQXJCeEIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsZUFBZTtvQkFDekIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7OztFQWFUO29CQUNELE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztvQkFDbEIsU0FBUyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztvQkFDckMsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ2pDOzBFQUlTLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRXlCLE1BQU07c0JBQXBDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO2dCQUlVLFVBQVU7c0JBQTVDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0Q29tcG9uZW50LFxuXHRJbmplY3Rvcixcblx0SW5wdXQsXG5cdE5nWm9uZSxcblx0Y29tcHV0ZWQsXG5cdGVmZmVjdCxcblx0Zm9yd2FyZFJlZixcblx0aW5qZWN0LFxuXHRzaWduYWwsXG5cdHVudHJhY2tlZCxcblx0dHlwZSBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0Tmd0QXJncyxcblx0ZXh0ZW5kLFxuXHRpbmplY3RCZWZvcmVSZW5kZXIsXG5cdGluamVjdE5ndFJlZixcblx0aXMsXG5cdHNpZ25hbFN0b3JlLFxuXHR0eXBlIE5ndENvbG9yLFxuXHR0eXBlIE5ndFJlZixcblx0dHlwZSBOZ3RWZWN0b3IzLFxufSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGNyZWF0ZUluamVjdGlvblRva2VuIH0gZnJvbSAnbmd4dGVuc2lvbi9jcmVhdGUtaW5qZWN0aW9uLXRva2VuJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IExpbmUyLCBMaW5lTWF0ZXJpYWwsIExpbmVTZWdtZW50c0dlb21ldHJ5IH0gZnJvbSAndGhyZWUtc3RkbGliJztcbmltcG9ydCB7IFNlZ21lbnRPYmplY3QgfSBmcm9tICcuL3NlZ21lbnQtb2JqZWN0JztcblxuZXhwb3J0IHR5cGUgTmd0c1NlZ21lbnRTdGF0ZSA9IHtcblx0c3RhcnQ/OiBOZ3RWZWN0b3IzO1xuXHRlbmQ/OiBOZ3RWZWN0b3IzO1xuXHRjb2xvcj86IE5ndENvbG9yO1xufTtcblxuZXhwb3J0IHR5cGUgTmd0c1NlZ21lbnRzU3RhdGUgPSB7XG5cdGxpbWl0OiBudW1iZXI7XG5cdGxpbmVXaWR0aDogbnVtYmVyO1xufTtcblxuZGVjbGFyZSBnbG9iYWwge1xuXHRpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcblx0XHQnbmd0LXNlZ21lbnQtb2JqZWN0JzogU2VnbWVudE9iamVjdDtcblx0XHQnbmd0cy1zZWdtZW50JzogTmd0c1NlZ21lbnRTdGF0ZTtcblx0XHQnbmd0cy1zZWdtZW50cyc6IE5ndHNTZWdtZW50c1N0YXRlO1xuXHR9XG59XG5cbmNvbnN0IG5vcm1Qb3MgPSAocG9zOiBOZ3RzU2VnbWVudFN0YXRlWydzdGFydCddKTogU2VnbWVudE9iamVjdFsnc3RhcnQnXSA9PlxuXHRwb3MgaW5zdGFuY2VvZiBUSFJFRS5WZWN0b3IzXG5cdFx0PyBwb3Ncblx0XHQ6IG5ldyBUSFJFRS5WZWN0b3IzKC4uLigodHlwZW9mIHBvcyA9PT0gJ251bWJlcicgPyBbcG9zLCBwb3MsIHBvc10gOiBwb3MpIGFzIFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSkpO1xuXG5leHRlbmQoeyBTZWdtZW50T2JqZWN0IH0pO1xuXG5leHBvcnQgY29uc3QgW2luamVjdE5ndHNTZWdtZW50c0FwaSwgcHJvdmlkZU5ndHNTZWdtZW50c0FwaV0gPSBjcmVhdGVJbmplY3Rpb25Ub2tlbihcblx0KHNlZ21lbnRzOiBOZ3RzU2VnbWVudHMpID0+IHNlZ21lbnRzLmFwaSxcblx0eyBpc1Jvb3Q6IGZhbHNlLCBkZXBzOiBbZm9yd2FyZFJlZigoKSA9PiBOZ3RzU2VnbWVudHMpXSB9LFxuKTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1zZWdtZW50Jyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXNlZ21lbnQtb2JqZWN0IFtyZWZdPVwic2VnbWVudFJlZlwiIFtjb2xvcl09XCJjb2xvcigpXCIgW3N0YXJ0XT1cIm5vcm1hbGl6ZWRTdGFydCgpXCIgW2VuZF09XCJub3JtYWxpemVkRW5kKClcIiAvPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTZWdtZW50IGltcGxlbWVudHMgT25Jbml0IHtcblx0cHJpdmF0ZSBpbnB1dHMgPSBzaWduYWxTdG9yZTxOZ3RzU2VnbWVudFN0YXRlPih7fSk7XG5cblx0QElucHV0KCkgc2VnbWVudFJlZiA9IGluamVjdE5ndFJlZjxTZWdtZW50T2JqZWN0PigpO1xuXG5cdEBJbnB1dCh7IGFsaWFzOiAnc3RhcnQnIH0pIHNldCBfc3RhcnQoc3RhcnQ6IE5ndFZlY3RvcjMpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBzdGFydCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnZW5kJyB9KSBzZXQgX2VuZChlbmQ6IE5ndFZlY3RvcjMpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBlbmQgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2NvbG9yJyB9KSBzZXQgX2NvbG9yKGNvbG9yOiBOZ3RDb2xvcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGNvbG9yIH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBzZWdtZW50c0FwaSA9IGluamVjdE5ndHNTZWdtZW50c0FwaSgpO1xuXHRwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblx0cHJpdmF0ZSB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cblx0cHJpdmF0ZSBzdGFydCA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnc3RhcnQnKTtcblx0cHJpdmF0ZSBlbmQgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2VuZCcpO1xuXG5cdG5vcm1hbGl6ZWRTdGFydCA9IGNvbXB1dGVkKCgpID0+IG5vcm1Qb3ModGhpcy5zdGFydCgpKSk7XG5cdG5vcm1hbGl6ZWRFbmQgPSBjb21wdXRlZCgoKSA9PiBub3JtUG9zKHRoaXMuZW5kKCkpKTtcblx0Y29sb3IgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2NvbG9yJyk7XG5cblx0bmdPbkluaXQoKSB7XG5cdFx0ZWZmZWN0KFxuXHRcdFx0KG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0XHRjb25zdCBjbGVhbnVwID0gdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcblx0XHRcdFx0XHRjb25zdCBhcGkgPSB0aGlzLnNlZ21lbnRzQXBpKCk7XG5cdFx0XHRcdFx0cmV0dXJuIGFwaS5zdWJzY3JpYmUodGhpcy5zZWdtZW50UmVmKTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdG9uQ2xlYW51cChjbGVhbnVwKTtcblx0XHRcdH0sXG5cdFx0XHR7IGluamVjdG9yOiB0aGlzLmluamVjdG9yIH0sXG5cdFx0KTtcblx0fVxufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXNlZ21lbnRzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXByaW1pdGl2ZSAqYXJncz1cIltsaW5lXVwiIFtyZWZdPVwic2VnbWVudHNSZWZcIj5cblx0XHRcdDxuZ3QtcHJpbWl0aXZlICphcmdzPVwiW2dlb21ldHJ5XVwiIGF0dGFjaD1cImdlb21ldHJ5XCIgLz5cblx0XHRcdDxuZ3QtcHJpbWl0aXZlXG5cdFx0XHRcdCphcmdzPVwiW21hdGVyaWFsXVwiXG5cdFx0XHRcdGF0dGFjaD1cIm1hdGVyaWFsXCJcblx0XHRcdFx0bmd0Q29tcG91bmRcblx0XHRcdFx0W3ZlcnRleENvbG9yc109XCJ0cnVlXCJcblx0XHRcdFx0W3Jlc29sdXRpb25dPVwicmVzb2x1dGlvblwiXG5cdFx0XHRcdFtsaW5ld2lkdGhdPVwibGluZVdpZHRoKClcIlxuXHRcdFx0Lz5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtcHJpbWl0aXZlPlxuXHRgLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG5cdHByb3ZpZGVyczogW3Byb3ZpZGVOZ3RzU2VnbWVudHNBcGkoKV0sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c1NlZ21lbnRzIHtcblx0cHJpdmF0ZSBpbnB1dHMgPSBzaWduYWxTdG9yZTxOZ3RzU2VnbWVudHNTdGF0ZT4oeyBsaW1pdDogMTAwMCwgbGluZVdpZHRoOiAxIH0pO1xuXG5cdEBJbnB1dCgpIHNlZ21lbnRzUmVmID0gaW5qZWN0Tmd0UmVmPExpbmUyPigpO1xuXG5cdEBJbnB1dCh7IGFsaWFzOiAnbGltaXQnIH0pIHNldCBfbGltaXQobGltaXQ6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGxpbWl0IH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdsaW5lV2lkdGgnIH0pIHNldCBfbGluZVdpZHRoKGxpbmVXaWR0aDogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgbGluZVdpZHRoIH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBzZWdtZW50cyA9IHNpZ25hbDxOZ3RSZWY8U2VnbWVudE9iamVjdD5bXT4oW10pO1xuXHRwcml2YXRlIGxpbWl0ID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdsaW1pdCcpO1xuXG5cdHByaXZhdGUgcG9zaXRpb25zID0gY29tcHV0ZWQoKCkgPT4gQXJyYXkodGhpcy5saW1pdCgpICogNikuZmlsbCgwKSk7XG5cdHByaXZhdGUgY29sb3JzID0gY29tcHV0ZWQoKCkgPT4gQXJyYXkodGhpcy5saW1pdCgpICogNikuZmlsbCgwKSk7XG5cblx0cmVzb2x1dGlvbiA9IG5ldyBUSFJFRS5WZWN0b3IyKDUxMiwgNTEyKTtcblx0bGluZVdpZHRoID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdsaW5lV2lkdGgnKTtcblx0bGluZSA9IG5ldyBMaW5lMigpO1xuXHRtYXRlcmlhbCA9IG5ldyBMaW5lTWF0ZXJpYWwoKTtcblx0Z2VvbWV0cnkgPSBuZXcgTGluZVNlZ21lbnRzR2VvbWV0cnkoKTtcblxuXHRhcGkgPSBjb21wdXRlZCgoKSA9PiAoe1xuXHRcdHN1YnNjcmliZTogKHNlZ21lbnRSZWY6IE5ndFJlZjxTZWdtZW50T2JqZWN0PikgPT4ge1xuXHRcdFx0dW50cmFja2VkKCgpID0+IHtcblx0XHRcdFx0dGhpcy5zZWdtZW50cy51cGRhdGUoKHMpID0+IFsuLi5zLCBzZWdtZW50UmVmXSk7XG5cdFx0XHR9KTtcblxuXHRcdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdFx0dW50cmFja2VkKCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLnNlZ21lbnRzLnVwZGF0ZSgocykgPT4gcy5maWx0ZXIoKHNlZ21lbnQpID0+IHNlZ21lbnQgIT09IHNlZ21lbnRSZWYpKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9O1xuXHRcdH0sXG5cdH0pKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLmJlZm9yZVJlbmRlcigpO1xuXHR9XG5cblx0cHJpdmF0ZSBiZWZvcmVSZW5kZXIoKSB7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCgpID0+IHtcblx0XHRcdGNvbnN0IFtzZWdtZW50cywgbGltaXQsIHBvc2l0aW9ucywgY29sb3JzXSA9IFtcblx0XHRcdFx0dGhpcy5zZWdtZW50cygpLFxuXHRcdFx0XHR0aGlzLmxpbWl0KCksXG5cdFx0XHRcdHRoaXMucG9zaXRpb25zKCksXG5cdFx0XHRcdHRoaXMuY29sb3JzKCksXG5cdFx0XHRdO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBsaW1pdDsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IHNlZ21lbnRSZWYgPSBzZWdtZW50c1tpXTtcblx0XHRcdFx0Y29uc3Qgc2VnbWVudCA9IGlzLnJlZihzZWdtZW50UmVmKSA/IHNlZ21lbnRSZWYubmF0aXZlRWxlbWVudCA6IHNlZ21lbnRSZWY7XG5cdFx0XHRcdGlmIChzZWdtZW50KSB7XG5cdFx0XHRcdFx0cG9zaXRpb25zW2kgKiA2ICsgMF0gPSBzZWdtZW50LnN0YXJ0Lng7XG5cdFx0XHRcdFx0cG9zaXRpb25zW2kgKiA2ICsgMV0gPSBzZWdtZW50LnN0YXJ0Lnk7XG5cdFx0XHRcdFx0cG9zaXRpb25zW2kgKiA2ICsgMl0gPSBzZWdtZW50LnN0YXJ0Lno7XG5cblx0XHRcdFx0XHRwb3NpdGlvbnNbaSAqIDYgKyAzXSA9IHNlZ21lbnQuZW5kLng7XG5cdFx0XHRcdFx0cG9zaXRpb25zW2kgKiA2ICsgNF0gPSBzZWdtZW50LmVuZC55O1xuXHRcdFx0XHRcdHBvc2l0aW9uc1tpICogNiArIDVdID0gc2VnbWVudC5lbmQuejtcblxuXHRcdFx0XHRcdGNvbG9yc1tpICogNiArIDBdID0gc2VnbWVudC5jb2xvci5yO1xuXHRcdFx0XHRcdGNvbG9yc1tpICogNiArIDFdID0gc2VnbWVudC5jb2xvci5nO1xuXHRcdFx0XHRcdGNvbG9yc1tpICogNiArIDJdID0gc2VnbWVudC5jb2xvci5iO1xuXG5cdFx0XHRcdFx0Y29sb3JzW2kgKiA2ICsgM10gPSBzZWdtZW50LmNvbG9yLnI7XG5cdFx0XHRcdFx0Y29sb3JzW2kgKiA2ICsgNF0gPSBzZWdtZW50LmNvbG9yLmc7XG5cdFx0XHRcdFx0Y29sb3JzW2kgKiA2ICsgNV0gPSBzZWdtZW50LmNvbG9yLmI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHRoaXMuZ2VvbWV0cnkuc2V0Q29sb3JzKGNvbG9ycyk7XG5cdFx0XHR0aGlzLmdlb21ldHJ5LnNldFBvc2l0aW9ucyhwb3NpdGlvbnMpO1xuXHRcdFx0dGhpcy5saW5lLmNvbXB1dGVMaW5lRGlzdGFuY2VzKCk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BufferAttribute, BufferGeometry, HalfFloatType, LinearFilter, Mesh, PerspectiveCamera, Scene, Vector2, WebGLRenderTarget, } from 'three';
|
|
1
|
+
import { BufferAttribute, BufferGeometry, Camera, HalfFloatType, LinearFilter, Mesh, PerspectiveCamera, Scene, Vector2, WebGLRenderTarget, WebGLRenderer, } from 'three';
|
|
2
2
|
import { ConvolutionMaterial } from '../convolution-material/convolution-material';
|
|
3
3
|
export class BlurPass {
|
|
4
4
|
constructor({ gl, resolution, width = 500, height = 500, minDepthThreshold = 0, maxDepthThreshold = 1, depthScale = 0, depthToBlurRatioBias = 0.25, }) {
|
|
@@ -58,4 +58,4 @@ export class BlurPass {
|
|
|
58
58
|
renderer.render(scene, camera);
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmx1ci1wYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3NoYWRlcnMvc3JjL2JsdXItcGFzcy9ibHVyLXBhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLGVBQWUsRUFDZixjQUFjLEVBQ2QsTUFBTSxFQUNOLGFBQWEsRUFDYixZQUFZLEVBQ1osSUFBSSxFQUNKLGlCQUFpQixFQUNqQixLQUFLLEVBQ0wsT0FBTyxFQUNQLGlCQUFpQixFQUNqQixhQUFhLEdBQ2IsTUFBTSxPQUFPLENBQUM7QUFFZixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQWFuRixNQUFNLE9BQU8sUUFBUTtJQVNwQixZQUFZLEVBQ1gsRUFBRSxFQUNGLFVBQVUsRUFDVixLQUFLLEdBQUcsR0FBRyxFQUNYLE1BQU0sR0FBRyxHQUFHLEVBQ1osaUJBQWlCLEdBQUcsQ0FBQyxFQUNyQixpQkFBaUIsR0FBRyxDQUFDLEVBQ3JCLFVBQVUsR0FBRyxDQUFDLEVBQ2Qsb0JBQW9CLEdBQUcsSUFBSSxHQUNaO1FBWGhCLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBWS9CLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFO1lBQ2xFLFNBQVMsRUFBRSxZQUFZO1lBQ3ZCLFNBQVMsRUFBRSxZQUFZO1lBQ3ZCLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLElBQUksRUFBRSxhQUFhO1NBQ25CLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1FBQ3JELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsR0FBRyxHQUFHLEtBQUss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QUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDOUMsNkJBQTZCO1lBQzdCLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO1lBQ3ZELFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUMvQyxRQUFRLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQy9CLE1BQU0sR0FBRyxNQUFNLENBQUM7U0FDaEI7UUFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDL0MsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BFLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdEJ1ZmZlckF0dHJpYnV0ZSxcblx0QnVmZmVyR2VvbWV0cnksXG5cdENhbWVyYSxcblx0SGFsZkZsb2F0VHlwZSxcblx0TGluZWFyRmlsdGVyLFxuXHRNZXNoLFxuXHRQZXJzcGVjdGl2ZUNhbWVyYSxcblx0U2NlbmUsXG5cdFZlY3RvcjIsXG5cdFdlYkdMUmVuZGVyVGFyZ2V0LFxuXHRXZWJHTFJlbmRlcmVyLFxufSBmcm9tICd0aHJlZSc7XG5cbmltcG9ydCB7IENvbnZvbHV0aW9uTWF0ZXJpYWwgfSBmcm9tICcuLi9jb252b2x1dGlvbi1tYXRlcmlhbC9jb252b2x1dGlvbi1tYXRlcmlhbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmx1clBhc3NQcm9wcyB7XG5cdGdsOiBXZWJHTFJlbmRlcmVyO1xuXHRyZXNvbHV0aW9uOiBudW1iZXI7XG5cdHdpZHRoPzogbnVtYmVyO1xuXHRoZWlnaHQ/OiBudW1iZXI7XG5cdG1pbkRlcHRoVGhyZXNob2xkPzogbnVtYmVyO1xuXHRtYXhEZXB0aFRocmVzaG9sZD86IG51bWJlcjtcblx0ZGVwdGhTY2FsZT86IG51bWJlcjtcblx0ZGVwdGhUb0JsdXJSYXRpb0JpYXM/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBCbHVyUGFzcyB7XG5cdHJlYWRvbmx5IHJlbmRlclRhcmdldEE6IFdlYkdMUmVuZGVyVGFyZ2V0O1xuXHRyZWFkb25seSByZW5kZXJUYXJnZXRCOiBXZWJHTFJlbmRlclRhcmdldDtcblx0cmVhZG9ubHkgY29udm9sdXRpb25NYXRlcmlhbDogQ29udm9sdXRpb25NYXRlcmlhbDtcblx0cmVhZG9ubHkgc2NlbmU6IFNjZW5lO1xuXHRyZWFkb25seSBjYW1lcmE6IENhbWVyYTtcblx0cmVhZG9ubHkgc2NyZWVuOiBNZXNoO1xuXHRyZW5kZXJUb1NjcmVlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdGNvbnN0cnVjdG9yKHtcblx0XHRnbCxcblx0XHRyZXNvbHV0aW9uLFxuXHRcdHdpZHRoID0gNTAwLFxuXHRcdGhlaWdodCA9IDUwMCxcblx0XHRtaW5EZXB0aFRocmVzaG9sZCA9IDAsXG5cdFx0bWF4RGVwdGhUaHJlc2hvbGQgPSAxLFxuXHRcdGRlcHRoU2NhbGUgPSAwLFxuXHRcdGRlcHRoVG9CbHVyUmF0aW9CaWFzID0gMC4yNSxcblx0fTogQmx1clBhc3NQcm9wcykge1xuXHRcdHRoaXMucmVuZGVyVGFyZ2V0QSA9IG5ldyBXZWJHTFJlbmRlclRhcmdldChyZXNvbHV0aW9uLCByZXNvbHV0aW9uLCB7XG5cdFx0XHRtaW5GaWx0ZXI6IExpbmVhckZpbHRlcixcblx0XHRcdG1hZ0ZpbHRlcjogTGluZWFyRmlsdGVyLFxuXHRcdFx0c3RlbmNpbEJ1ZmZlcjogZmFsc2UsXG5cdFx0XHRkZXB0aEJ1ZmZlcjogZmFsc2UsXG5cdFx0XHR0eXBlOiBIYWxmRmxvYXRUeXBlLFxuXHRcdH0pO1xuXHRcdHRoaXMucmVuZGVyVGFyZ2V0QiA9IHRoaXMucmVuZGVyVGFyZ2V0QS5jbG9uZSgpO1xuXHRcdHRoaXMuY29udm9sdXRpb25NYXRlcmlhbCA9IG5ldyBDb252b2x1dGlvbk1hdGVyaWFsKCk7XG5cdFx0dGhpcy5jb252b2x1dGlvbk1hdGVyaWFsLnNldFRleGVsU2l6ZSgxLjAgLyB3aWR0aCwgMS4wIC8gaGVpZ2h0KTtcblx0XHR0aGlzLmNvbnZvbHV0aW9uTWF0ZXJpYWwuc2V0UmVzb2x1dGlvbihuZXcgVmVjdG9yMih3aWR0aCwgaGVpZ2h0KSk7XG5cdFx0dGhpcy5zY2VuZSA9IG5ldyBTY2VuZSgpO1xuXHRcdHRoaXMuY2FtZXJhID0gbmV3IFBlcnNwZWN0aXZlQ2FtZXJhKCk7XG5cdFx0dGhpcy5jb252b2x1dGlvbk1hdGVyaWFsLnVuaWZvcm1zWydtaW5EZXB0aFRocmVzaG9sZCddLnZhbHVlID0gbWluRGVwdGhUaHJlc2hvbGQ7XG5cdFx0dGhpcy5jb252b2x1dGlvbk1hdGVyaWFsLnVuaWZvcm1zWydtYXhEZXB0aFRocmVzaG9sZCddLnZhbHVlID0gbWF4RGVwdGhUaHJlc2hvbGQ7XG5cdFx0dGhpcy5jb252b2x1dGlvbk1hdGVyaWFsLnVuaWZvcm1zWydkZXB0aFNjYWxlJ10udmFsdWUgPSBkZXB0aFNjYWxlO1xuXHRcdHRoaXMuY29udm9sdXRpb25NYXRlcmlhbC51bmlmb3Jtc1snZGVwdGhUb0JsdXJSYXRpb0JpYXMnXS52YWx1ZSA9IGRlcHRoVG9CbHVyUmF0aW9CaWFzO1xuXHRcdHRoaXMuY29udm9sdXRpb25NYXRlcmlhbC5kZWZpbmVzWydVU0VfREVQVEgnXSA9IGRlcHRoU2NhbGUgPiAwO1xuXHRcdGNvbnN0IHZlcnRpY2VzID0gbmV3IEZsb2F0MzJBcnJheShbLTEsIC0xLCAwLCAzLCAtMSwgMCwgLTEsIDMsIDBdKTtcblx0XHRjb25zdCB1dnMgPSBuZXcgRmxvYXQzMkFycmF5KFswLCAwLCAyLCAwLCAwLCAyXSk7XG5cdFx0Y29uc3QgZ2VvbWV0cnkgPSBuZXcgQnVmZmVyR2VvbWV0cnkoKTtcblx0XHRnZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgbmV3IEJ1ZmZlckF0dHJpYnV0ZSh2ZXJ0aWNlcywgMykpO1xuXHRcdGdlb21ldHJ5LnNldEF0dHJpYnV0ZSgndXYnLCBuZXcgQnVmZmVyQXR0cmlidXRlKHV2cywgMikpO1xuXHRcdHRoaXMuc2NyZWVuID0gbmV3IE1lc2goZ2VvbWV0cnksIHRoaXMuY29udm9sdXRpb25NYXRlcmlhbCk7XG5cdFx0dGhpcy5zY3JlZW4uZnJ1c3R1bUN1bGxlZCA9IGZhbHNlO1xuXHRcdHRoaXMuc2NlbmUuYWRkKHRoaXMuc2NyZWVuKTtcblx0fVxuXG5cdHJlbmRlcihyZW5kZXJlcjogV2ViR0xSZW5kZXJlciwgaW5wdXRCdWZmZXI6IFdlYkdMUmVuZGVyVGFyZ2V0LCBvdXRwdXRCdWZmZXI6IFdlYkdMUmVuZGVyVGFyZ2V0KSB7XG5cdFx0Y29uc3Qgc2NlbmUgPSB0aGlzLnNjZW5lO1xuXHRcdGNvbnN0IGNhbWVyYSA9IHRoaXMuY2FtZXJhO1xuXHRcdGNvbnN0IHJlbmRlclRhcmdldEEgPSB0aGlzLnJlbmRlclRhcmdldEE7XG5cdFx0Y29uc3QgcmVuZGVyVGFyZ2V0QiA9IHRoaXMucmVuZGVyVGFyZ2V0Qjtcblx0XHRsZXQgbWF0ZXJpYWwgPSB0aGlzLmNvbnZvbHV0aW9uTWF0ZXJpYWw7XG5cdFx0bGV0IHVuaWZvcm1zID0gbWF0ZXJpYWwudW5pZm9ybXM7XG5cdFx0dW5pZm9ybXNbJ2RlcHRoQnVmZmVyJ10udmFsdWUgPSBpbnB1dEJ1ZmZlci5kZXB0aFRleHR1cmU7XG5cdFx0Y29uc3Qga2VybmVsID0gbWF0ZXJpYWwua2VybmVsO1xuXHRcdGxldCBsYXN0UlQgPSBpbnB1dEJ1ZmZlcjtcblx0XHRsZXQgZGVzdFJUO1xuXHRcdGxldCBpLCBsO1xuXHRcdC8vIEFwcGx5IHRoZSBtdWx0aS1wYXNzIGJsdXIuXG5cdFx0Zm9yIChpID0gMCwgbCA9IGtlcm5lbC5sZW5ndGggLSAxOyBpIDwgbDsgKytpKSB7XG5cdFx0XHQvLyBBbHRlcm5hdGUgYmV0d2VlbiB0YXJnZXRzLlxuXHRcdFx0ZGVzdFJUID0gKGkgJiAxKSA9PT0gMCA/IHJlbmRlclRhcmdldEEgOiByZW5kZXJUYXJnZXRCO1xuXHRcdFx0dW5pZm9ybXNbJ2tlcm5lbCddLnZhbHVlID0ga2VybmVsW2ldO1xuXHRcdFx0dW5pZm9ybXNbJ2lucHV0QnVmZmVyJ10udmFsdWUgPSBsYXN0UlQudGV4dHVyZTtcblx0XHRcdHJlbmRlcmVyLnNldFJlbmRlclRhcmdldChkZXN0UlQpO1xuXHRcdFx0cmVuZGVyZXIucmVuZGVyKHNjZW5lLCBjYW1lcmEpO1xuXHRcdFx0bGFzdFJUID0gZGVzdFJUO1xuXHRcdH1cblx0XHR1bmlmb3Jtc1sna2VybmVsJ10udmFsdWUgPSBrZXJuZWxbaV07XG5cdFx0dW5pZm9ybXNbJ2lucHV0QnVmZmVyJ10udmFsdWUgPSBsYXN0UlQudGV4dHVyZTtcblx0XHRyZW5kZXJlci5zZXRSZW5kZXJUYXJnZXQodGhpcy5yZW5kZXJUb1NjcmVlbiA/IG51bGwgOiBvdXRwdXRCdWZmZXIpO1xuXHRcdHJlbmRlcmVyLnJlbmRlcihzY2VuZSwgY2FtZXJhKTtcblx0fVxufVxuIl19
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import { shaderMaterial } from '../shader-material/shader-material';
|
|
3
|
+
export const CausticsMaterial = shaderMaterial({
|
|
4
|
+
cameraMatrixWorld: new THREE.Matrix4(),
|
|
5
|
+
cameraProjectionMatrixInv: new THREE.Matrix4(),
|
|
6
|
+
normalTexture: null,
|
|
7
|
+
depthTexture: null,
|
|
8
|
+
lightDir: new THREE.Vector3(0, 1, 0),
|
|
9
|
+
lightPlaneNormal: new THREE.Vector3(0, 1, 0),
|
|
10
|
+
lightPlaneConstant: 0,
|
|
11
|
+
near: 0.1,
|
|
12
|
+
far: 100,
|
|
13
|
+
modelMatrix: new THREE.Matrix4(),
|
|
14
|
+
worldRadius: 1 / 40,
|
|
15
|
+
ior: 1.1,
|
|
16
|
+
bounces: 0,
|
|
17
|
+
resolution: 1024,
|
|
18
|
+
size: 10,
|
|
19
|
+
intensity: 0.5,
|
|
20
|
+
},
|
|
21
|
+
/* glsl */ `
|
|
22
|
+
varying vec2 vUv;
|
|
23
|
+
void main() {
|
|
24
|
+
vUv = uv;
|
|
25
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
26
|
+
}`,
|
|
27
|
+
/* glsl */ `
|
|
28
|
+
uniform mat4 cameraMatrixWorld;
|
|
29
|
+
uniform mat4 cameraProjectionMatrixInv;
|
|
30
|
+
uniform vec3 lightDir;
|
|
31
|
+
uniform vec3 lightPlaneNormal;
|
|
32
|
+
uniform float lightPlaneConstant;
|
|
33
|
+
uniform float near;
|
|
34
|
+
uniform float far;
|
|
35
|
+
uniform float time;
|
|
36
|
+
uniform float worldRadius;
|
|
37
|
+
uniform float resolution;
|
|
38
|
+
uniform float size;
|
|
39
|
+
uniform float intensity;
|
|
40
|
+
uniform float ior;
|
|
41
|
+
precision highp isampler2D;
|
|
42
|
+
precision highp usampler2D;
|
|
43
|
+
uniform sampler2D normalTexture;
|
|
44
|
+
uniform sampler2D depthTexture;
|
|
45
|
+
uniform float bounces;
|
|
46
|
+
varying vec2 vUv;
|
|
47
|
+
vec3 WorldPosFromDepth(float depth, vec2 coord) {
|
|
48
|
+
float z = depth * 2.0 - 1.0;
|
|
49
|
+
vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);
|
|
50
|
+
vec4 viewSpacePosition = cameraProjectionMatrixInv * clipSpacePosition;
|
|
51
|
+
// Perspective division
|
|
52
|
+
viewSpacePosition /= viewSpacePosition.w;
|
|
53
|
+
vec4 worldSpacePosition = cameraMatrixWorld * viewSpacePosition;
|
|
54
|
+
return worldSpacePosition.xyz;
|
|
55
|
+
}
|
|
56
|
+
float sdPlane( vec3 p, vec3 n, float h ) {
|
|
57
|
+
// n must be normalized
|
|
58
|
+
return dot(p,n) + h;
|
|
59
|
+
}
|
|
60
|
+
float planeIntersect( vec3 ro, vec3 rd, vec4 p ) {
|
|
61
|
+
return -(dot(ro,p.xyz)+p.w)/dot(rd,p.xyz);
|
|
62
|
+
}
|
|
63
|
+
vec3 totalInternalReflection(vec3 ro, vec3 rd, vec3 pos, vec3 normal, float ior, out vec3 rayOrigin, out vec3 rayDirection) {
|
|
64
|
+
rayOrigin = ro;
|
|
65
|
+
rayDirection = rd;
|
|
66
|
+
rayDirection = refract(rayDirection, normal, 1.0 / ior);
|
|
67
|
+
rayOrigin = pos + rayDirection * 0.1;
|
|
68
|
+
return rayDirection;
|
|
69
|
+
}
|
|
70
|
+
void main() {
|
|
71
|
+
// Each sample consists of random offset in the x and y direction
|
|
72
|
+
float caustic = 0.0;
|
|
73
|
+
float causticTexelSize = (1.0 / resolution) * size * 2.0;
|
|
74
|
+
float texelsNeeded = worldRadius / causticTexelSize;
|
|
75
|
+
float sampleRadius = texelsNeeded / resolution;
|
|
76
|
+
float sum = 0.0;
|
|
77
|
+
if (texture2D(depthTexture, vUv).x == 1.0) {
|
|
78
|
+
gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
vec2 offset1 = vec2(-0.5, -0.5);//vec2(rand() - 0.5, rand() - 0.5);
|
|
82
|
+
vec2 offset2 = vec2(-0.5, 0.5);//vec2(rand() - 0.5, rand() - 0.5);
|
|
83
|
+
vec2 offset3 = vec2(0.5, 0.5);//vec2(rand() - 0.5, rand() - 0.5);
|
|
84
|
+
vec2 offset4 = vec2(0.5, -0.5);//vec2(rand() - 0.5, rand() - 0.5);
|
|
85
|
+
vec2 uv1 = vUv + offset1 * sampleRadius;
|
|
86
|
+
vec2 uv2 = vUv + offset2 * sampleRadius;
|
|
87
|
+
vec2 uv3 = vUv + offset3 * sampleRadius;
|
|
88
|
+
vec2 uv4 = vUv + offset4 * sampleRadius;
|
|
89
|
+
vec3 normal1 = texture2D(normalTexture, uv1, -10.0).rgb * 2.0 - 1.0;
|
|
90
|
+
vec3 normal2 = texture2D(normalTexture, uv2, -10.0).rgb * 2.0 - 1.0;
|
|
91
|
+
vec3 normal3 = texture2D(normalTexture, uv3, -10.0).rgb * 2.0 - 1.0;
|
|
92
|
+
vec3 normal4 = texture2D(normalTexture, uv4, -10.0).rgb * 2.0 - 1.0;
|
|
93
|
+
float depth1 = texture2D(depthTexture, uv1, -10.0).x;
|
|
94
|
+
float depth2 = texture2D(depthTexture, uv2, -10.0).x;
|
|
95
|
+
float depth3 = texture2D(depthTexture, uv3, -10.0).x;
|
|
96
|
+
float depth4 = texture2D(depthTexture, uv4, -10.0).x;
|
|
97
|
+
// Sanity check the depths
|
|
98
|
+
if (depth1 == 1.0 || depth2 == 1.0 || depth3 == 1.0 || depth4 == 1.0) {
|
|
99
|
+
gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
vec3 pos1 = WorldPosFromDepth(depth1, uv1);
|
|
103
|
+
vec3 pos2 = WorldPosFromDepth(depth2, uv2);
|
|
104
|
+
vec3 pos3 = WorldPosFromDepth(depth3, uv3);
|
|
105
|
+
vec3 pos4 = WorldPosFromDepth(depth4, uv4);
|
|
106
|
+
vec3 originPos1 = WorldPosFromDepth(0.0, uv1);
|
|
107
|
+
vec3 originPos2 = WorldPosFromDepth(0.0, uv2);
|
|
108
|
+
vec3 originPos3 = WorldPosFromDepth(0.0, uv3);
|
|
109
|
+
vec3 originPos4 = WorldPosFromDepth(0.0, uv4);
|
|
110
|
+
vec3 endPos1, endPos2, endPos3, endPos4;
|
|
111
|
+
vec3 endDir1, endDir2, endDir3, endDir4;
|
|
112
|
+
totalInternalReflection(originPos1, lightDir, pos1, normal1, ior, endPos1, endDir1);
|
|
113
|
+
totalInternalReflection(originPos2, lightDir, pos2, normal2, ior, endPos2, endDir2);
|
|
114
|
+
totalInternalReflection(originPos3, lightDir, pos3, normal3, ior, endPos3, endDir3);
|
|
115
|
+
totalInternalReflection(originPos4, lightDir, pos4, normal4, ior, endPos4, endDir4);
|
|
116
|
+
float lightPosArea = length(cross(originPos2 - originPos1, originPos3 - originPos1)) + length(cross(originPos3 - originPos1, originPos4 - originPos1));
|
|
117
|
+
float t1 = planeIntersect(endPos1, endDir1, vec4(lightPlaneNormal, lightPlaneConstant));
|
|
118
|
+
float t2 = planeIntersect(endPos2, endDir2, vec4(lightPlaneNormal, lightPlaneConstant));
|
|
119
|
+
float t3 = planeIntersect(endPos3, endDir3, vec4(lightPlaneNormal, lightPlaneConstant));
|
|
120
|
+
float t4 = planeIntersect(endPos4, endDir4, vec4(lightPlaneNormal, lightPlaneConstant));
|
|
121
|
+
vec3 finalPos1 = endPos1 + endDir1 * t1;
|
|
122
|
+
vec3 finalPos2 = endPos2 + endDir2 * t2;
|
|
123
|
+
vec3 finalPos3 = endPos3 + endDir3 * t3;
|
|
124
|
+
vec3 finalPos4 = endPos4 + endDir4 * t4;
|
|
125
|
+
float finalArea = length(cross(finalPos2 - finalPos1, finalPos3 - finalPos1)) + length(cross(finalPos3 - finalPos1, finalPos4 - finalPos1));
|
|
126
|
+
caustic += intensity * (lightPosArea / finalArea);
|
|
127
|
+
// Calculate the area of the triangle in light spaces
|
|
128
|
+
gl_FragColor = vec4(vec3(max(caustic, 0.0)), 1.0);
|
|
129
|
+
}`);
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F1c3RpY3MtbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc2hhZGVycy9zcmMvY2F1c3RpY3MvY2F1c3RpY3MtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXBFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FDN0M7SUFDQyxpQkFBaUIsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7SUFDdEMseUJBQXlCLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO0lBQzlDLGFBQWEsRUFBRSxJQUFJO0lBQ25CLFlBQVksRUFBRSxJQUFJO0lBQ2xCLFFBQVEsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEMsZ0JBQWdCLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLGtCQUFrQixFQUFFLENBQUM7SUFDckIsSUFBSSxFQUFFLEdBQUc7SUFDVCxHQUFHLEVBQUUsR0FBRztJQUNSLFdBQVcsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7SUFDaEMsV0FBVyxFQUFFLENBQUMsR0FBRyxFQUFFO0lBQ25CLEdBQUcsRUFBRSxHQUFHO0lBQ1IsT0FBTyxFQUFFLENBQUM7SUFDVixVQUFVLEVBQUUsSUFBSTtJQUNoQixJQUFJLEVBQUUsRUFBRTtJQUNSLFNBQVMsRUFBRSxHQUFHO0NBQ2Q7QUFDRCxVQUFVLENBQUM7Ozs7O0lBS1I7QUFDSCxVQUFVLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQXNHUixDQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBzaGFkZXJNYXRlcmlhbCB9IGZyb20gJy4uL3NoYWRlci1tYXRlcmlhbC9zaGFkZXItbWF0ZXJpYWwnO1xuXG5leHBvcnQgY29uc3QgQ2F1c3RpY3NNYXRlcmlhbCA9IHNoYWRlck1hdGVyaWFsKFxuXHR7XG5cdFx0Y2FtZXJhTWF0cml4V29ybGQ6IG5ldyBUSFJFRS5NYXRyaXg0KCksXG5cdFx0Y2FtZXJhUHJvamVjdGlvbk1hdHJpeEludjogbmV3IFRIUkVFLk1hdHJpeDQoKSxcblx0XHRub3JtYWxUZXh0dXJlOiBudWxsLFxuXHRcdGRlcHRoVGV4dHVyZTogbnVsbCxcblx0XHRsaWdodERpcjogbmV3IFRIUkVFLlZlY3RvcjMoMCwgMSwgMCksXG5cdFx0bGlnaHRQbGFuZU5vcm1hbDogbmV3IFRIUkVFLlZlY3RvcjMoMCwgMSwgMCksXG5cdFx0bGlnaHRQbGFuZUNvbnN0YW50OiAwLFxuXHRcdG5lYXI6IDAuMSxcblx0XHRmYXI6IDEwMCxcblx0XHRtb2RlbE1hdHJpeDogbmV3IFRIUkVFLk1hdHJpeDQoKSxcblx0XHR3b3JsZFJhZGl1czogMSAvIDQwLFxuXHRcdGlvcjogMS4xLFxuXHRcdGJvdW5jZXM6IDAsXG5cdFx0cmVzb2x1dGlvbjogMTAyNCxcblx0XHRzaXplOiAxMCxcblx0XHRpbnRlbnNpdHk6IDAuNSxcblx0fSxcblx0LyogZ2xzbCAqLyBgXG4gIHZhcnlpbmcgdmVjMiB2VXY7XG4gIHZvaWQgbWFpbigpIHtcbiAgICAgIHZVdiA9IHV2O1xuICAgICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbW9kZWxWaWV3TWF0cml4ICogdmVjNChwb3NpdGlvbiwgMS4wKTtcbiAgfWAsXG5cdC8qIGdsc2wgKi8gYFxuICB1bmlmb3JtIG1hdDQgY2FtZXJhTWF0cml4V29ybGQ7XG4gIHVuaWZvcm0gbWF0NCBjYW1lcmFQcm9qZWN0aW9uTWF0cml4SW52O1xuICB1bmlmb3JtIHZlYzMgbGlnaHREaXI7XG4gIHVuaWZvcm0gdmVjMyBsaWdodFBsYW5lTm9ybWFsO1xuICB1bmlmb3JtIGZsb2F0IGxpZ2h0UGxhbmVDb25zdGFudDtcbiAgdW5pZm9ybSBmbG9hdCBuZWFyO1xuICB1bmlmb3JtIGZsb2F0IGZhcjtcbiAgdW5pZm9ybSBmbG9hdCB0aW1lO1xuICB1bmlmb3JtIGZsb2F0IHdvcmxkUmFkaXVzO1xuICB1bmlmb3JtIGZsb2F0IHJlc29sdXRpb247XG4gIHVuaWZvcm0gZmxvYXQgc2l6ZTtcbiAgdW5pZm9ybSBmbG9hdCBpbnRlbnNpdHk7XG4gIHVuaWZvcm0gZmxvYXQgaW9yO1xuICBwcmVjaXNpb24gaGlnaHAgaXNhbXBsZXIyRDtcbiAgcHJlY2lzaW9uIGhpZ2hwIHVzYW1wbGVyMkQ7XG4gIHVuaWZvcm0gc2FtcGxlcjJEIG5vcm1hbFRleHR1cmU7XG4gIHVuaWZvcm0gc2FtcGxlcjJEIGRlcHRoVGV4dHVyZTtcbiAgdW5pZm9ybSBmbG9hdCBib3VuY2VzO1xuICB2YXJ5aW5nIHZlYzIgdlV2O1xuICB2ZWMzIFdvcmxkUG9zRnJvbURlcHRoKGZsb2F0IGRlcHRoLCB2ZWMyIGNvb3JkKSB7XG4gICAgZmxvYXQgeiA9IGRlcHRoICogMi4wIC0gMS4wO1xuICAgIHZlYzQgY2xpcFNwYWNlUG9zaXRpb24gPSB2ZWM0KGNvb3JkICogMi4wIC0gMS4wLCB6LCAxLjApO1xuICAgIHZlYzQgdmlld1NwYWNlUG9zaXRpb24gPSBjYW1lcmFQcm9qZWN0aW9uTWF0cml4SW52ICogY2xpcFNwYWNlUG9zaXRpb247XG4gICAgLy8gUGVyc3BlY3RpdmUgZGl2aXNpb25cbiAgICB2aWV3U3BhY2VQb3NpdGlvbiAvPSB2aWV3U3BhY2VQb3NpdGlvbi53O1xuICAgIHZlYzQgd29ybGRTcGFjZVBvc2l0aW9uID0gY2FtZXJhTWF0cml4V29ybGQgKiB2aWV3U3BhY2VQb3NpdGlvbjtcbiAgICByZXR1cm4gd29ybGRTcGFjZVBvc2l0aW9uLnh5ejtcbiAgfVxuICBmbG9hdCBzZFBsYW5lKCB2ZWMzIHAsIHZlYzMgbiwgZmxvYXQgaCApIHtcbiAgICAvLyBuIG11c3QgYmUgbm9ybWFsaXplZFxuICAgIHJldHVybiBkb3QocCxuKSArIGg7XG4gIH1cbiAgZmxvYXQgcGxhbmVJbnRlcnNlY3QoIHZlYzMgcm8sIHZlYzMgcmQsIHZlYzQgcCApIHtcbiAgICByZXR1cm4gLShkb3Qocm8scC54eXopK3AudykvZG90KHJkLHAueHl6KTtcbiAgfVxuICB2ZWMzIHRvdGFsSW50ZXJuYWxSZWZsZWN0aW9uKHZlYzMgcm8sIHZlYzMgcmQsIHZlYzMgcG9zLCB2ZWMzIG5vcm1hbCwgZmxvYXQgaW9yLCBvdXQgdmVjMyByYXlPcmlnaW4sIG91dCB2ZWMzIHJheURpcmVjdGlvbikge1xuICAgIHJheU9yaWdpbiA9IHJvO1xuICAgIHJheURpcmVjdGlvbiA9IHJkO1xuICAgIHJheURpcmVjdGlvbiA9IHJlZnJhY3QocmF5RGlyZWN0aW9uLCBub3JtYWwsIDEuMCAvIGlvcik7XG4gICAgcmF5T3JpZ2luID0gcG9zICsgcmF5RGlyZWN0aW9uICogMC4xO1xuICAgIHJldHVybiByYXlEaXJlY3Rpb247XG4gIH1cbiAgdm9pZCBtYWluKCkge1xuICAgIC8vIEVhY2ggc2FtcGxlIGNvbnNpc3RzIG9mIHJhbmRvbSBvZmZzZXQgaW4gdGhlIHggYW5kIHkgZGlyZWN0aW9uXG4gICAgZmxvYXQgY2F1c3RpYyA9IDAuMDtcbiAgICBmbG9hdCBjYXVzdGljVGV4ZWxTaXplID0gKDEuMCAvIHJlc29sdXRpb24pICogc2l6ZSAqIDIuMDtcbiAgICBmbG9hdCB0ZXhlbHNOZWVkZWQgPSB3b3JsZFJhZGl1cyAvIGNhdXN0aWNUZXhlbFNpemU7XG4gICAgZmxvYXQgc2FtcGxlUmFkaXVzID0gdGV4ZWxzTmVlZGVkIC8gcmVzb2x1dGlvbjtcbiAgICBmbG9hdCBzdW0gPSAwLjA7XG4gICAgaWYgKHRleHR1cmUyRChkZXB0aFRleHR1cmUsIHZVdikueCA9PSAxLjApIHtcbiAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmVjMiBvZmZzZXQxID0gdmVjMigtMC41LCAtMC41KTsvL3ZlYzIocmFuZCgpIC0gMC41LCByYW5kKCkgLSAwLjUpO1xuICAgIHZlYzIgb2Zmc2V0MiA9IHZlYzIoLTAuNSwgMC41KTsvL3ZlYzIocmFuZCgpIC0gMC41LCByYW5kKCkgLSAwLjUpO1xuICAgIHZlYzIgb2Zmc2V0MyA9IHZlYzIoMC41LCAwLjUpOy8vdmVjMihyYW5kKCkgLSAwLjUsIHJhbmQoKSAtIDAuNSk7XG4gICAgdmVjMiBvZmZzZXQ0ID0gdmVjMigwLjUsIC0wLjUpOy8vdmVjMihyYW5kKCkgLSAwLjUsIHJhbmQoKSAtIDAuNSk7XG4gICAgdmVjMiB1djEgPSB2VXYgKyBvZmZzZXQxICogc2FtcGxlUmFkaXVzO1xuICAgIHZlYzIgdXYyID0gdlV2ICsgb2Zmc2V0MiAqIHNhbXBsZVJhZGl1cztcbiAgICB2ZWMyIHV2MyA9IHZVdiArIG9mZnNldDMgKiBzYW1wbGVSYWRpdXM7XG4gICAgdmVjMiB1djQgPSB2VXYgKyBvZmZzZXQ0ICogc2FtcGxlUmFkaXVzO1xuICAgIHZlYzMgbm9ybWFsMSA9IHRleHR1cmUyRChub3JtYWxUZXh0dXJlLCB1djEsIC0xMC4wKS5yZ2IgKiAyLjAgLSAxLjA7XG4gICAgdmVjMyBub3JtYWwyID0gdGV4dHVyZTJEKG5vcm1hbFRleHR1cmUsIHV2MiwgLTEwLjApLnJnYiAqIDIuMCAtIDEuMDtcbiAgICB2ZWMzIG5vcm1hbDMgPSB0ZXh0dXJlMkQobm9ybWFsVGV4dHVyZSwgdXYzLCAtMTAuMCkucmdiICogMi4wIC0gMS4wO1xuICAgIHZlYzMgbm9ybWFsNCA9IHRleHR1cmUyRChub3JtYWxUZXh0dXJlLCB1djQsIC0xMC4wKS5yZ2IgKiAyLjAgLSAxLjA7XG4gICAgZmxvYXQgZGVwdGgxID0gdGV4dHVyZTJEKGRlcHRoVGV4dHVyZSwgdXYxLCAtMTAuMCkueDtcbiAgICBmbG9hdCBkZXB0aDIgPSB0ZXh0dXJlMkQoZGVwdGhUZXh0dXJlLCB1djIsIC0xMC4wKS54O1xuICAgIGZsb2F0IGRlcHRoMyA9IHRleHR1cmUyRChkZXB0aFRleHR1cmUsIHV2MywgLTEwLjApLng7XG4gICAgZmxvYXQgZGVwdGg0ID0gdGV4dHVyZTJEKGRlcHRoVGV4dHVyZSwgdXY0LCAtMTAuMCkueDtcbiAgICAvLyBTYW5pdHkgY2hlY2sgdGhlIGRlcHRoc1xuICAgIGlmIChkZXB0aDEgPT0gMS4wIHx8IGRlcHRoMiA9PSAxLjAgfHwgZGVwdGgzID09IDEuMCB8fCBkZXB0aDQgPT0gMS4wKSB7XG4gICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZlYzMgcG9zMSA9IFdvcmxkUG9zRnJvbURlcHRoKGRlcHRoMSwgdXYxKTtcbiAgICB2ZWMzIHBvczIgPSBXb3JsZFBvc0Zyb21EZXB0aChkZXB0aDIsIHV2Mik7XG4gICAgdmVjMyBwb3MzID0gV29ybGRQb3NGcm9tRGVwdGgoZGVwdGgzLCB1djMpO1xuICAgIHZlYzMgcG9zNCA9IFdvcmxkUG9zRnJvbURlcHRoKGRlcHRoNCwgdXY0KTtcbiAgICB2ZWMzIG9yaWdpblBvczEgPSBXb3JsZFBvc0Zyb21EZXB0aCgwLjAsIHV2MSk7XG4gICAgdmVjMyBvcmlnaW5Qb3MyID0gV29ybGRQb3NGcm9tRGVwdGgoMC4wLCB1djIpO1xuICAgIHZlYzMgb3JpZ2luUG9zMyA9IFdvcmxkUG9zRnJvbURlcHRoKDAuMCwgdXYzKTtcbiAgICB2ZWMzIG9yaWdpblBvczQgPSBXb3JsZFBvc0Zyb21EZXB0aCgwLjAsIHV2NCk7XG4gICAgdmVjMyBlbmRQb3MxLCBlbmRQb3MyLCBlbmRQb3MzLCBlbmRQb3M0O1xuICAgIHZlYzMgZW5kRGlyMSwgZW5kRGlyMiwgZW5kRGlyMywgZW5kRGlyNDtcbiAgICB0b3RhbEludGVybmFsUmVmbGVjdGlvbihvcmlnaW5Qb3MxLCBsaWdodERpciwgcG9zMSwgbm9ybWFsMSwgaW9yLCBlbmRQb3MxLCBlbmREaXIxKTtcbiAgICB0b3RhbEludGVybmFsUmVmbGVjdGlvbihvcmlnaW5Qb3MyLCBsaWdodERpciwgcG9zMiwgbm9ybWFsMiwgaW9yLCBlbmRQb3MyLCBlbmREaXIyKTtcbiAgICB0b3RhbEludGVybmFsUmVmbGVjdGlvbihvcmlnaW5Qb3MzLCBsaWdodERpciwgcG9zMywgbm9ybWFsMywgaW9yLCBlbmRQb3MzLCBlbmREaXIzKTtcbiAgICB0b3RhbEludGVybmFsUmVmbGVjdGlvbihvcmlnaW5Qb3M0LCBsaWdodERpciwgcG9zNCwgbm9ybWFsNCwgaW9yLCBlbmRQb3M0LCBlbmREaXI0KTtcbiAgICBmbG9hdCBsaWdodFBvc0FyZWEgPSBsZW5ndGgoY3Jvc3Mob3JpZ2luUG9zMiAtIG9yaWdpblBvczEsIG9yaWdpblBvczMgLSBvcmlnaW5Qb3MxKSkgKyBsZW5ndGgoY3Jvc3Mob3JpZ2luUG9zMyAtIG9yaWdpblBvczEsIG9yaWdpblBvczQgLSBvcmlnaW5Qb3MxKSk7XG4gICAgZmxvYXQgdDEgPSBwbGFuZUludGVyc2VjdChlbmRQb3MxLCBlbmREaXIxLCB2ZWM0KGxpZ2h0UGxhbmVOb3JtYWwsIGxpZ2h0UGxhbmVDb25zdGFudCkpO1xuICAgIGZsb2F0IHQyID0gcGxhbmVJbnRlcnNlY3QoZW5kUG9zMiwgZW5kRGlyMiwgdmVjNChsaWdodFBsYW5lTm9ybWFsLCBsaWdodFBsYW5lQ29uc3RhbnQpKTtcbiAgICBmbG9hdCB0MyA9IHBsYW5lSW50ZXJzZWN0KGVuZFBvczMsIGVuZERpcjMsIHZlYzQobGlnaHRQbGFuZU5vcm1hbCwgbGlnaHRQbGFuZUNvbnN0YW50KSk7XG4gICAgZmxvYXQgdDQgPSBwbGFuZUludGVyc2VjdChlbmRQb3M0LCBlbmREaXI0LCB2ZWM0KGxpZ2h0UGxhbmVOb3JtYWwsIGxpZ2h0UGxhbmVDb25zdGFudCkpO1xuICAgIHZlYzMgZmluYWxQb3MxID0gZW5kUG9zMSArIGVuZERpcjEgKiB0MTtcbiAgICB2ZWMzIGZpbmFsUG9zMiA9IGVuZFBvczIgKyBlbmREaXIyICogdDI7XG4gICAgdmVjMyBmaW5hbFBvczMgPSBlbmRQb3MzICsgZW5kRGlyMyAqIHQzO1xuICAgIHZlYzMgZmluYWxQb3M0ID0gZW5kUG9zNCArIGVuZERpcjQgKiB0NDtcbiAgICBmbG9hdCBmaW5hbEFyZWEgPSBsZW5ndGgoY3Jvc3MoZmluYWxQb3MyIC0gZmluYWxQb3MxLCBmaW5hbFBvczMgLSBmaW5hbFBvczEpKSArIGxlbmd0aChjcm9zcyhmaW5hbFBvczMgLSBmaW5hbFBvczEsIGZpbmFsUG9zNCAtIGZpbmFsUG9zMSkpO1xuICAgIGNhdXN0aWMgKz0gaW50ZW5zaXR5ICogKGxpZ2h0UG9zQXJlYSAvIGZpbmFsQXJlYSk7XG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBhcmVhIG9mIHRoZSB0cmlhbmdsZSBpbiBsaWdodCBzcGFjZXNcbiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHZlYzMobWF4KGNhdXN0aWMsIDAuMCkpLCAxLjApO1xuICB9YCxcbik7XG4iXX0=
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { revision } from 'angular-three-soba/utils';
|
|
2
|
+
import * as THREE from 'three';
|
|
3
|
+
import { shaderMaterial } from '../shader-material/shader-material';
|
|
4
|
+
export const CausticsProjectionMaterial = shaderMaterial({
|
|
5
|
+
causticsTexture: null,
|
|
6
|
+
causticsTextureB: null,
|
|
7
|
+
color: new THREE.Color(),
|
|
8
|
+
lightProjMatrix: new THREE.Matrix4(),
|
|
9
|
+
lightViewMatrix: new THREE.Matrix4(),
|
|
10
|
+
}, `varying vec3 vWorldPosition;
|
|
11
|
+
void main() {
|
|
12
|
+
gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position, 1.);
|
|
13
|
+
vec4 worldPosition = modelMatrix * vec4(position, 1.);
|
|
14
|
+
vWorldPosition = worldPosition.xyz;
|
|
15
|
+
}`, `varying vec3 vWorldPosition;
|
|
16
|
+
uniform vec3 color;
|
|
17
|
+
uniform sampler2D causticsTexture;
|
|
18
|
+
uniform sampler2D causticsTextureB;
|
|
19
|
+
uniform mat4 lightProjMatrix;
|
|
20
|
+
uniform mat4 lightViewMatrix;
|
|
21
|
+
void main() {
|
|
22
|
+
// Apply caustics
|
|
23
|
+
vec4 lightSpacePos = lightProjMatrix * lightViewMatrix * vec4(vWorldPosition, 1.0);
|
|
24
|
+
lightSpacePos.xyz /= lightSpacePos.w;
|
|
25
|
+
lightSpacePos.xyz = lightSpacePos.xyz * 0.5 + 0.5;
|
|
26
|
+
vec3 front = texture2D(causticsTexture, lightSpacePos.xy).rgb;
|
|
27
|
+
vec3 back = texture2D(causticsTextureB, lightSpacePos.xy).rgb;
|
|
28
|
+
gl_FragColor = vec4((front + back) * color, 1.0);
|
|
29
|
+
#include <tonemapping_fragment>
|
|
30
|
+
#include <${revision >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
|
|
31
|
+
}`);
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F1c3RpY3MtcHJvamVjdGlvbi1tYXRlcmlhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9zaGFkZXJzL3NyYy9jYXVzdGljcy9jYXVzdGljcy1wcm9qZWN0aW9uLW1hdGVyaWFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFcEUsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsY0FBYyxDQUN2RDtJQUNDLGVBQWUsRUFBRSxJQUFJO0lBQ3JCLGdCQUFnQixFQUFFLElBQUk7SUFDdEIsS0FBSyxFQUFFLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRTtJQUN4QixlQUFlLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO0lBQ3BDLGVBQWUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7Q0FDcEMsRUFDRDs7Ozs7S0FLSSxFQUNKOzs7Ozs7Ozs7Ozs7Ozs7Z0JBZWUsUUFBUSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLG9CQUFvQjtLQUN6RSxDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZXZpc2lvbiB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS91dGlscyc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBzaGFkZXJNYXRlcmlhbCB9IGZyb20gJy4uL3NoYWRlci1tYXRlcmlhbC9zaGFkZXItbWF0ZXJpYWwnO1xuXG5leHBvcnQgY29uc3QgQ2F1c3RpY3NQcm9qZWN0aW9uTWF0ZXJpYWwgPSBzaGFkZXJNYXRlcmlhbChcblx0e1xuXHRcdGNhdXN0aWNzVGV4dHVyZTogbnVsbCxcblx0XHRjYXVzdGljc1RleHR1cmVCOiBudWxsLFxuXHRcdGNvbG9yOiBuZXcgVEhSRUUuQ29sb3IoKSxcblx0XHRsaWdodFByb2pNYXRyaXg6IG5ldyBUSFJFRS5NYXRyaXg0KCksXG5cdFx0bGlnaHRWaWV3TWF0cml4OiBuZXcgVEhSRUUuTWF0cml4NCgpLFxuXHR9LFxuXHRgdmFyeWluZyB2ZWMzIHZXb3JsZFBvc2l0aW9uO1xuICAgdm9pZCBtYWluKCkge1xuICAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiB2aWV3TWF0cml4ICogbW9kZWxNYXRyaXggKiB2ZWM0KHBvc2l0aW9uLCAxLik7XG4gICAgIHZlYzQgd29ybGRQb3NpdGlvbiA9IG1vZGVsTWF0cml4ICogdmVjNChwb3NpdGlvbiwgMS4pO1xuICAgICB2V29ybGRQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb24ueHl6O1xuICAgfWAsXG5cdGB2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XG4gIHVuaWZvcm0gdmVjMyBjb2xvcjtcbiAgdW5pZm9ybSBzYW1wbGVyMkQgY2F1c3RpY3NUZXh0dXJlO1xuICB1bmlmb3JtIHNhbXBsZXIyRCBjYXVzdGljc1RleHR1cmVCO1xuICB1bmlmb3JtIG1hdDQgbGlnaHRQcm9qTWF0cml4O1xuICB1bmlmb3JtIG1hdDQgbGlnaHRWaWV3TWF0cml4O1xuICAgdm9pZCBtYWluKCkge1xuICAgIC8vIEFwcGx5IGNhdXN0aWNzXG4gICAgdmVjNCBsaWdodFNwYWNlUG9zID0gbGlnaHRQcm9qTWF0cml4ICogbGlnaHRWaWV3TWF0cml4ICogdmVjNCh2V29ybGRQb3NpdGlvbiwgMS4wKTtcbiAgICBsaWdodFNwYWNlUG9zLnh5eiAvPSBsaWdodFNwYWNlUG9zLnc7XG4gICAgbGlnaHRTcGFjZVBvcy54eXogPSBsaWdodFNwYWNlUG9zLnh5eiAqIDAuNSArIDAuNTtcbiAgICB2ZWMzIGZyb250ID0gdGV4dHVyZTJEKGNhdXN0aWNzVGV4dHVyZSwgbGlnaHRTcGFjZVBvcy54eSkucmdiO1xuICAgIHZlYzMgYmFjayA9IHRleHR1cmUyRChjYXVzdGljc1RleHR1cmVCLCBsaWdodFNwYWNlUG9zLnh5KS5yZ2I7XG4gICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgoZnJvbnQgKyBiYWNrKSAqIGNvbG9yLCAxLjApO1xuICAgICNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cbiAgICAjaW5jbHVkZSA8JHtyZXZpc2lvbiA+PSAxNTQgPyAnY29sb3JzcGFjZV9mcmFnbWVudCcgOiAnZW5jb2RpbmdzX2ZyYWdtZW50J30+XG4gICB9YCxcbik7XG4iXX0=
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { revision } from 'angular-three-soba/utils';
|
|
1
2
|
import { NoBlending, ShaderMaterial, Uniform, Vector2 } from 'three';
|
|
2
3
|
export class ConvolutionMaterial extends ShaderMaterial {
|
|
3
4
|
constructor(texelSize = new Vector2()) {
|
|
@@ -51,7 +52,7 @@ export class ConvolutionMaterial extends ShaderMaterial {
|
|
|
51
52
|
|
|
52
53
|
#include <dithering_fragment>
|
|
53
54
|
#include <tonemapping_fragment>
|
|
54
|
-
#include
|
|
55
|
+
#include <${revision >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
|
|
55
56
|
}`,
|
|
56
57
|
vertexShader: `uniform vec2 texelSize;
|
|
57
58
|
uniform vec2 halfTexelSize;
|
|
@@ -91,4 +92,4 @@ export class ConvolutionMaterial extends ShaderMaterial {
|
|
|
91
92
|
this.uniforms['resolution'].value.copy(resolution);
|
|
92
93
|
}
|
|
93
94
|
}
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udm9sdXRpb24tbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc2hhZGVycy9zcmMvY29udm9sdXRpb24tbWF0ZXJpYWwvY29udm9sdXRpb24tbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFFckUsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGNBQWM7SUFFdEQsWUFBWSxTQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUU7UUFDcEMsS0FBSyxDQUFDO1lBQ0wsUUFBUSxFQUFFO2dCQUNULFdBQVcsRUFBRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQzlCLFdBQVcsRUFBRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQzlCLFVBQVUsRUFBRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUN0QyxTQUFTLEVBQUUsSUFBSSxPQUFPLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDckMsYUFBYSxFQUFFLElBQUksT0FBTyxDQUFDLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ3pDLE1BQU0sRUFBRSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQ3hCLEtBQUssRUFBRSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQ3ZCLFVBQVUsRUFBRSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQzVCLFNBQVMsRUFBRSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQzNCLGlCQUFpQixFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDbkMsaUJBQWlCLEVBQUUsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDO2dCQUNuQyxVQUFVLEVBQUUsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDO2dCQUM1QixvQkFBb0IsRUFBRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUM7YUFDdkM7WUFDRCxjQUFjLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0JBa0NHLFFBQVEsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxvQkFBb0I7VUFDMUU7WUFDUCxZQUFZLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQXFCUDtZQUNQLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFNBQVMsRUFBRSxLQUFLO1NBQ2hCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFlBQVksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxZQUFZLENBQUMsQ0FBUyxFQUFFLENBQVM7UUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBQ0QsYUFBYSxDQUFDLFVBQW1CO1FBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwRCxDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZXZpc2lvbiB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS91dGlscyc7XG5pbXBvcnQgeyBOb0JsZW5kaW5nLCBTaGFkZXJNYXRlcmlhbCwgVW5pZm9ybSwgVmVjdG9yMiB9IGZyb20gJ3RocmVlJztcblxuZXhwb3J0IGNsYXNzIENvbnZvbHV0aW9uTWF0ZXJpYWwgZXh0ZW5kcyBTaGFkZXJNYXRlcmlhbCB7XG5cdHJlYWRvbmx5IGtlcm5lbDogRmxvYXQzMkFycmF5O1xuXHRjb25zdHJ1Y3Rvcih0ZXhlbFNpemUgPSBuZXcgVmVjdG9yMigpKSB7XG5cdFx0c3VwZXIoe1xuXHRcdFx0dW5pZm9ybXM6IHtcblx0XHRcdFx0aW5wdXRCdWZmZXI6IG5ldyBVbmlmb3JtKG51bGwpLFxuXHRcdFx0XHRkZXB0aEJ1ZmZlcjogbmV3IFVuaWZvcm0obnVsbCksXG5cdFx0XHRcdHJlc29sdXRpb246IG5ldyBVbmlmb3JtKG5ldyBWZWN0b3IyKCkpLFxuXHRcdFx0XHR0ZXhlbFNpemU6IG5ldyBVbmlmb3JtKG5ldyBWZWN0b3IyKCkpLFxuXHRcdFx0XHRoYWxmVGV4ZWxTaXplOiBuZXcgVW5pZm9ybShuZXcgVmVjdG9yMigpKSxcblx0XHRcdFx0a2VybmVsOiBuZXcgVW5pZm9ybSgwLjApLFxuXHRcdFx0XHRzY2FsZTogbmV3IFVuaWZvcm0oMS4wKSxcblx0XHRcdFx0Y2FtZXJhTmVhcjogbmV3IFVuaWZvcm0oMC4wKSxcblx0XHRcdFx0Y2FtZXJhRmFyOiBuZXcgVW5pZm9ybSgxLjApLFxuXHRcdFx0XHRtaW5EZXB0aFRocmVzaG9sZDogbmV3IFVuaWZvcm0oMC4wKSxcblx0XHRcdFx0bWF4RGVwdGhUaHJlc2hvbGQ6IG5ldyBVbmlmb3JtKDEuMCksXG5cdFx0XHRcdGRlcHRoU2NhbGU6IG5ldyBVbmlmb3JtKDAuMCksXG5cdFx0XHRcdGRlcHRoVG9CbHVyUmF0aW9CaWFzOiBuZXcgVW5pZm9ybSgwLjI1KSxcblx0XHRcdH0sXG5cdFx0XHRmcmFnbWVudFNoYWRlcjogYCNpbmNsdWRlIDxjb21tb24+XG4gICAgICAgICNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgaW5wdXRCdWZmZXI7XG4gICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIGRlcHRoQnVmZmVyO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IGNhbWVyYU5lYXI7XG4gICAgICAgIHVuaWZvcm0gZmxvYXQgY2FtZXJhRmFyO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IG1pbkRlcHRoVGhyZXNob2xkO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IG1heERlcHRoVGhyZXNob2xkO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IGRlcHRoU2NhbGU7XG4gICAgICAgIHVuaWZvcm0gZmxvYXQgZGVwdGhUb0JsdXJSYXRpb0JpYXM7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXY7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXYwO1xuICAgICAgICB2YXJ5aW5nIHZlYzIgdlV2MTtcbiAgICAgICAgdmFyeWluZyB2ZWMyIHZVdjI7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXYzO1xuXG4gICAgICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgICBmbG9hdCBkZXB0aEZhY3RvciA9IDAuMDtcblxuICAgICAgICAgICNpZmRlZiBVU0VfREVQVEhcbiAgICAgICAgICAgIHZlYzQgZGVwdGggPSB0ZXh0dXJlMkQoZGVwdGhCdWZmZXIsIHZVdik7XG4gICAgICAgICAgICBkZXB0aEZhY3RvciA9IHNtb290aHN0ZXAobWluRGVwdGhUaHJlc2hvbGQsIG1heERlcHRoVGhyZXNob2xkLCAxLjAtKGRlcHRoLnIgKiBkZXB0aC5hKSk7XG4gICAgICAgICAgICBkZXB0aEZhY3RvciAqPSBkZXB0aFNjYWxlO1xuICAgICAgICAgICAgZGVwdGhGYWN0b3IgPSBtYXgoMC4wLCBtaW4oMS4wLCBkZXB0aEZhY3RvciArIDAuMjUpKTtcbiAgICAgICAgICAjZW5kaWZcblxuICAgICAgICAgIHZlYzQgc3VtID0gdGV4dHVyZTJEKGlucHV0QnVmZmVyLCBtaXgodlV2MCwgdlV2LCBkZXB0aEZhY3RvcikpO1xuICAgICAgICAgIHN1bSArPSB0ZXh0dXJlMkQoaW5wdXRCdWZmZXIsIG1peCh2VXYxLCB2VXYsIGRlcHRoRmFjdG9yKSk7XG4gICAgICAgICAgc3VtICs9IHRleHR1cmUyRChpbnB1dEJ1ZmZlciwgbWl4KHZVdjIsIHZVdiwgZGVwdGhGYWN0b3IpKTtcbiAgICAgICAgICBzdW0gKz0gdGV4dHVyZTJEKGlucHV0QnVmZmVyLCBtaXgodlV2MywgdlV2LCBkZXB0aEZhY3RvcikpO1xuICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHN1bSAqIDAuMjUgO1xuXG4gICAgICAgICAgI2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD5cbiAgICAgICAgICAjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG4gICAgICAgICAgI2luY2x1ZGUgPCR7cmV2aXNpb24gPj0gMTU0ID8gJ2NvbG9yc3BhY2VfZnJhZ21lbnQnIDogJ2VuY29kaW5nc19mcmFnbWVudCd9PlxuICAgICAgICB9YCxcblx0XHRcdHZlcnRleFNoYWRlcjogYHVuaWZvcm0gdmVjMiB0ZXhlbFNpemU7XG4gICAgICAgIHVuaWZvcm0gdmVjMiBoYWxmVGV4ZWxTaXplO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IGtlcm5lbDtcbiAgICAgICAgdW5pZm9ybSBmbG9hdCBzY2FsZTtcbiAgICAgICAgdmFyeWluZyB2ZWMyIHZVdjtcbiAgICAgICAgdmFyeWluZyB2ZWMyIHZVdjA7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXYxO1xuICAgICAgICB2YXJ5aW5nIHZlYzIgdlV2MjtcbiAgICAgICAgdmFyeWluZyB2ZWMyIHZVdjM7XG5cbiAgICAgICAgdm9pZCBtYWluKCkge1xuICAgICAgICAgIHZlYzIgdXYgPSBwb3NpdGlvbi54eSAqIDAuNSArIDAuNTtcbiAgICAgICAgICB2VXYgPSB1djtcblxuICAgICAgICAgIHZlYzIgZFV2ID0gKHRleGVsU2l6ZSAqIHZlYzIoa2VybmVsKSArIGhhbGZUZXhlbFNpemUpICogc2NhbGU7XG4gICAgICAgICAgdlV2MCA9IHZlYzIodXYueCAtIGRVdi54LCB1di55ICsgZFV2LnkpO1xuICAgICAgICAgIHZVdjEgPSB2ZWMyKHV2LnggKyBkVXYueCwgdXYueSArIGRVdi55KTtcbiAgICAgICAgICB2VXYyID0gdmVjMih1di54ICsgZFV2LngsIHV2LnkgLSBkVXYueSk7XG4gICAgICAgICAgdlV2MyA9IHZlYzIodXYueCAtIGRVdi54LCB1di55IC0gZFV2LnkpO1xuXG4gICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLnh5LCAxLjAsIDEuMCk7XG4gICAgICAgIH1gLFxuXHRcdFx0YmxlbmRpbmc6IE5vQmxlbmRpbmcsXG5cdFx0XHRkZXB0aFdyaXRlOiBmYWxzZSxcblx0XHRcdGRlcHRoVGVzdDogZmFsc2UsXG5cdFx0fSk7XG5cblx0XHR0aGlzLnRvbmVNYXBwZWQgPSBmYWxzZTtcblx0XHR0aGlzLnNldFRleGVsU2l6ZSh0ZXhlbFNpemUueCwgdGV4ZWxTaXplLnkpO1xuXHRcdHRoaXMua2VybmVsID0gbmV3IEZsb2F0MzJBcnJheShbMC4wLCAxLjAsIDIuMCwgMi4wLCAzLjBdKTtcblx0fVxuXG5cdHNldFRleGVsU2l6ZSh4OiBudW1iZXIsIHk6IG51bWJlcikge1xuXHRcdHRoaXMudW5pZm9ybXNbJ3RleGVsU2l6ZSddLnZhbHVlLnNldCh4LCB5KTtcblx0XHR0aGlzLnVuaWZvcm1zWydoYWxmVGV4ZWxTaXplJ10udmFsdWUuc2V0KHgsIHkpLm11bHRpcGx5U2NhbGFyKDAuNSk7XG5cdH1cblx0c2V0UmVzb2x1dGlvbihyZXNvbHV0aW9uOiBWZWN0b3IyKSB7XG5cdFx0dGhpcy51bmlmb3Jtc1sncmVzb2x1dGlvbiddLnZhbHVlLmNvcHkocmVzb2x1dGlvbik7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { shaderMaterial } from '../shader-material/shader-material';
|
|
2
2
|
export const DiscardMaterial = shaderMaterial({}, 'void main() { }', 'void main() { gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); discard; }');
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY2FyZC1tYXRlcmlhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9zaGFkZXJzL3NyYy9kaXNjYXJkLW1hdGVyaWFsL2Rpc2NhcmQtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXBFLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxjQUFjLENBQzVDLEVBQUUsRUFDRixpQkFBaUIsRUFDakIsb0VBQW9FLENBQ3BFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaGFkZXJNYXRlcmlhbCB9IGZyb20gJy4uL3NoYWRlci1tYXRlcmlhbC9zaGFkZXItbWF0ZXJpYWwnO1xuXG5leHBvcnQgY29uc3QgRGlzY2FyZE1hdGVyaWFsID0gc2hhZGVyTWF0ZXJpYWwoXG5cdHt9LFxuXHQndm9pZCBtYWluKCkgeyB9Jyxcblx0J3ZvaWQgbWFpbigpIHsgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApOyBkaXNjYXJkOyAgfScsXG4pO1xuIl19
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { revision } from 'angular-three-soba/utils';
|
|
1
2
|
import * as THREE from 'three';
|
|
2
3
|
import { shaderMaterial } from '../shader-material/shader-material';
|
|
3
4
|
export const GridMaterial = shaderMaterial({
|
|
@@ -11,23 +12,37 @@ export const GridMaterial = shaderMaterial({
|
|
|
11
12
|
sectionColor: new THREE.Color(),
|
|
12
13
|
infiniteGrid: false,
|
|
13
14
|
followCamera: false,
|
|
15
|
+
worldCamProjPosition: new THREE.Vector3(),
|
|
16
|
+
worldPlanePosition: new THREE.Vector3(),
|
|
14
17
|
},
|
|
15
18
|
/* glsl */ `
|
|
16
|
-
varying vec3
|
|
19
|
+
varying vec3 localPosition;
|
|
20
|
+
varying vec4 worldPosition;
|
|
21
|
+
|
|
22
|
+
uniform vec3 worldCamProjPosition;
|
|
23
|
+
uniform vec3 worldPlanePosition;
|
|
17
24
|
uniform float fadeDistance;
|
|
18
25
|
uniform bool infiniteGrid;
|
|
19
26
|
uniform bool followCamera;
|
|
20
27
|
|
|
21
28
|
void main() {
|
|
22
|
-
|
|
23
|
-
if (infiniteGrid)
|
|
24
|
-
|
|
29
|
+
localPosition = position.xzy;
|
|
30
|
+
if (infiniteGrid) localPosition *= 1.0 + fadeDistance;
|
|
31
|
+
|
|
32
|
+
worldPosition = modelMatrix * vec4(localPosition, 1.0);
|
|
33
|
+
if (followCamera) {
|
|
34
|
+
worldPosition.xyz += (worldCamProjPosition - worldPlanePosition);
|
|
35
|
+
localPosition = (inverse(modelMatrix) * worldPosition).xyz;
|
|
36
|
+
}
|
|
25
37
|
|
|
26
|
-
gl_Position = projectionMatrix *
|
|
38
|
+
gl_Position = projectionMatrix * viewMatrix * worldPosition;
|
|
27
39
|
}
|
|
28
40
|
`,
|
|
29
41
|
/* glsl */ `
|
|
30
|
-
varying vec3
|
|
42
|
+
varying vec3 localPosition;
|
|
43
|
+
varying vec4 worldPosition;
|
|
44
|
+
|
|
45
|
+
uniform vec3 worldCamProjPosition;
|
|
31
46
|
uniform float cellSize;
|
|
32
47
|
uniform float sectionSize;
|
|
33
48
|
uniform vec3 cellColor;
|
|
@@ -38,25 +53,26 @@ export const GridMaterial = shaderMaterial({
|
|
|
38
53
|
uniform float sectionThickness;
|
|
39
54
|
|
|
40
55
|
float getGrid(float size, float thickness) {
|
|
41
|
-
vec2 r =
|
|
56
|
+
vec2 r = localPosition.xz / size;
|
|
42
57
|
vec2 grid = abs(fract(r - 0.5) - 0.5) / fwidth(r);
|
|
43
|
-
float line = min(grid.x, grid.y) + 1. - thickness;
|
|
44
|
-
return 1.0 - min(line, 1.);
|
|
58
|
+
float line = min(grid.x, grid.y) + 1.0 - thickness;
|
|
59
|
+
return 1.0 - min(line, 1.0);
|
|
45
60
|
}
|
|
46
61
|
|
|
47
62
|
void main() {
|
|
48
63
|
float g1 = getGrid(cellSize, cellThickness);
|
|
49
64
|
float g2 = getGrid(sectionSize, sectionThickness);
|
|
50
65
|
|
|
51
|
-
float
|
|
52
|
-
|
|
66
|
+
float dist = distance(worldCamProjPosition, worldPosition.xyz);
|
|
67
|
+
float d = 1.0 - min(dist / fadeDistance, 1.0);
|
|
68
|
+
vec3 color = mix(cellColor, sectionColor, min(1.0, sectionThickness * g2));
|
|
53
69
|
|
|
54
|
-
gl_FragColor = vec4(color, (g1 + g2) * pow(d,fadeStrength));
|
|
70
|
+
gl_FragColor = vec4(color, (g1 + g2) * pow(d, fadeStrength));
|
|
55
71
|
gl_FragColor.a = mix(0.75 * gl_FragColor.a, gl_FragColor.a, g2);
|
|
56
72
|
if (gl_FragColor.a <= 0.0) discard;
|
|
57
73
|
|
|
58
74
|
#include <tonemapping_fragment>
|
|
59
|
-
#include
|
|
75
|
+
#include <${revision >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
|
|
60
76
|
}
|
|
61
77
|
`);
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1tYXRlcmlhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9zaGFkZXJzL3NyYy9ncmlkLW1hdGVyaWFsL2dyaWQtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVwRSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUN6QztJQUNDLFFBQVEsRUFBRSxHQUFHO0lBQ2IsV0FBVyxFQUFFLENBQUM7SUFDZCxZQUFZLEVBQUUsR0FBRztJQUNqQixZQUFZLEVBQUUsQ0FBQztJQUNmLGFBQWEsRUFBRSxHQUFHO0lBQ2xCLGdCQUFnQixFQUFFLENBQUM7SUFDbkIsU0FBUyxFQUFFLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRTtJQUM1QixZQUFZLEVBQUUsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO0lBQy9CLFlBQVksRUFBRSxLQUFLO0lBQ25CLFlBQVksRUFBRSxLQUFLO0lBQ25CLG9CQUFvQixFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtJQUN6QyxrQkFBa0IsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7Q0FDdkM7QUFDRCxVQUFVLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQlQ7QUFDRixVQUFVLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0JBa0NNLFFBQVEsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxvQkFBb0I7O0dBRTdFLENBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTmd0U2hhZGVyTWF0ZXJpYWwgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IHJldmlzaW9uIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL3V0aWxzJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IHNoYWRlck1hdGVyaWFsIH0gZnJvbSAnLi4vc2hhZGVyLW1hdGVyaWFsL3NoYWRlci1tYXRlcmlhbCc7XG5cbmV4cG9ydCBjb25zdCBHcmlkTWF0ZXJpYWwgPSBzaGFkZXJNYXRlcmlhbChcblx0e1xuXHRcdGNlbGxTaXplOiAwLjUsXG5cdFx0c2VjdGlvblNpemU6IDEsXG5cdFx0ZmFkZURpc3RhbmNlOiAxMDAsXG5cdFx0ZmFkZVN0cmVuZ3RoOiAxLFxuXHRcdGNlbGxUaGlja25lc3M6IDAuNSxcblx0XHRzZWN0aW9uVGhpY2tuZXNzOiAxLFxuXHRcdGNlbGxDb2xvcjogbmV3IFRIUkVFLkNvbG9yKCksXG5cdFx0c2VjdGlvbkNvbG9yOiBuZXcgVEhSRUUuQ29sb3IoKSxcblx0XHRpbmZpbml0ZUdyaWQ6IGZhbHNlLFxuXHRcdGZvbGxvd0NhbWVyYTogZmFsc2UsXG5cdFx0d29ybGRDYW1Qcm9qUG9zaXRpb246IG5ldyBUSFJFRS5WZWN0b3IzKCksXG5cdFx0d29ybGRQbGFuZVBvc2l0aW9uOiBuZXcgVEhSRUUuVmVjdG9yMygpLFxuXHR9LFxuXHQvKiBnbHNsICovIGBcbiAgICB2YXJ5aW5nIHZlYzMgbG9jYWxQb3NpdGlvbjtcbiAgICB2YXJ5aW5nIHZlYzQgd29ybGRQb3NpdGlvbjtcblxuICAgIHVuaWZvcm0gdmVjMyB3b3JsZENhbVByb2pQb3NpdGlvbjtcbiAgICB1bmlmb3JtIHZlYzMgd29ybGRQbGFuZVBvc2l0aW9uO1xuICAgIHVuaWZvcm0gZmxvYXQgZmFkZURpc3RhbmNlO1xuICAgIHVuaWZvcm0gYm9vbCBpbmZpbml0ZUdyaWQ7XG4gICAgdW5pZm9ybSBib29sIGZvbGxvd0NhbWVyYTtcblxuICAgIHZvaWQgbWFpbigpIHtcbiAgICAgIGxvY2FsUG9zaXRpb24gPSBwb3NpdGlvbi54enk7XG4gICAgICBpZiAoaW5maW5pdGVHcmlkKSBsb2NhbFBvc2l0aW9uICo9IDEuMCArIGZhZGVEaXN0YW5jZTtcblxuICAgICAgd29ybGRQb3NpdGlvbiA9IG1vZGVsTWF0cml4ICogdmVjNChsb2NhbFBvc2l0aW9uLCAxLjApO1xuICAgICAgaWYgKGZvbGxvd0NhbWVyYSkge1xuICAgICAgICB3b3JsZFBvc2l0aW9uLnh5eiArPSAod29ybGRDYW1Qcm9qUG9zaXRpb24gLSB3b3JsZFBsYW5lUG9zaXRpb24pO1xuICAgICAgICBsb2NhbFBvc2l0aW9uID0gKGludmVyc2UobW9kZWxNYXRyaXgpICogd29ybGRQb3NpdGlvbikueHl6O1xuICAgICAgfVxuXG4gICAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiB2aWV3TWF0cml4ICogd29ybGRQb3NpdGlvbjtcbiAgICB9XG4gIGAsXG5cdC8qIGdsc2wgKi8gYFxuICAgIHZhcnlpbmcgdmVjMyBsb2NhbFBvc2l0aW9uO1xuICAgIHZhcnlpbmcgdmVjNCB3b3JsZFBvc2l0aW9uO1xuXG4gICAgdW5pZm9ybSB2ZWMzIHdvcmxkQ2FtUHJvalBvc2l0aW9uO1xuICAgIHVuaWZvcm0gZmxvYXQgY2VsbFNpemU7XG4gICAgdW5pZm9ybSBmbG9hdCBzZWN0aW9uU2l6ZTtcbiAgICB1bmlmb3JtIHZlYzMgY2VsbENvbG9yO1xuICAgIHVuaWZvcm0gdmVjMyBzZWN0aW9uQ29sb3I7XG4gICAgdW5pZm9ybSBmbG9hdCBmYWRlRGlzdGFuY2U7XG4gICAgdW5pZm9ybSBmbG9hdCBmYWRlU3RyZW5ndGg7XG4gICAgdW5pZm9ybSBmbG9hdCBjZWxsVGhpY2tuZXNzO1xuICAgIHVuaWZvcm0gZmxvYXQgc2VjdGlvblRoaWNrbmVzcztcblxuICAgIGZsb2F0IGdldEdyaWQoZmxvYXQgc2l6ZSwgZmxvYXQgdGhpY2tuZXNzKSB7XG4gICAgICB2ZWMyIHIgPSBsb2NhbFBvc2l0aW9uLnh6IC8gc2l6ZTtcbiAgICAgIHZlYzIgZ3JpZCA9IGFicyhmcmFjdChyIC0gMC41KSAtIDAuNSkgLyBmd2lkdGgocik7XG4gICAgICBmbG9hdCBsaW5lID0gbWluKGdyaWQueCwgZ3JpZC55KSArIDEuMCAtIHRoaWNrbmVzcztcbiAgICAgIHJldHVybiAxLjAgLSBtaW4obGluZSwgMS4wKTtcbiAgICB9XG5cbiAgICB2b2lkIG1haW4oKSB7XG4gICAgICBmbG9hdCBnMSA9IGdldEdyaWQoY2VsbFNpemUsIGNlbGxUaGlja25lc3MpO1xuICAgICAgZmxvYXQgZzIgPSBnZXRHcmlkKHNlY3Rpb25TaXplLCBzZWN0aW9uVGhpY2tuZXNzKTtcblxuICAgICAgZmxvYXQgZGlzdCA9IGRpc3RhbmNlKHdvcmxkQ2FtUHJvalBvc2l0aW9uLCB3b3JsZFBvc2l0aW9uLnh5eik7XG4gICAgICBmbG9hdCBkID0gMS4wIC0gbWluKGRpc3QgLyBmYWRlRGlzdGFuY2UsIDEuMCk7XG4gICAgICB2ZWMzIGNvbG9yID0gbWl4KGNlbGxDb2xvciwgc2VjdGlvbkNvbG9yLCBtaW4oMS4wLCBzZWN0aW9uVGhpY2tuZXNzICogZzIpKTtcblxuICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChjb2xvciwgKGcxICsgZzIpICogcG93KGQsIGZhZGVTdHJlbmd0aCkpO1xuICAgICAgZ2xfRnJhZ0NvbG9yLmEgPSBtaXgoMC43NSAqIGdsX0ZyYWdDb2xvci5hLCBnbF9GcmFnQ29sb3IuYSwgZzIpO1xuICAgICAgaWYgKGdsX0ZyYWdDb2xvci5hIDw9IDAuMCkgZGlzY2FyZDtcblxuICAgICAgI2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuICAgICAgI2luY2x1ZGUgPCR7cmV2aXNpb24gPj0gMTU0ID8gJ2NvbG9yc3BhY2VfZnJhZ21lbnQnIDogJ2VuY29kaW5nc19mcmFnbWVudCd9PlxuICAgIH1cbiAgYCxcbik7XG5cbmV4cG9ydCB0eXBlIE5ndEdyaWRNYXRlcmlhbFN0YXRlID0ge1xuXHQvKiogQ2VsbCBzaXplLCBkZWZhdWx0OiAwLjUgKi9cblx0Y2VsbFNpemU/OiBudW1iZXI7XG5cdC8qKiBDZWxsIHRoaWNrbmVzcywgZGVmYXVsdDogMC41ICovXG5cdGNlbGxUaGlja25lc3M/OiBudW1iZXI7XG5cdC8qKiBDZWxsIGNvbG9yLCBkZWZhdWx0OiBibGFjayAqL1xuXHRjZWxsQ29sb3I/OiBUSFJFRS5Db2xvclJlcHJlc2VudGF0aW9uO1xuXHQvKiogU2VjdGlvbiBzaXplLCBkZWZhdWx0OiAxICovXG5cdHNlY3Rpb25TaXplPzogbnVtYmVyO1xuXHQvKiogU2VjdGlvbiB0aGlja25lc3MsIGRlZmF1bHQ6IDEgKi9cblx0c2VjdGlvblRoaWNrbmVzcz86IG51bWJlcjtcblx0LyoqIFNlY3Rpb24gY29sb3IsIGRlZmF1bHQ6ICMyMDgwZmYgKi9cblx0c2VjdGlvbkNvbG9yPzogVEhSRUUuQ29sb3JSZXByZXNlbnRhdGlvbjtcblx0LyoqIEZvbGxvdyBjYW1lcmEsIGRlZmF1bHQ6IGZhbHNlICovXG5cdGZvbGxvd0NhbWVyYT86IGJvb2xlYW47XG5cdC8qKiBEaXNwbGF5IHRoZSBncmlkIGluZmluaXRlbHksIGRlZmF1bHQ6IGZhbHNlICovXG5cdGluZmluaXRlR3JpZD86IGJvb2xlYW47XG5cdC8qKiBGYWRlIGRpc3RhbmNlLCBkZWZhdWx0OiAxMDAgKi9cblx0ZmFkZURpc3RhbmNlPzogbnVtYmVyO1xuXHQvKiogRmFkZSBzdHJlbmd0aCwgZGVmYXVsdDogMSAqL1xuXHRmYWRlU3RyZW5ndGg/OiBudW1iZXI7XG5cdC8qKiBNYXRlcmlhbCBzaWRlLCBkZWZhdWx0OiBUSFJFRS5CYWNrU2lkZSAqL1xuXHRzaWRlPzogVEhSRUUuU2lkZTtcbn07XG5cbmRlY2xhcmUgZ2xvYmFsIHtcblx0aW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG5cdFx0LyoqXG5cdFx0ICogQGV4dGVuZHMgbmd0LXNoYWRlci1tYXRlcmlhbFxuXHRcdCAqL1xuXHRcdCduZ3QtZ3JpZC1tYXRlcmlhbCc6IE5ndEdyaWRNYXRlcmlhbFN0YXRlICYgTmd0U2hhZGVyTWF0ZXJpYWw7XG5cdH1cbn1cbiJdfQ==
|