angular-three-soba 1.14.0 → 2.0.0-beta.2
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/README.md +2 -2
- package/abstractions/{lib/billboard → billboard}/billboard.d.ts +14 -4
- package/abstractions/catmull-rom-line/catmull-rom-line.d.ts +25 -0
- package/abstractions/cubic-bezier-line/cubic-bezier-line.d.ts +25 -0
- package/abstractions/{lib/edges → edges}/edges.d.ts +11 -7
- package/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-helper.d.ts +16 -23
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +22 -0
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +30 -0
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +32 -0
- package/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-viewcube/gizmo-viewcube.d.ts +2 -3
- package/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-viewport/gizmo-viewport-axis.d.ts +28 -9
- package/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-viewport/gizmo-viewport.d.ts +23 -4
- package/abstractions/index.d.ts +11 -11
- package/abstractions/line/line-input.d.ts +42 -0
- package/abstractions/line/line.d.ts +35 -0
- package/abstractions/{lib/quadratic-bezier-line → quadratic-bezier-line}/quadratic-bezier-line.d.ts +12 -8
- package/abstractions/text/text.d.ts +77 -0
- package/abstractions/text-3d/text-3d.d.ts +74 -0
- package/cameras/{lib/camera → camera}/camera-content.d.ts +1 -1
- package/cameras/{lib/camera → camera}/camera.d.ts +12 -8
- package/cameras/cube-camera/cube-camera.d.ts +42 -0
- package/cameras/index.d.ts +5 -4
- package/cameras/{lib/orthographic-camera → orthographic-camera}/orthographic-camera.d.ts +14 -5
- package/controls/index.d.ts +1 -1
- package/controls/{lib/orbit-controls → orbit-controls}/orbit-controls.d.ts +19 -11
- package/esm2022/abstractions/angular-three-soba-abstractions.mjs +1 -1
- package/esm2022/abstractions/billboard/billboard.mjs +71 -0
- package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +131 -0
- package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +113 -0
- package/esm2022/abstractions/edges/edges.mjs +93 -0
- package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +210 -0
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/constants.mjs +31 -0
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +95 -0
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +155 -0
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +62 -0
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +80 -0
- package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +206 -0
- package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +273 -0
- package/esm2022/abstractions/index.mjs +12 -12
- package/esm2022/abstractions/line/line-input.mjs +113 -0
- package/esm2022/abstractions/line/line.mjs +165 -0
- package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +128 -0
- package/esm2022/abstractions/text/text.mjs +275 -0
- package/esm2022/abstractions/text-3d/text-3d.mjs +167 -0
- package/esm2022/angular-three-soba.mjs +1 -1
- package/esm2022/cameras/angular-three-soba-cameras.mjs +1 -1
- package/esm2022/cameras/camera/camera-content.mjs +21 -0
- package/esm2022/cameras/camera/camera.mjs +71 -0
- package/esm2022/cameras/cube-camera/cube-camera.mjs +131 -0
- package/esm2022/cameras/index.mjs +6 -5
- package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +99 -0
- package/esm2022/cameras/perspective-camera/perspective-camera.mjs +47 -0
- package/esm2022/controls/angular-three-soba-controls.mjs +1 -1
- package/esm2022/controls/index.mjs +2 -2
- package/esm2022/controls/orbit-controls/orbit-controls.mjs +165 -0
- package/esm2022/index.mjs +1 -1
- package/esm2022/loaders/angular-three-soba-loaders.mjs +1 -1
- package/esm2022/loaders/gltf-loader/gltf-loader.mjs +33 -0
- package/esm2022/loaders/index.mjs +5 -6
- package/esm2022/loaders/loader/loader.mjs +133 -0
- package/esm2022/loaders/progress/progress.mjs +52 -0
- package/esm2022/loaders/texture-loader/texture-loader.mjs +28 -0
- package/esm2022/materials/angular-three-soba-materials.mjs +1 -1
- package/esm2022/materials/index.mjs +6 -6
- package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +73 -0
- package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +383 -0
- package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +168 -0
- package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +257 -0
- package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +66 -0
- package/esm2022/misc/angular-three-soba-misc.mjs +1 -1
- package/esm2022/misc/animations/animations.mjs +55 -0
- package/esm2022/misc/bake-shadows/bake-shadows.mjs +24 -0
- package/esm2022/misc/depth-buffer/depth-buffer.mjs +46 -0
- package/esm2022/misc/fbo/fbo.mjs +47 -0
- package/esm2022/misc/index.mjs +5 -5
- package/esm2022/performance/adaptive/adaptive-dpr.mjs +46 -0
- package/esm2022/performance/adaptive/adaptive-events.mjs +31 -0
- package/esm2022/performance/angular-three-soba-performance.mjs +1 -1
- package/esm2022/performance/detailed/detailed.mjs +61 -0
- package/esm2022/performance/index.mjs +7 -5
- package/esm2022/performance/instances/instance.mjs +48 -0
- package/esm2022/performance/instances/instances.mjs +189 -0
- package/esm2022/performance/instances/position-mesh.mjs +52 -0
- package/esm2022/performance/stats/stats.mjs +79 -0
- package/esm2022/shaders/angular-three-soba-shaders.mjs +1 -1
- package/esm2022/shaders/blur-pass/blur-pass.mjs +61 -0
- package/esm2022/shaders/caustics-material/caustics-material.mjs +128 -0
- package/esm2022/shaders/caustics-material/caustics-projection-material.mjs +33 -0
- package/esm2022/shaders/convolution-material/convolution-material.mjs +94 -0
- package/esm2022/shaders/discard-material/discard-material.mjs +3 -0
- package/esm2022/shaders/index.mjs +15 -15
- package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +55 -0
- package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +223 -0
- package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +170 -0
- package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +268 -0
- package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +37 -0
- package/esm2022/shaders/shader-material/shader-material.mjs +34 -0
- package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +33 -0
- package/esm2022/shaders/sparkles-material/sparkles-material.mjs +47 -0
- package/esm2022/shaders/spot-light-material/spot-light-material.mjs +86 -0
- package/esm2022/shaders/star-field-material/star-field-material.mjs +32 -0
- package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +283 -0
- package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +108 -0
- package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +208 -0
- package/esm2022/staging/angular-three-soba-staging.mjs +1 -1
- package/esm2022/staging/bounds/bounds.mjs +307 -0
- package/esm2022/staging/camera-shake/camera-shake.mjs +117 -0
- package/esm2022/staging/caustics/caustisc.mjs +384 -0
- package/esm2022/staging/center/center.mjs +148 -0
- package/esm2022/staging/cloud/cloud.mjs +164 -0
- package/esm2022/staging/contact-shadows/contact-shadows.mjs +249 -0
- package/esm2022/staging/environment/assets.mjs +13 -0
- package/esm2022/staging/environment/environment-cube.mjs +49 -0
- package/esm2022/staging/environment/environment-ground.mjs +43 -0
- package/esm2022/staging/environment/environment-input.mjs +106 -0
- package/esm2022/staging/environment/environment-map.mjs +53 -0
- package/esm2022/staging/environment/environment-portal.mjs +135 -0
- package/esm2022/staging/environment/environment.mjs +78 -0
- package/esm2022/staging/environment/utils.mjs +84 -0
- package/esm2022/staging/float/float.mjs +82 -0
- package/esm2022/staging/index.mjs +18 -18
- package/esm2022/staging/sky/sky.mjs +114 -0
- package/esm2022/staging/sparkles/sparkles.mjs +161 -0
- package/esm2022/staging/spot-light/spot-light-input.mjs +75 -0
- package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +57 -0
- package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +256 -0
- package/esm2022/staging/spot-light/spot-light.mjs +94 -0
- package/esm2022/staging/spot-light/volumetric-mesh.mjs +101 -0
- package/esm2022/staging/stage/stage.mjs +374 -0
- package/esm2022/staging/stars/stars.mjs +148 -0
- package/fesm2022/angular-three-soba-abstractions.mjs +1116 -890
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +126 -122
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +72 -54
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +147 -131
- package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-materials.mjs +340 -258
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +140 -123
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-performance.mjs +383 -106
- package/fesm2022/angular-three-soba-performance.mjs.map +1 -1
- package/fesm2022/angular-three-soba-shaders.mjs +57 -9
- package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +1609 -1561
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2022/angular-three-soba.mjs.map +1 -1
- package/loaders/gltf-loader/gltf-loader.d.ts +9 -0
- package/loaders/index.d.ts +4 -5
- package/loaders/{lib/loader → loader}/loader.d.ts +20 -15
- package/loaders/progress/progress.d.ts +9 -0
- package/loaders/texture-loader/texture-loader.d.ts +7 -0
- package/materials/index.d.ts +5 -5
- package/materials/{lib/mesh-distort-material → mesh-distort-material}/mesh-distort-material.d.ts +11 -5
- package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +81 -0
- package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +50 -0
- package/materials/{lib/mesh-transmission-material → mesh-transmission-material}/mesh-transmission-material.d.ts +51 -6
- package/materials/{lib/mesh-wobble-material → mesh-wobble-material}/mesh-wobble-material.d.ts +9 -3
- package/misc/animations/animations.d.ts +13 -0
- package/misc/{lib/bake-shadows → bake-shadows}/bake-shadows.d.ts +2 -5
- package/misc/depth-buffer/depth-buffer.d.ts +9 -0
- package/misc/{lib/fbo → fbo}/fbo.d.ts +4 -2
- package/misc/index.d.ts +4 -4
- package/package.json +19 -17
- package/performance/{lib/adaptive → adaptive}/adaptive-dpr.d.ts +4 -7
- package/performance/{lib/adaptive → adaptive}/adaptive-events.d.ts +2 -6
- package/performance/detailed/detailed.d.ts +20 -0
- package/performance/index.d.ts +6 -4
- package/performance/instances/instance.d.ts +9 -0
- package/performance/instances/instances.d.ts +35 -0
- package/performance/instances/position-mesh.d.ts +10 -0
- package/performance/{lib/stats → stats}/stats.d.ts +10 -7
- package/plugin/package.json +1 -1
- package/plugin/src/generators/init/compat.js.map +1 -1
- package/plugin/src/generators/init/init.d.ts +1 -1
- package/plugin/src/generators/init/init.js +1 -1
- package/plugin/src/generators/init/init.js.map +1 -1
- package/plugin/src/index.js.map +1 -1
- package/shaders/{lib/blur-pass → blur-pass}/blur-pass.d.ts +2 -2
- package/shaders/index.d.ts +14 -14
- package/shaders/{lib/mesh-distort-material → mesh-distort-material}/mesh-distort-material.d.ts +1 -1
- package/shaders/{lib/mesh-wobble-material → mesh-wobble-material}/mesh-wobble-material.d.ts +1 -0
- package/shaders/{lib/soft-shadow-material → soft-shadow-material}/soft-shadow-material.d.ts +2 -2
- package/shaders/sparkles-material/sparkles-material.d.ts +3 -0
- package/staging/{lib/accumulative-shadows → accumulative-shadows}/accumulative-shadows.d.ts +55 -17
- package/staging/{lib/accumulative-shadows → accumulative-shadows}/progressive-light-map.d.ts +2 -2
- package/staging/{lib/accumulative-shadows → accumulative-shadows}/randomized-lights.d.ts +45 -10
- package/staging/{lib/bounds → bounds}/bounds.d.ts +32 -22
- package/staging/{lib/camera-shake → camera-shake}/camera-shake.d.ts +15 -11
- package/staging/{lib/caustics/caustics.d.ts → caustics/caustisc.d.ts} +36 -13
- package/staging/{lib/center → center}/center.d.ts +30 -8
- package/staging/cloud/cloud.d.ts +48 -0
- package/staging/{lib/contact-shadows → contact-shadows}/contact-shadows.d.ts +38 -10
- package/staging/environment/environment-cube.d.ts +11 -0
- package/staging/environment/environment-ground.d.ts +13 -0
- package/staging/environment/environment-input.d.ts +68 -0
- package/staging/environment/environment-map.d.ts +11 -0
- package/staging/{lib/environment → environment}/environment-portal.d.ts +5 -7
- package/staging/{lib/environment → environment}/environment.d.ts +2 -2
- package/staging/environment/utils.d.ts +7 -0
- package/staging/float/float.d.ts +27 -0
- package/staging/index.d.ts +17 -17
- package/staging/{lib/sky → sky}/sky.d.ts +26 -5
- package/staging/{lib/sparkles → sparkles}/sparkles.d.ts +30 -10
- package/staging/{lib/spot-light → spot-light}/spot-light-input.d.ts +24 -2
- package/staging/{lib/spot-light/shadow-mesh-input.d.ts → spot-light/spot-light-shadow-mesh-input.d.ts} +18 -3
- package/staging/spot-light/spot-light-shadow-mesh.d.ts +38 -0
- package/staging/{lib/spot-light → spot-light}/spot-light.d.ts +11 -5
- package/staging/{lib/spot-light → spot-light}/volumetric-mesh.d.ts +8 -5
- package/staging/{lib/stage → stage}/stage.d.ts +33 -14
- package/staging/{lib/stars → stars}/stars.d.ts +21 -7
- package/abstractions/lib/catmull-rom-line/catmull-rom-line.d.ts +0 -15
- package/abstractions/lib/cubic-bezier-line/cubic-bezier-line.d.ts +0 -15
- package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -16
- package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -24
- package/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +0 -14
- package/abstractions/lib/line/line-input.d.ts +0 -19
- package/abstractions/lib/line/line.d.ts +0 -21
- package/abstractions/lib/text/text.d.ts +0 -21
- package/abstractions/lib/text-3d/text-3d.d.ts +0 -39
- package/assets/default-spot-light-shadow.glsl +0 -10
- package/cameras/lib/cube-camera/cube-camera.d.ts +0 -27
- package/esm2022/abstractions/lib/billboard/billboard.mjs +0 -74
- package/esm2022/abstractions/lib/catmull-rom-line/catmull-rom-line.mjs +0 -120
- package/esm2022/abstractions/lib/cubic-bezier-line/cubic-bezier-line.mjs +0 -99
- package/esm2022/abstractions/lib/edges/edges.mjs +0 -96
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-helper.mjs +0 -213
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -92
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -184
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -46
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -134
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -195
- package/esm2022/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -267
- package/esm2022/abstractions/lib/line/line-input.mjs +0 -76
- package/esm2022/abstractions/lib/line/line.mjs +0 -133
- package/esm2022/abstractions/lib/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -128
- package/esm2022/abstractions/lib/text/text.mjs +0 -115
- package/esm2022/abstractions/lib/text-3d/text-3d.mjs +0 -145
- package/esm2022/cameras/lib/camera/camera-content.mjs +0 -21
- package/esm2022/cameras/lib/camera/camera.mjs +0 -75
- package/esm2022/cameras/lib/cube-camera/cube-camera.mjs +0 -131
- package/esm2022/cameras/lib/orthographic-camera/orthographic-camera.mjs +0 -93
- package/esm2022/cameras/lib/perspective-camera/perspective-camera.mjs +0 -47
- package/esm2022/controls/lib/orbit-controls/orbit-controls.mjs +0 -147
- package/esm2022/loaders/lib/cube-texture-loader/cube-texture-loader.mjs +0 -10
- package/esm2022/loaders/lib/gltf-loader/gltf-loader.mjs +0 -32
- package/esm2022/loaders/lib/loader/loader.mjs +0 -134
- package/esm2022/loaders/lib/progress/progress.mjs +0 -39
- package/esm2022/loaders/lib/texture-loader/texture-loader.mjs +0 -19
- package/esm2022/materials/lib/mesh-distort-material/mesh-distort-material.mjs +0 -75
- package/esm2022/materials/lib/mesh-reflector-material/mesh-reflector-material.mjs +0 -328
- package/esm2022/materials/lib/mesh-refraction-material/mesh-refraction-material.mjs +0 -158
- package/esm2022/materials/lib/mesh-transmission-material/mesh-transmission-material.mjs +0 -238
- package/esm2022/materials/lib/mesh-wobble-material/mesh-wobble-material.mjs +0 -68
- package/esm2022/misc/lib/animations/animations.mjs +0 -52
- package/esm2022/misc/lib/bake-shadows/bake-shadows.mjs +0 -26
- package/esm2022/misc/lib/depth-buffer/depth-buffer.mjs +0 -39
- package/esm2022/misc/lib/fbo/fbo.mjs +0 -39
- package/esm2022/performance/lib/adaptive/adaptive-dpr.mjs +0 -47
- package/esm2022/performance/lib/adaptive/adaptive-events.mjs +0 -37
- package/esm2022/performance/lib/detailed/detailed.mjs +0 -54
- package/esm2022/performance/lib/stats/stats.mjs +0 -80
- package/esm2022/shaders/lib/blur-pass/blur-pass.mjs +0 -61
- package/esm2022/shaders/lib/caustics-material/caustics-material.mjs +0 -128
- package/esm2022/shaders/lib/caustics-projection-material/caustics-projection-material.mjs +0 -33
- package/esm2022/shaders/lib/convolution-material/convolution-material.mjs +0 -94
- package/esm2022/shaders/lib/discard-material/discard-material.mjs +0 -3
- package/esm2022/shaders/lib/mesh-distort-material/mesh-distort-material.mjs +0 -55
- package/esm2022/shaders/lib/mesh-reflector-material/mesh-reflector-material.mjs +0 -223
- package/esm2022/shaders/lib/mesh-refraction-material/mesh-refraction-material.mjs +0 -169
- package/esm2022/shaders/lib/mesh-transmission-material/mesh-transmission-material.mjs +0 -268
- package/esm2022/shaders/lib/mesh-wobble-material/mesh-wobble-material.mjs +0 -37
- package/esm2022/shaders/lib/shader-material/shader-material.mjs +0 -34
- package/esm2022/shaders/lib/soft-shadow-material/soft-shadow-material.mjs +0 -33
- package/esm2022/shaders/lib/spot-light-material/spot-light-material.mjs +0 -86
- package/esm2022/shaders/lib/star-field-material/star-field-material.mjs +0 -32
- package/esm2022/staging/lib/accumulative-shadows/accumulative-shadows.mjs +0 -249
- package/esm2022/staging/lib/accumulative-shadows/progressive-light-map.mjs +0 -108
- package/esm2022/staging/lib/accumulative-shadows/randomized-lights.mjs +0 -201
- package/esm2022/staging/lib/bounds/bounds.mjs +0 -284
- package/esm2022/staging/lib/camera-shake/camera-shake.mjs +0 -122
- package/esm2022/staging/lib/caustics/caustics.mjs +0 -364
- package/esm2022/staging/lib/center/center.mjs +0 -143
- package/esm2022/staging/lib/cloud/cloud.mjs +0 -160
- package/esm2022/staging/lib/contact-shadows/contact-shadows.mjs +0 -228
- package/esm2022/staging/lib/environment/assets.mjs +0 -13
- package/esm2022/staging/lib/environment/environment-cube.mjs +0 -41
- package/esm2022/staging/lib/environment/environment-ground.mjs +0 -67
- package/esm2022/staging/lib/environment/environment-inputs.mjs +0 -87
- package/esm2022/staging/lib/environment/environment-map.mjs +0 -39
- package/esm2022/staging/lib/environment/environment-portal.mjs +0 -111
- package/esm2022/staging/lib/environment/environment.mjs +0 -165
- package/esm2022/staging/lib/environment/utils.mjs +0 -70
- package/esm2022/staging/lib/float/float.mjs +0 -77
- package/esm2022/staging/lib/sky/sky.mjs +0 -109
- package/esm2022/staging/lib/sparkles/sparkles.mjs +0 -210
- package/esm2022/staging/lib/spot-light/common.mjs +0 -42
- package/esm2022/staging/lib/spot-light/shadow-mesh-input.mjs +0 -51
- package/esm2022/staging/lib/spot-light/spot-light-input.mjs +0 -62
- package/esm2022/staging/lib/spot-light/spot-light-shadow-no-shader.mjs +0 -74
- package/esm2022/staging/lib/spot-light/spot-light-shadow-shader.mjs +0 -126
- package/esm2022/staging/lib/spot-light/spot-light-shadow.mjs +0 -63
- package/esm2022/staging/lib/spot-light/spot-light.mjs +0 -117
- package/esm2022/staging/lib/spot-light/volumetric-mesh.mjs +0 -86
- package/esm2022/staging/lib/stage/stage.mjs +0 -368
- package/esm2022/staging/lib/stars/stars.mjs +0 -140
- package/loaders/lib/cube-texture-loader/cube-texture-loader.d.ts +0 -3
- package/loaders/lib/gltf-loader/gltf-loader.d.ts +0 -8
- package/loaders/lib/progress/progress.d.ts +0 -16
- package/loaders/lib/texture-loader/texture-loader.d.ts +0 -5
- package/materials/lib/mesh-reflector-material/mesh-reflector-material.d.ts +0 -41
- package/materials/lib/mesh-refraction-material/mesh-refraction-material.d.ts +0 -28
- package/misc/lib/animations/animations.d.ts +0 -13
- package/misc/lib/depth-buffer/depth-buffer.d.ts +0 -7
- package/performance/lib/detailed/detailed.d.ts +0 -13
- package/staging/lib/cloud/cloud.d.ts +0 -23
- package/staging/lib/environment/environment-cube.d.ts +0 -11
- package/staging/lib/environment/environment-ground.d.ts +0 -9
- package/staging/lib/environment/environment-inputs.d.ts +0 -28
- package/staging/lib/environment/environment-map.d.ts +0 -10
- package/staging/lib/environment/utils.d.ts +0 -8
- package/staging/lib/float/float.d.ts +0 -16
- package/staging/lib/spot-light/common.d.ts +0 -3
- package/staging/lib/spot-light/spot-light-shadow-no-shader.d.ts +0 -14
- package/staging/lib/spot-light/spot-light-shadow-shader.d.ts +0 -25
- package/staging/lib/spot-light/spot-light-shadow.d.ts +0 -6
- /package/abstractions/{lib/gizmo-helper → gizmo-helper}/gizmo-viewcube/constants.d.ts +0 -0
- /package/cameras/{lib/perspective-camera → perspective-camera}/perspective-camera.d.ts +0 -0
- /package/plugin/{README.md → libs/plugin/README.md} +0 -0
- /package/shaders/{lib/caustics-material → caustics-material}/caustics-material.d.ts +0 -0
- /package/shaders/{lib/caustics-projection-material → caustics-material}/caustics-projection-material.d.ts +0 -0
- /package/shaders/{lib/convolution-material → convolution-material}/convolution-material.d.ts +0 -0
- /package/shaders/{lib/discard-material → discard-material}/discard-material.d.ts +0 -0
- /package/shaders/{lib/mesh-reflector-material → mesh-reflector-material}/mesh-reflector-material.d.ts +0 -0
- /package/shaders/{lib/mesh-refraction-material → mesh-refraction-material}/mesh-refraction-material.d.ts +0 -0
- /package/shaders/{lib/mesh-transmission-material → mesh-transmission-material}/mesh-transmission-material.d.ts +0 -0
- /package/shaders/{lib/shader-material → shader-material}/shader-material.d.ts +0 -0
- /package/shaders/{lib/spot-light-material → spot-light-material}/spot-light-material.d.ts +0 -0
- /package/shaders/{lib/star-field-material → star-field-material}/star-field-material.d.ts +0 -0
- /package/staging/{lib/environment → environment}/assets.d.ts +0 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import { shaderMaterial } from '../shader-material/shader-material';
|
|
3
|
+
export const CausticsProjectionMaterial = shaderMaterial({
|
|
4
|
+
causticsTexture: null,
|
|
5
|
+
causticsTextureB: null,
|
|
6
|
+
color: new THREE.Color(),
|
|
7
|
+
lightProjMatrix: new THREE.Matrix4(),
|
|
8
|
+
lightViewMatrix: new THREE.Matrix4(),
|
|
9
|
+
},
|
|
10
|
+
/* glsl */ `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
|
+
}`,
|
|
16
|
+
/* glsl */ `varying vec3 vWorldPosition;
|
|
17
|
+
uniform vec3 color;
|
|
18
|
+
uniform sampler2D causticsTexture;
|
|
19
|
+
uniform sampler2D causticsTextureB;
|
|
20
|
+
uniform mat4 lightProjMatrix;
|
|
21
|
+
uniform mat4 lightViewMatrix;
|
|
22
|
+
void main() {
|
|
23
|
+
// Apply caustics
|
|
24
|
+
vec4 lightSpacePos = lightProjMatrix * lightViewMatrix * vec4(vWorldPosition, 1.0);
|
|
25
|
+
lightSpacePos.xyz /= lightSpacePos.w;
|
|
26
|
+
lightSpacePos.xyz = lightSpacePos.xyz * 0.5 + 0.5;
|
|
27
|
+
vec3 front = texture2D(causticsTexture, lightSpacePos.xy).rgb;
|
|
28
|
+
vec3 back = texture2D(causticsTextureB, lightSpacePos.xy).rgb;
|
|
29
|
+
gl_FragColor = vec4((front + back) * color, 1.0);
|
|
30
|
+
#include <tonemapping_fragment>
|
|
31
|
+
#include <encodings_fragment>
|
|
32
|
+
}`);
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F1c3RpY3MtcHJvamVjdGlvbi1tYXRlcmlhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9zaGFkZXJzL3NyYy9jYXVzdGljcy1tYXRlcmlhbC9jYXVzdGljcy1wcm9qZWN0aW9uLW1hdGVyaWFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVwRSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxjQUFjLENBQ3BEO0lBQ0ksZUFBZSxFQUFFLElBQUk7SUFDckIsZ0JBQWdCLEVBQUUsSUFBSTtJQUN0QixLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO0lBQ3hCLGVBQWUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7SUFDcEMsZUFBZSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtDQUN2QztBQUNELFVBQVUsQ0FBQzs7Ozs7RUFLYjtBQUNFLFVBQVUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztFQWdCYixDQUNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBzaGFkZXJNYXRlcmlhbCB9IGZyb20gJy4uL3NoYWRlci1tYXRlcmlhbC9zaGFkZXItbWF0ZXJpYWwnO1xuXG5leHBvcnQgY29uc3QgQ2F1c3RpY3NQcm9qZWN0aW9uTWF0ZXJpYWwgPSBzaGFkZXJNYXRlcmlhbChcbiAgICB7XG4gICAgICAgIGNhdXN0aWNzVGV4dHVyZTogbnVsbCxcbiAgICAgICAgY2F1c3RpY3NUZXh0dXJlQjogbnVsbCxcbiAgICAgICAgY29sb3I6IG5ldyBUSFJFRS5Db2xvcigpLFxuICAgICAgICBsaWdodFByb2pNYXRyaXg6IG5ldyBUSFJFRS5NYXRyaXg0KCksXG4gICAgICAgIGxpZ2h0Vmlld01hdHJpeDogbmV3IFRIUkVFLk1hdHJpeDQoKSxcbiAgICB9LFxuICAgIC8qIGdsc2wgKi8gYHZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbnZvaWQgbWFpbigpIHtcbiAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogdmlld01hdHJpeCAqIG1vZGVsTWF0cml4ICogdmVjNChwb3NpdGlvbiwgMS4pO1xuICB2ZWM0IHdvcmxkUG9zaXRpb24gPSBtb2RlbE1hdHJpeCAqIHZlYzQocG9zaXRpb24sIDEuKTtcbiAgdldvcmxkUG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uLnh5ejtcbn1gLFxuICAgIC8qIGdsc2wgKi8gYHZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbnVuaWZvcm0gdmVjMyBjb2xvcjtcbnVuaWZvcm0gc2FtcGxlcjJEIGNhdXN0aWNzVGV4dHVyZTtcbnVuaWZvcm0gc2FtcGxlcjJEIGNhdXN0aWNzVGV4dHVyZUI7XG51bmlmb3JtIG1hdDQgbGlnaHRQcm9qTWF0cml4O1xudW5pZm9ybSBtYXQ0IGxpZ2h0Vmlld01hdHJpeDtcbiB2b2lkIG1haW4oKSB7XG4gIC8vIEFwcGx5IGNhdXN0aWNzXG4gIHZlYzQgbGlnaHRTcGFjZVBvcyA9IGxpZ2h0UHJvak1hdHJpeCAqIGxpZ2h0Vmlld01hdHJpeCAqIHZlYzQodldvcmxkUG9zaXRpb24sIDEuMCk7XG4gIGxpZ2h0U3BhY2VQb3MueHl6IC89IGxpZ2h0U3BhY2VQb3MudztcbiAgbGlnaHRTcGFjZVBvcy54eXogPSBsaWdodFNwYWNlUG9zLnh5eiAqIDAuNSArIDAuNTtcbiAgdmVjMyBmcm9udCA9IHRleHR1cmUyRChjYXVzdGljc1RleHR1cmUsIGxpZ2h0U3BhY2VQb3MueHkpLnJnYjtcbiAgdmVjMyBiYWNrID0gdGV4dHVyZTJEKGNhdXN0aWNzVGV4dHVyZUIsIGxpZ2h0U3BhY2VQb3MueHkpLnJnYjtcbiAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgoZnJvbnQgKyBiYWNrKSAqIGNvbG9yLCAxLjApO1xuICAjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG4gICNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG59YFxuKTtcbiJdfQ==
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { NoBlending, ShaderMaterial, Uniform, Vector2 } from 'three';
|
|
2
|
+
export class ConvolutionMaterial extends ShaderMaterial {
|
|
3
|
+
constructor(texelSize = new Vector2()) {
|
|
4
|
+
super({
|
|
5
|
+
uniforms: {
|
|
6
|
+
inputBuffer: new Uniform(null),
|
|
7
|
+
depthBuffer: new Uniform(null),
|
|
8
|
+
resolution: new Uniform(new Vector2()),
|
|
9
|
+
texelSize: new Uniform(new Vector2()),
|
|
10
|
+
halfTexelSize: new Uniform(new Vector2()),
|
|
11
|
+
kernel: new Uniform(0.0),
|
|
12
|
+
scale: new Uniform(1.0),
|
|
13
|
+
cameraNear: new Uniform(0.0),
|
|
14
|
+
cameraFar: new Uniform(1.0),
|
|
15
|
+
minDepthThreshold: new Uniform(0.0),
|
|
16
|
+
maxDepthThreshold: new Uniform(1.0),
|
|
17
|
+
depthScale: new Uniform(0.0),
|
|
18
|
+
depthToBlurRatioBias: new Uniform(0.25),
|
|
19
|
+
},
|
|
20
|
+
fragmentShader: `#include <common>
|
|
21
|
+
#include <dithering_pars_fragment>
|
|
22
|
+
uniform sampler2D inputBuffer;
|
|
23
|
+
uniform sampler2D depthBuffer;
|
|
24
|
+
uniform float cameraNear;
|
|
25
|
+
uniform float cameraFar;
|
|
26
|
+
uniform float minDepthThreshold;
|
|
27
|
+
uniform float maxDepthThreshold;
|
|
28
|
+
uniform float depthScale;
|
|
29
|
+
uniform float depthToBlurRatioBias;
|
|
30
|
+
varying vec2 vUv;
|
|
31
|
+
varying vec2 vUv0;
|
|
32
|
+
varying vec2 vUv1;
|
|
33
|
+
varying vec2 vUv2;
|
|
34
|
+
varying vec2 vUv3;
|
|
35
|
+
|
|
36
|
+
void main() {
|
|
37
|
+
float depthFactor = 0.0;
|
|
38
|
+
|
|
39
|
+
#ifdef USE_DEPTH
|
|
40
|
+
vec4 depth = texture2D(depthBuffer, vUv);
|
|
41
|
+
depthFactor = smoothstep(minDepthThreshold, maxDepthThreshold, 1.0-(depth.r * depth.a));
|
|
42
|
+
depthFactor *= depthScale;
|
|
43
|
+
depthFactor = max(0.0, min(1.0, depthFactor + 0.25));
|
|
44
|
+
#endif
|
|
45
|
+
|
|
46
|
+
vec4 sum = texture2D(inputBuffer, mix(vUv0, vUv, depthFactor));
|
|
47
|
+
sum += texture2D(inputBuffer, mix(vUv1, vUv, depthFactor));
|
|
48
|
+
sum += texture2D(inputBuffer, mix(vUv2, vUv, depthFactor));
|
|
49
|
+
sum += texture2D(inputBuffer, mix(vUv3, vUv, depthFactor));
|
|
50
|
+
gl_FragColor = sum * 0.25 ;
|
|
51
|
+
|
|
52
|
+
#include <dithering_fragment>
|
|
53
|
+
#include <tonemapping_fragment>
|
|
54
|
+
#include <encodings_fragment>
|
|
55
|
+
}`,
|
|
56
|
+
vertexShader: `uniform vec2 texelSize;
|
|
57
|
+
uniform vec2 halfTexelSize;
|
|
58
|
+
uniform float kernel;
|
|
59
|
+
uniform float scale;
|
|
60
|
+
varying vec2 vUv;
|
|
61
|
+
varying vec2 vUv0;
|
|
62
|
+
varying vec2 vUv1;
|
|
63
|
+
varying vec2 vUv2;
|
|
64
|
+
varying vec2 vUv3;
|
|
65
|
+
|
|
66
|
+
void main() {
|
|
67
|
+
vec2 uv = position.xy * 0.5 + 0.5;
|
|
68
|
+
vUv = uv;
|
|
69
|
+
|
|
70
|
+
vec2 dUv = (texelSize * vec2(kernel) + halfTexelSize) * scale;
|
|
71
|
+
vUv0 = vec2(uv.x - dUv.x, uv.y + dUv.y);
|
|
72
|
+
vUv1 = vec2(uv.x + dUv.x, uv.y + dUv.y);
|
|
73
|
+
vUv2 = vec2(uv.x + dUv.x, uv.y - dUv.y);
|
|
74
|
+
vUv3 = vec2(uv.x - dUv.x, uv.y - dUv.y);
|
|
75
|
+
|
|
76
|
+
gl_Position = vec4(position.xy, 1.0, 1.0);
|
|
77
|
+
}`,
|
|
78
|
+
blending: NoBlending,
|
|
79
|
+
depthWrite: false,
|
|
80
|
+
depthTest: false,
|
|
81
|
+
});
|
|
82
|
+
this.toneMapped = false;
|
|
83
|
+
this.setTexelSize(texelSize.x, texelSize.y);
|
|
84
|
+
this.kernel = new Float32Array([0.0, 1.0, 2.0, 2.0, 3.0]);
|
|
85
|
+
}
|
|
86
|
+
setTexelSize(x, y) {
|
|
87
|
+
this.uniforms['texelSize'].value.set(x, y);
|
|
88
|
+
this.uniforms['halfTexelSize'].value.set(x, y).multiplyScalar(0.5);
|
|
89
|
+
}
|
|
90
|
+
setResolution(resolution) {
|
|
91
|
+
this.uniforms['resolution'].value.copy(resolution);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udm9sdXRpb24tbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc2hhZGVycy9zcmMvY29udm9sdXRpb24tbWF0ZXJpYWwvY29udm9sdXRpb24tbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVyRSxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsY0FBYztJQUVuRCxZQUFZLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRTtRQUNqQyxLQUFLLENBQUM7WUFDRixRQUFRLEVBQUU7Z0JBQ04sV0FBVyxFQUFFLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDOUIsV0FBVyxFQUFFLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDOUIsVUFBVSxFQUFFLElBQUksT0FBTyxDQUFDLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ3RDLFNBQVMsRUFBRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNyQyxhQUFhLEVBQUUsSUFBSSxPQUFPLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDekMsTUFBTSxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDeEIsS0FBSyxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDdkIsVUFBVSxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDNUIsU0FBUyxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDM0IsaUJBQWlCLEVBQUUsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDO2dCQUNuQyxpQkFBaUIsRUFBRSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQ25DLFVBQVUsRUFBRSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQzVCLG9CQUFvQixFQUFFLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQzthQUMxQztZQUNELGNBQWMsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VUFtQ2xCO1lBQ0UsWUFBWSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VUFxQmhCO1lBQ0UsUUFBUSxFQUFFLFVBQVU7WUFDcEIsVUFBVSxFQUFFLEtBQUs7WUFDakIsU0FBUyxFQUFFLEtBQUs7U0FDbkIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksWUFBWSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELFlBQVksQ0FBQyxDQUFTLEVBQUUsQ0FBUztRQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFDRCxhQUFhLENBQUMsVUFBbUI7UUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vQmxlbmRpbmcsIFNoYWRlck1hdGVyaWFsLCBVbmlmb3JtLCBWZWN0b3IyIH0gZnJvbSAndGhyZWUnO1xuXG5leHBvcnQgY2xhc3MgQ29udm9sdXRpb25NYXRlcmlhbCBleHRlbmRzIFNoYWRlck1hdGVyaWFsIHtcbiAgICByZWFkb25seSBrZXJuZWw6IEZsb2F0MzJBcnJheTtcbiAgICBjb25zdHJ1Y3Rvcih0ZXhlbFNpemUgPSBuZXcgVmVjdG9yMigpKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIHVuaWZvcm1zOiB7XG4gICAgICAgICAgICAgICAgaW5wdXRCdWZmZXI6IG5ldyBVbmlmb3JtKG51bGwpLFxuICAgICAgICAgICAgICAgIGRlcHRoQnVmZmVyOiBuZXcgVW5pZm9ybShudWxsKSxcbiAgICAgICAgICAgICAgICByZXNvbHV0aW9uOiBuZXcgVW5pZm9ybShuZXcgVmVjdG9yMigpKSxcbiAgICAgICAgICAgICAgICB0ZXhlbFNpemU6IG5ldyBVbmlmb3JtKG5ldyBWZWN0b3IyKCkpLFxuICAgICAgICAgICAgICAgIGhhbGZUZXhlbFNpemU6IG5ldyBVbmlmb3JtKG5ldyBWZWN0b3IyKCkpLFxuICAgICAgICAgICAgICAgIGtlcm5lbDogbmV3IFVuaWZvcm0oMC4wKSxcbiAgICAgICAgICAgICAgICBzY2FsZTogbmV3IFVuaWZvcm0oMS4wKSxcbiAgICAgICAgICAgICAgICBjYW1lcmFOZWFyOiBuZXcgVW5pZm9ybSgwLjApLFxuICAgICAgICAgICAgICAgIGNhbWVyYUZhcjogbmV3IFVuaWZvcm0oMS4wKSxcbiAgICAgICAgICAgICAgICBtaW5EZXB0aFRocmVzaG9sZDogbmV3IFVuaWZvcm0oMC4wKSxcbiAgICAgICAgICAgICAgICBtYXhEZXB0aFRocmVzaG9sZDogbmV3IFVuaWZvcm0oMS4wKSxcbiAgICAgICAgICAgICAgICBkZXB0aFNjYWxlOiBuZXcgVW5pZm9ybSgwLjApLFxuICAgICAgICAgICAgICAgIGRlcHRoVG9CbHVyUmF0aW9CaWFzOiBuZXcgVW5pZm9ybSgwLjI1KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmcmFnbWVudFNoYWRlcjogYCNpbmNsdWRlIDxjb21tb24+XG4gICAgICAgICNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgaW5wdXRCdWZmZXI7XG4gICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIGRlcHRoQnVmZmVyO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IGNhbWVyYU5lYXI7XG4gICAgICAgIHVuaWZvcm0gZmxvYXQgY2FtZXJhRmFyO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IG1pbkRlcHRoVGhyZXNob2xkO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IG1heERlcHRoVGhyZXNob2xkO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IGRlcHRoU2NhbGU7XG4gICAgICAgIHVuaWZvcm0gZmxvYXQgZGVwdGhUb0JsdXJSYXRpb0JpYXM7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXY7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXYwO1xuICAgICAgICB2YXJ5aW5nIHZlYzIgdlV2MTtcbiAgICAgICAgdmFyeWluZyB2ZWMyIHZVdjI7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXYzO1xuXG4gICAgICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgICBmbG9hdCBkZXB0aEZhY3RvciA9IDAuMDtcblxuICAgICAgICAgICNpZmRlZiBVU0VfREVQVEhcbiAgICAgICAgICAgIHZlYzQgZGVwdGggPSB0ZXh0dXJlMkQoZGVwdGhCdWZmZXIsIHZVdik7XG4gICAgICAgICAgICBkZXB0aEZhY3RvciA9IHNtb290aHN0ZXAobWluRGVwdGhUaHJlc2hvbGQsIG1heERlcHRoVGhyZXNob2xkLCAxLjAtKGRlcHRoLnIgKiBkZXB0aC5hKSk7XG4gICAgICAgICAgICBkZXB0aEZhY3RvciAqPSBkZXB0aFNjYWxlO1xuICAgICAgICAgICAgZGVwdGhGYWN0b3IgPSBtYXgoMC4wLCBtaW4oMS4wLCBkZXB0aEZhY3RvciArIDAuMjUpKTtcbiAgICAgICAgICAjZW5kaWZcblxuICAgICAgICAgIHZlYzQgc3VtID0gdGV4dHVyZTJEKGlucHV0QnVmZmVyLCBtaXgodlV2MCwgdlV2LCBkZXB0aEZhY3RvcikpO1xuICAgICAgICAgIHN1bSArPSB0ZXh0dXJlMkQoaW5wdXRCdWZmZXIsIG1peCh2VXYxLCB2VXYsIGRlcHRoRmFjdG9yKSk7XG4gICAgICAgICAgc3VtICs9IHRleHR1cmUyRChpbnB1dEJ1ZmZlciwgbWl4KHZVdjIsIHZVdiwgZGVwdGhGYWN0b3IpKTtcbiAgICAgICAgICBzdW0gKz0gdGV4dHVyZTJEKGlucHV0QnVmZmVyLCBtaXgodlV2MywgdlV2LCBkZXB0aEZhY3RvcikpO1xuICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHN1bSAqIDAuMjUgO1xuXG4gICAgICAgICAgI2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD5cbiAgICAgICAgICAjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG4gICAgICAgICAgI2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cbiAgICAgICAgfWAsXG4gICAgICAgICAgICB2ZXJ0ZXhTaGFkZXI6IGB1bmlmb3JtIHZlYzIgdGV4ZWxTaXplO1xuICAgICAgICB1bmlmb3JtIHZlYzIgaGFsZlRleGVsU2l6ZTtcbiAgICAgICAgdW5pZm9ybSBmbG9hdCBrZXJuZWw7XG4gICAgICAgIHVuaWZvcm0gZmxvYXQgc2NhbGU7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXY7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXYwO1xuICAgICAgICB2YXJ5aW5nIHZlYzIgdlV2MTtcbiAgICAgICAgdmFyeWluZyB2ZWMyIHZVdjI7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXYzO1xuXG4gICAgICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgICB2ZWMyIHV2ID0gcG9zaXRpb24ueHkgKiAwLjUgKyAwLjU7XG4gICAgICAgICAgdlV2ID0gdXY7XG5cbiAgICAgICAgICB2ZWMyIGRVdiA9ICh0ZXhlbFNpemUgKiB2ZWMyKGtlcm5lbCkgKyBoYWxmVGV4ZWxTaXplKSAqIHNjYWxlO1xuICAgICAgICAgIHZVdjAgPSB2ZWMyKHV2LnggLSBkVXYueCwgdXYueSArIGRVdi55KTtcbiAgICAgICAgICB2VXYxID0gdmVjMih1di54ICsgZFV2LngsIHV2LnkgKyBkVXYueSk7XG4gICAgICAgICAgdlV2MiA9IHZlYzIodXYueCArIGRVdi54LCB1di55IC0gZFV2LnkpO1xuICAgICAgICAgIHZVdjMgPSB2ZWMyKHV2LnggLSBkVXYueCwgdXYueSAtIGRVdi55KTtcblxuICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbi54eSwgMS4wLCAxLjApO1xuICAgICAgICB9YCxcbiAgICAgICAgICAgIGJsZW5kaW5nOiBOb0JsZW5kaW5nLFxuICAgICAgICAgICAgZGVwdGhXcml0ZTogZmFsc2UsXG4gICAgICAgICAgICBkZXB0aFRlc3Q6IGZhbHNlLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnRvbmVNYXBwZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZXRUZXhlbFNpemUodGV4ZWxTaXplLngsIHRleGVsU2l6ZS55KTtcbiAgICAgICAgdGhpcy5rZXJuZWwgPSBuZXcgRmxvYXQzMkFycmF5KFswLjAsIDEuMCwgMi4wLCAyLjAsIDMuMF0pO1xuICAgIH1cblxuICAgIHNldFRleGVsU2l6ZSh4OiBudW1iZXIsIHk6IG51bWJlcikge1xuICAgICAgICB0aGlzLnVuaWZvcm1zWyd0ZXhlbFNpemUnXS52YWx1ZS5zZXQoeCwgeSk7XG4gICAgICAgIHRoaXMudW5pZm9ybXNbJ2hhbGZUZXhlbFNpemUnXS52YWx1ZS5zZXQoeCwgeSkubXVsdGlwbHlTY2FsYXIoMC41KTtcbiAgICB9XG4gICAgc2V0UmVzb2x1dGlvbihyZXNvbHV0aW9uOiBWZWN0b3IyKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybXNbJ3Jlc29sdXRpb24nXS52YWx1ZS5jb3B5KHJlc29sdXRpb24pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { shaderMaterial } from '../shader-material/shader-material';
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY2FyZC1tYXRlcmlhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9zaGFkZXJzL3NyYy9kaXNjYXJkLW1hdGVyaWFsL2Rpc2NhcmQtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXBFLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxjQUFjLENBQ3pDLEVBQUUsRUFDRixpQkFBaUIsRUFDakIsb0VBQW9FLENBQ3ZFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaGFkZXJNYXRlcmlhbCB9IGZyb20gJy4uL3NoYWRlci1tYXRlcmlhbC9zaGFkZXItbWF0ZXJpYWwnO1xuXG5leHBvcnQgY29uc3QgRGlzY2FyZE1hdGVyaWFsID0gc2hhZGVyTWF0ZXJpYWwoXG4gICAge30sXG4gICAgJ3ZvaWQgbWFpbigpIHsgfScsXG4gICAgJ3ZvaWQgbWFpbigpIHsgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApOyBkaXNjYXJkOyAgfSdcbik7XG4iXX0=
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
export * from './
|
|
3
|
-
export * from './
|
|
4
|
-
export * from './
|
|
5
|
-
export * from './
|
|
6
|
-
export * from './
|
|
7
|
-
export * from './
|
|
8
|
-
export * from './
|
|
9
|
-
export * from './
|
|
10
|
-
export * from './
|
|
11
|
-
export * from './
|
|
12
|
-
export * from './
|
|
13
|
-
export * from './
|
|
14
|
-
export * from './
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './blur-pass/blur-pass';
|
|
2
|
+
export * from './caustics-material/caustics-material';
|
|
3
|
+
export * from './caustics-material/caustics-projection-material';
|
|
4
|
+
export * from './convolution-material/convolution-material';
|
|
5
|
+
export * from './discard-material/discard-material';
|
|
6
|
+
export * from './mesh-distort-material/mesh-distort-material';
|
|
7
|
+
export * from './mesh-reflector-material/mesh-reflector-material';
|
|
8
|
+
export * from './mesh-refraction-material/mesh-refraction-material';
|
|
9
|
+
export * from './mesh-transmission-material/mesh-transmission-material';
|
|
10
|
+
export * from './mesh-wobble-material/mesh-wobble-material';
|
|
11
|
+
export * from './soft-shadow-material/soft-shadow-material';
|
|
12
|
+
export * from './sparkles-material/sparkles-material';
|
|
13
|
+
export * from './spot-light-material/spot-light-material';
|
|
14
|
+
export * from './star-field-material/star-field-material';
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc2hhZGVycy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLDJDQUEyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ibHVyLXBhc3MvYmx1ci1wYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vY2F1c3RpY3MtbWF0ZXJpYWwvY2F1c3RpY3MtbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXVzdGljcy1tYXRlcmlhbC9jYXVzdGljcy1wcm9qZWN0aW9uLW1hdGVyaWFsJztcbmV4cG9ydCAqIGZyb20gJy4vY29udm9sdXRpb24tbWF0ZXJpYWwvY29udm9sdXRpb24tbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXNjYXJkLW1hdGVyaWFsL2Rpc2NhcmQtbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tZXNoLWRpc3RvcnQtbWF0ZXJpYWwvbWVzaC1kaXN0b3J0LW1hdGVyaWFsJztcbmV4cG9ydCAqIGZyb20gJy4vbWVzaC1yZWZsZWN0b3ItbWF0ZXJpYWwvbWVzaC1yZWZsZWN0b3ItbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tZXNoLXJlZnJhY3Rpb24tbWF0ZXJpYWwvbWVzaC1yZWZyYWN0aW9uLW1hdGVyaWFsJztcbmV4cG9ydCAqIGZyb20gJy4vbWVzaC10cmFuc21pc3Npb24tbWF0ZXJpYWwvbWVzaC10cmFuc21pc3Npb24tbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tZXNoLXdvYmJsZS1tYXRlcmlhbC9tZXNoLXdvYmJsZS1tYXRlcmlhbCc7XG5leHBvcnQgKiBmcm9tICcuL3NvZnQtc2hhZG93LW1hdGVyaWFsL3NvZnQtc2hhZG93LW1hdGVyaWFsJztcbmV4cG9ydCAqIGZyb20gJy4vc3BhcmtsZXMtbWF0ZXJpYWwvc3BhcmtsZXMtbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zcG90LWxpZ2h0LW1hdGVyaWFsL3Nwb3QtbGlnaHQtbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zdGFyLWZpZWxkLW1hdGVyaWFsL3N0YXItZmllbGQtbWF0ZXJpYWwnO1xuIl19
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
import * as THREE from 'three';
|
|
3
|
+
export const NGTS_DISTORT_MATERIAL_SHADER = new InjectionToken('DistortMaterialShader');
|
|
4
|
+
export function provideNgtsMeshDistortMaterialShader(distortShader) {
|
|
5
|
+
return {
|
|
6
|
+
provide: NGTS_DISTORT_MATERIAL_SHADER,
|
|
7
|
+
useFactory: () => {
|
|
8
|
+
return class extends THREE.MeshPhysicalMaterial {
|
|
9
|
+
constructor(parameters = {}) {
|
|
10
|
+
super(parameters);
|
|
11
|
+
this.setValues(parameters);
|
|
12
|
+
this._time = { value: 0 };
|
|
13
|
+
this._distort = { value: 0.4 };
|
|
14
|
+
this._radius = { value: 1 };
|
|
15
|
+
}
|
|
16
|
+
onBeforeCompile(shader) {
|
|
17
|
+
shader.uniforms['time'] = this._time;
|
|
18
|
+
shader.uniforms['radius'] = this._radius;
|
|
19
|
+
shader.uniforms['distort'] = this._distort;
|
|
20
|
+
shader.vertexShader = `
|
|
21
|
+
uniform float time;
|
|
22
|
+
uniform float radius;
|
|
23
|
+
uniform float distort;
|
|
24
|
+
${distortShader}
|
|
25
|
+
${shader.vertexShader}
|
|
26
|
+
`;
|
|
27
|
+
shader.vertexShader = shader.vertexShader.replace('#include <begin_vertex>', `
|
|
28
|
+
float updateTime = time / 50.0;
|
|
29
|
+
float noise = snoise(vec3(position / 2.0 + updateTime * 5.0));
|
|
30
|
+
vec3 transformed = vec3(position * (noise * pow(distort, 2.0) + radius));
|
|
31
|
+
`);
|
|
32
|
+
}
|
|
33
|
+
get time() {
|
|
34
|
+
return this._time.value;
|
|
35
|
+
}
|
|
36
|
+
set time(v) {
|
|
37
|
+
this._time.value = v;
|
|
38
|
+
}
|
|
39
|
+
get distort() {
|
|
40
|
+
return this._distort.value;
|
|
41
|
+
}
|
|
42
|
+
set distort(v) {
|
|
43
|
+
this._distort.value = v;
|
|
44
|
+
}
|
|
45
|
+
get radius() {
|
|
46
|
+
return this._radius.value;
|
|
47
|
+
}
|
|
48
|
+
set radius(v) {
|
|
49
|
+
this._radius.value = v;
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1kaXN0b3J0LW1hdGVyaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3NoYWRlcnMvc3JjL21lc2gtZGlzdG9ydC1tYXRlcmlhbC9tZXNoLWRpc3RvcnQtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQWUvQixNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLGNBQWMsQ0FBc0IsdUJBQXVCLENBQUMsQ0FBQztBQUU3RyxNQUFNLFVBQVUsb0NBQW9DLENBQUMsYUFBcUI7SUFDdEUsT0FBTztRQUNILE9BQU8sRUFBRSw0QkFBNEI7UUFDckMsVUFBVSxFQUFFLEdBQUcsRUFBRTtZQUNiLE9BQU8sS0FBTSxTQUFRLEtBQUssQ0FBQyxvQkFBb0I7Z0JBSzNDLFlBQVksYUFBbUQsRUFBRTtvQkFDN0QsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO29CQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO29CQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNoQyxDQUFDO2dCQUVRLGVBQWUsQ0FBQyxNQUFvQjtvQkFDekMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO29CQUNyQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7b0JBQ3pDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztvQkFFM0MsTUFBTSxDQUFDLFlBQVksR0FBRzs7OztlQUkzQixhQUFhO2VBQ2IsTUFBTSxDQUFDLFlBQVk7WUFDdEIsQ0FBQztvQkFDTyxNQUFNLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUM3Qyx5QkFBeUIsRUFDekI7Ozs7Z0JBSVIsQ0FDSyxDQUFDO2dCQUNOLENBQUM7Z0JBRUQsSUFBSSxJQUFJO29CQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQzVCLENBQUM7Z0JBRUQsSUFBSSxJQUFJLENBQUMsQ0FBQztvQkFDTixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQ3pCLENBQUM7Z0JBRUQsSUFBSSxPQUFPO29CQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7Z0JBQy9CLENBQUM7Z0JBRUQsSUFBSSxPQUFPLENBQUMsQ0FBQztvQkFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQzVCLENBQUM7Z0JBRUQsSUFBSSxNQUFNO29CQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQzlCLENBQUM7Z0JBRUQsSUFBSSxNQUFNLENBQUMsQ0FBQztvQkFDUixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQzNCLENBQUM7YUFDSixDQUFDO1FBQ04sQ0FBQztLQUNKLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcblxuaW50ZXJmYWNlIFVuaWZvcm08VD4ge1xuICAgIHZhbHVlOiBUO1xufVxuXG4vKipcbiAqIG5wbSBpIC1EIHJhdy1sb2FkZXIgZ2xzbGlmeS1sb2FkZXIgZ2xzbC1ub2lzZVxuICogVXNhZ2U6IGltcG9ydCBkaXN0b3J0IGZyb20gJ3Jhdy1sb2FkZXIhZ2xzbGlmeS1sb2FkZXIhYW5ndWxhci10aHJlZS1zb2JhL2Fzc2V0cy9kaXN0b3J0LnZlcnQuZ2xzbCdcbiAqXG4gKiBwcm92aWRlTmd0c01lc2hEaXN0b3J0TWF0ZXJpYWxTaGFkZXIoZGlzdG9ydClcbiAqL1xuXG5leHBvcnQgdHlwZSBNZXNoRGlzdG9ydE1hdGVyaWFsID0gVHlwZTx7IHRpbWU6IG51bWJlcjsgZGlzdG9ydDogbnVtYmVyOyByYWRpdXM6IG51bWJlciB9ICYgVEhSRUUuTWVzaFBoeXNpY2FsTWF0ZXJpYWw+O1xuXG5leHBvcnQgY29uc3QgTkdUU19ESVNUT1JUX01BVEVSSUFMX1NIQURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxNZXNoRGlzdG9ydE1hdGVyaWFsPignRGlzdG9ydE1hdGVyaWFsU2hhZGVyJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlTmd0c01lc2hEaXN0b3J0TWF0ZXJpYWxTaGFkZXIoZGlzdG9ydFNoYWRlcjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcHJvdmlkZTogTkdUU19ESVNUT1JUX01BVEVSSUFMX1NIQURFUixcbiAgICAgICAgdXNlRmFjdG9yeTogKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNsYXNzIGV4dGVuZHMgVEhSRUUuTWVzaFBoeXNpY2FsTWF0ZXJpYWwge1xuICAgICAgICAgICAgICAgIF90aW1lOiBVbmlmb3JtPG51bWJlcj47XG4gICAgICAgICAgICAgICAgX2Rpc3RvcnQ6IFVuaWZvcm08bnVtYmVyPjtcbiAgICAgICAgICAgICAgICBfcmFkaXVzOiBVbmlmb3JtPG51bWJlcj47XG5cbiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcihwYXJhbWV0ZXJzOiBUSFJFRS5NZXNoUGh5c2ljYWxNYXRlcmlhbFBhcmFtZXRlcnMgPSB7fSkge1xuICAgICAgICAgICAgICAgICAgICBzdXBlcihwYXJhbWV0ZXJzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZXMocGFyYW1ldGVycyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpbWUgPSB7IHZhbHVlOiAwIH07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3RvcnQgPSB7IHZhbHVlOiAwLjQgfTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmFkaXVzID0geyB2YWx1ZTogMSB9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG92ZXJyaWRlIG9uQmVmb3JlQ29tcGlsZShzaGFkZXI6IFRIUkVFLlNoYWRlcikge1xuICAgICAgICAgICAgICAgICAgICBzaGFkZXIudW5pZm9ybXNbJ3RpbWUnXSA9IHRoaXMuX3RpbWU7XG4gICAgICAgICAgICAgICAgICAgIHNoYWRlci51bmlmb3Jtc1sncmFkaXVzJ10gPSB0aGlzLl9yYWRpdXM7XG4gICAgICAgICAgICAgICAgICAgIHNoYWRlci51bmlmb3Jtc1snZGlzdG9ydCddID0gdGhpcy5fZGlzdG9ydDtcblxuICAgICAgICAgICAgICAgICAgICBzaGFkZXIudmVydGV4U2hhZGVyID0gYFxuXHRcdFx0XHRcdFx0XHRcdFx0ICAgIHVuaWZvcm0gZmxvYXQgdGltZTtcblx0XHRcdFx0XHRcdFx0XHRcdCAgICB1bmlmb3JtIGZsb2F0IHJhZGl1cztcblx0XHRcdFx0XHRcdFx0XHRcdCAgICB1bmlmb3JtIGZsb2F0IGRpc3RvcnQ7XG5cdFx0XHRcdFx0XHRcdFx0XHQgICAgJHtkaXN0b3J0U2hhZGVyfVxuXHRcdFx0XHRcdFx0XHRcdFx0ICAgICR7c2hhZGVyLnZlcnRleFNoYWRlcn1cblx0XHRcdFx0XHRcdFx0XHRcdCAgYDtcbiAgICAgICAgICAgICAgICAgICAgc2hhZGVyLnZlcnRleFNoYWRlciA9IHNoYWRlci52ZXJ0ZXhTaGFkZXIucmVwbGFjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSA8YmVnaW5fdmVydGV4PicsXG4gICAgICAgICAgICAgICAgICAgICAgICBgXG5cdFx0XHRcdFx0XHRcdFx0XHQgICAgICBmbG9hdCB1cGRhdGVUaW1lID0gdGltZSAvIDUwLjA7XG5cdFx0XHRcdFx0XHRcdFx0XHQgICAgICBmbG9hdCBub2lzZSA9IHNub2lzZSh2ZWMzKHBvc2l0aW9uIC8gMi4wICsgdXBkYXRlVGltZSAqIDUuMCkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgdmVjMyB0cmFuc2Zvcm1lZCA9IHZlYzMocG9zaXRpb24gKiAobm9pc2UgKiBwb3coZGlzdG9ydCwgMi4wKSArIHJhZGl1cykpO1xuXHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgYFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGdldCB0aW1lKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdGltZS52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzZXQgdGltZSh2KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpbWUudmFsdWUgPSB2O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGdldCBkaXN0b3J0KCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZGlzdG9ydC52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzZXQgZGlzdG9ydCh2KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3RvcnQudmFsdWUgPSB2O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGdldCByYWRpdXMoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9yYWRpdXMudmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc2V0IHJhZGl1cyh2KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JhZGl1cy52YWx1ZSA9IHY7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICB9O1xufVxuIl19
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { MeshStandardMaterial } from 'three';
|
|
2
|
+
export class MeshReflectorMaterial extends MeshStandardMaterial {
|
|
3
|
+
constructor(parameters = {}) {
|
|
4
|
+
super(parameters);
|
|
5
|
+
this._tDepth = { value: null };
|
|
6
|
+
this._distortionMap = { value: null };
|
|
7
|
+
this._tDiffuse = { value: null };
|
|
8
|
+
this._tDiffuseBlur = { value: null };
|
|
9
|
+
this._textureMatrix = { value: null };
|
|
10
|
+
this._hasBlur = { value: false };
|
|
11
|
+
this._mirror = { value: 0.0 };
|
|
12
|
+
this._mixBlur = { value: 0.0 };
|
|
13
|
+
this._blurStrength = { value: 0.5 };
|
|
14
|
+
this._minDepthThreshold = { value: 0.9 };
|
|
15
|
+
this._maxDepthThreshold = { value: 1 };
|
|
16
|
+
this._depthScale = { value: 0 };
|
|
17
|
+
this._depthToBlurRatioBias = { value: 0.25 };
|
|
18
|
+
this._distortion = { value: 1 };
|
|
19
|
+
this._mixContrast = { value: 1.0 };
|
|
20
|
+
this.setValues(parameters);
|
|
21
|
+
}
|
|
22
|
+
onBeforeCompile(shader) {
|
|
23
|
+
if (!shader.defines?.USE_UV) {
|
|
24
|
+
shader.defines.USE_UV = '';
|
|
25
|
+
}
|
|
26
|
+
shader.uniforms.hasBlur = this._hasBlur;
|
|
27
|
+
shader.uniforms.tDiffuse = this._tDiffuse;
|
|
28
|
+
shader.uniforms.tDepth = this._tDepth;
|
|
29
|
+
shader.uniforms.distortionMap = this._distortionMap;
|
|
30
|
+
shader.uniforms.tDiffuseBlur = this._tDiffuseBlur;
|
|
31
|
+
shader.uniforms.textureMatrix = this._textureMatrix;
|
|
32
|
+
shader.uniforms.mirror = this._mirror;
|
|
33
|
+
shader.uniforms.mixBlur = this._mixBlur;
|
|
34
|
+
shader.uniforms.mixStrength = this._blurStrength;
|
|
35
|
+
shader.uniforms.minDepthThreshold = this._minDepthThreshold;
|
|
36
|
+
shader.uniforms.maxDepthThreshold = this._maxDepthThreshold;
|
|
37
|
+
shader.uniforms.depthScale = this._depthScale;
|
|
38
|
+
shader.uniforms.depthToBlurRatioBias = this._depthToBlurRatioBias;
|
|
39
|
+
shader.uniforms.distortion = this._distortion;
|
|
40
|
+
shader.uniforms.mixContrast = this._mixContrast;
|
|
41
|
+
shader.vertexShader = `
|
|
42
|
+
uniform mat4 textureMatrix;
|
|
43
|
+
varying vec4 my_vUv;
|
|
44
|
+
${shader.vertexShader}`;
|
|
45
|
+
shader.vertexShader = shader.vertexShader.replace('#include <project_vertex>', `#include <project_vertex>
|
|
46
|
+
my_vUv = textureMatrix * vec4( position, 1.0 );
|
|
47
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );`);
|
|
48
|
+
shader.fragmentShader = `
|
|
49
|
+
uniform sampler2D tDiffuse;
|
|
50
|
+
uniform sampler2D tDiffuseBlur;
|
|
51
|
+
uniform sampler2D tDepth;
|
|
52
|
+
uniform sampler2D distortionMap;
|
|
53
|
+
uniform float distortion;
|
|
54
|
+
uniform float cameraNear;
|
|
55
|
+
uniform float cameraFar;
|
|
56
|
+
uniform bool hasBlur;
|
|
57
|
+
uniform float mixBlur;
|
|
58
|
+
uniform float mirror;
|
|
59
|
+
uniform float mixStrength;
|
|
60
|
+
uniform float minDepthThreshold;
|
|
61
|
+
uniform float maxDepthThreshold;
|
|
62
|
+
uniform float mixContrast;
|
|
63
|
+
uniform float depthScale;
|
|
64
|
+
uniform float depthToBlurRatioBias;
|
|
65
|
+
varying vec4 my_vUv;
|
|
66
|
+
${shader.fragmentShader}`;
|
|
67
|
+
shader.fragmentShader = shader.fragmentShader.replace('#include <emissivemap_fragment>', `#include <emissivemap_fragment>
|
|
68
|
+
|
|
69
|
+
float distortionFactor = 0.0;
|
|
70
|
+
#ifdef USE_DISTORTION
|
|
71
|
+
distortionFactor = texture2D(distortionMap, vUv).r * distortion;
|
|
72
|
+
#endif
|
|
73
|
+
|
|
74
|
+
vec4 new_vUv = my_vUv;
|
|
75
|
+
new_vUv.x += distortionFactor;
|
|
76
|
+
new_vUv.y += distortionFactor;
|
|
77
|
+
|
|
78
|
+
vec4 base = texture2DProj(tDiffuse, new_vUv);
|
|
79
|
+
vec4 blur = texture2DProj(tDiffuseBlur, new_vUv);
|
|
80
|
+
|
|
81
|
+
vec4 merge = base;
|
|
82
|
+
|
|
83
|
+
#ifdef USE_NORMALMAP
|
|
84
|
+
vec2 normal_uv = vec2(0.0);
|
|
85
|
+
vec4 normalColor = texture2D(normalMap, vUv * normalScale);
|
|
86
|
+
vec3 my_normal = normalize( vec3( normalColor.r * 2.0 - 1.0, normalColor.b, normalColor.g * 2.0 - 1.0 ) );
|
|
87
|
+
vec3 coord = new_vUv.xyz / new_vUv.w;
|
|
88
|
+
normal_uv = coord.xy + coord.z * my_normal.xz * 0.05;
|
|
89
|
+
vec4 base_normal = texture2D(tDiffuse, normal_uv);
|
|
90
|
+
vec4 blur_normal = texture2D(tDiffuseBlur, normal_uv);
|
|
91
|
+
merge = base_normal;
|
|
92
|
+
blur = blur_normal;
|
|
93
|
+
#endif
|
|
94
|
+
|
|
95
|
+
float depthFactor = 0.0001;
|
|
96
|
+
float blurFactor = 0.0;
|
|
97
|
+
|
|
98
|
+
#ifdef USE_DEPTH
|
|
99
|
+
vec4 depth = texture2DProj(tDepth, new_vUv);
|
|
100
|
+
depthFactor = smoothstep(minDepthThreshold, maxDepthThreshold, 1.0-(depth.r * depth.a));
|
|
101
|
+
depthFactor *= depthScale;
|
|
102
|
+
depthFactor = max(0.0001, min(1.0, depthFactor));
|
|
103
|
+
|
|
104
|
+
#ifdef USE_BLUR
|
|
105
|
+
blur = blur * min(1.0, depthFactor + depthToBlurRatioBias);
|
|
106
|
+
merge = merge * min(1.0, depthFactor + 0.5);
|
|
107
|
+
#else
|
|
108
|
+
merge = merge * depthFactor;
|
|
109
|
+
#endif
|
|
110
|
+
|
|
111
|
+
#endif
|
|
112
|
+
|
|
113
|
+
float reflectorRoughnessFactor = roughness;
|
|
114
|
+
#ifdef USE_ROUGHNESSMAP
|
|
115
|
+
vec4 reflectorTexelRoughness = texture2D( roughnessMap, vUv );
|
|
116
|
+
reflectorRoughnessFactor *= reflectorTexelRoughness.g;
|
|
117
|
+
#endif
|
|
118
|
+
|
|
119
|
+
#ifdef USE_BLUR
|
|
120
|
+
blurFactor = min(1.0, mixBlur * reflectorRoughnessFactor);
|
|
121
|
+
merge = mix(merge, blur, blurFactor);
|
|
122
|
+
#endif
|
|
123
|
+
|
|
124
|
+
vec4 newMerge = vec4(0.0, 0.0, 0.0, 1.0);
|
|
125
|
+
newMerge.r = (merge.r - 0.5) * mixContrast + 0.5;
|
|
126
|
+
newMerge.g = (merge.g - 0.5) * mixContrast + 0.5;
|
|
127
|
+
newMerge.b = (merge.b - 0.5) * mixContrast + 0.5;
|
|
128
|
+
|
|
129
|
+
diffuseColor.rgb = diffuseColor.rgb * ((1.0 - min(1.0, mirror)) + newMerge.rgb * mixStrength);
|
|
130
|
+
`);
|
|
131
|
+
}
|
|
132
|
+
get tDiffuse() {
|
|
133
|
+
return this._tDiffuse.value;
|
|
134
|
+
}
|
|
135
|
+
set tDiffuse(v) {
|
|
136
|
+
this._tDiffuse.value = v;
|
|
137
|
+
}
|
|
138
|
+
get tDepth() {
|
|
139
|
+
return this._tDepth.value;
|
|
140
|
+
}
|
|
141
|
+
set tDepth(v) {
|
|
142
|
+
this._tDepth.value = v;
|
|
143
|
+
}
|
|
144
|
+
get distortionMap() {
|
|
145
|
+
return this._distortionMap.value;
|
|
146
|
+
}
|
|
147
|
+
set distortionMap(v) {
|
|
148
|
+
this._distortionMap.value = v;
|
|
149
|
+
}
|
|
150
|
+
get tDiffuseBlur() {
|
|
151
|
+
return this._tDiffuseBlur.value;
|
|
152
|
+
}
|
|
153
|
+
set tDiffuseBlur(v) {
|
|
154
|
+
this._tDiffuseBlur.value = v;
|
|
155
|
+
}
|
|
156
|
+
get textureMatrix() {
|
|
157
|
+
return this._textureMatrix.value;
|
|
158
|
+
}
|
|
159
|
+
set textureMatrix(v) {
|
|
160
|
+
this._textureMatrix.value = v;
|
|
161
|
+
}
|
|
162
|
+
get hasBlur() {
|
|
163
|
+
return this._hasBlur.value;
|
|
164
|
+
}
|
|
165
|
+
set hasBlur(v) {
|
|
166
|
+
this._hasBlur.value = v;
|
|
167
|
+
}
|
|
168
|
+
get mirror() {
|
|
169
|
+
return this._mirror.value;
|
|
170
|
+
}
|
|
171
|
+
set mirror(v) {
|
|
172
|
+
this._mirror.value = v;
|
|
173
|
+
}
|
|
174
|
+
get mixBlur() {
|
|
175
|
+
return this._mixBlur.value;
|
|
176
|
+
}
|
|
177
|
+
set mixBlur(v) {
|
|
178
|
+
this._mixBlur.value = v;
|
|
179
|
+
}
|
|
180
|
+
get mixStrength() {
|
|
181
|
+
return this._blurStrength.value;
|
|
182
|
+
}
|
|
183
|
+
set mixStrength(v) {
|
|
184
|
+
this._blurStrength.value = v;
|
|
185
|
+
}
|
|
186
|
+
get minDepthThreshold() {
|
|
187
|
+
return this._minDepthThreshold.value;
|
|
188
|
+
}
|
|
189
|
+
set minDepthThreshold(v) {
|
|
190
|
+
this._minDepthThreshold.value = v;
|
|
191
|
+
}
|
|
192
|
+
get maxDepthThreshold() {
|
|
193
|
+
return this._maxDepthThreshold.value;
|
|
194
|
+
}
|
|
195
|
+
set maxDepthThreshold(v) {
|
|
196
|
+
this._maxDepthThreshold.value = v;
|
|
197
|
+
}
|
|
198
|
+
get depthScale() {
|
|
199
|
+
return this._depthScale.value;
|
|
200
|
+
}
|
|
201
|
+
set depthScale(v) {
|
|
202
|
+
this._depthScale.value = v;
|
|
203
|
+
}
|
|
204
|
+
get depthToBlurRatioBias() {
|
|
205
|
+
return this._depthToBlurRatioBias.value;
|
|
206
|
+
}
|
|
207
|
+
set depthToBlurRatioBias(v) {
|
|
208
|
+
this._depthToBlurRatioBias.value = v;
|
|
209
|
+
}
|
|
210
|
+
get distortion() {
|
|
211
|
+
return this._distortion.value;
|
|
212
|
+
}
|
|
213
|
+
set distortion(v) {
|
|
214
|
+
this._distortion.value = v;
|
|
215
|
+
}
|
|
216
|
+
get mixContrast() {
|
|
217
|
+
return this._mixContrast.value;
|
|
218
|
+
}
|
|
219
|
+
set mixContrast(v) {
|
|
220
|
+
this._mixContrast.value = v;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1yZWZsZWN0b3ItbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc2hhZGVycy9zcmMvbWVzaC1yZWZsZWN0b3ItbWF0ZXJpYWwvbWVzaC1yZWZsZWN0b3ItbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFXLG9CQUFvQixFQUFXLE1BQU0sT0FBTyxDQUFDO0FBSS9ELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxvQkFBb0I7SUFpQjNELFlBQVksVUFBVSxHQUFHLEVBQUU7UUFDdkIsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBakJkLFlBQU8sR0FBa0MsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDekQsbUJBQWMsR0FBa0MsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDaEUsY0FBUyxHQUFrQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUMzRCxrQkFBYSxHQUFrQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUMvRCxtQkFBYyxHQUFrQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNoRSxhQUFRLEdBQXVCLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ2hELFlBQU8sR0FBc0IsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDNUMsYUFBUSxHQUFzQixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUM3QyxrQkFBYSxHQUFzQixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNsRCx1QkFBa0IsR0FBc0IsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDdkQsdUJBQWtCLEdBQXNCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3JELGdCQUFXLEdBQXNCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFD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SUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFDRCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO0lBQ25DLENBQUM7SUFDRCxJQUFJLFdBQVcsQ0FBQyxDQUFTO1FBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNoQyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNYXRyaXg0LCBNZXNoU3RhbmRhcmRNYXRlcmlhbCwgVGV4dHVyZSB9IGZyb20gJ3RocmVlJztcblxudHlwZSBVbmluaXRpYWxpemVkVW5pZm9ybTxWYWx1ZT4gPSB7IHZhbHVlOiBWYWx1ZSB8IG51bGwgfTtcblxuZXhwb3J0IGNsYXNzIE1lc2hSZWZsZWN0b3JNYXRlcmlhbCBleHRlbmRzIE1lc2hTdGFuZGFyZE1hdGVyaWFsIHtcbiAgICBwcml2YXRlIF90RGVwdGg6IFVuaW5pdGlhbGl6ZWRVbmlmb3JtPFRleHR1cmU+ID0geyB2YWx1ZTogbnVsbCB9O1xuICAgIHByaXZhdGUgX2Rpc3RvcnRpb25NYXA6IFVuaW5pdGlhbGl6ZWRVbmlmb3JtPFRleHR1cmU+ID0geyB2YWx1ZTogbnVsbCB9O1xuICAgIHByaXZhdGUgX3REaWZmdXNlOiBVbmluaXRpYWxpemVkVW5pZm9ybTxUZXh0dXJlPiA9IHsgdmFsdWU6IG51bGwgfTtcbiAgICBwcml2YXRlIF90RGlmZnVzZUJsdXI6IFVuaW5pdGlhbGl6ZWRVbmlmb3JtPFRleHR1cmU+ID0geyB2YWx1ZTogbnVsbCB9O1xuICAgIHByaXZhdGUgX3RleHR1cmVNYXRyaXg6IFVuaW5pdGlhbGl6ZWRVbmlmb3JtPE1hdHJpeDQ+ID0geyB2YWx1ZTogbnVsbCB9O1xuICAgIHByaXZhdGUgX2hhc0JsdXI6IHsgdmFsdWU6IGJvb2xlYW4gfSA9IHsgdmFsdWU6IGZhbHNlIH07XG4gICAgcHJpdmF0ZSBfbWlycm9yOiB7IHZhbHVlOiBudW1iZXIgfSA9IHsgdmFsdWU6IDAuMCB9O1xuICAgIHByaXZhdGUgX21peEJsdXI6IHsgdmFsdWU6IG51bWJlciB9ID0geyB2YWx1ZTogMC4wIH07XG4gICAgcHJpdmF0ZSBfYmx1clN0cmVuZ3RoOiB7IHZhbHVlOiBudW1iZXIgfSA9IHsgdmFsdWU6IDAuNSB9O1xuICAgIHByaXZhdGUgX21pbkRlcHRoVGhyZXNob2xkOiB7IHZhbHVlOiBudW1iZXIgfSA9IHsgdmFsdWU6IDAuOSB9O1xuICAgIHByaXZhdGUgX21heERlcHRoVGhyZXNob2xkOiB7IHZhbHVlOiBudW1iZXIgfSA9IHsgdmFsdWU6IDEgfTtcbiAgICBwcml2YXRlIF9kZXB0aFNjYWxlOiB7IHZhbHVlOiBudW1iZXIgfSA9IHsgdmFsdWU6IDAgfTtcbiAgICBwcml2YXRlIF9kZXB0aFRvQmx1clJhdGlvQmlhczogeyB2YWx1ZTogbnVtYmVyIH0gPSB7IHZhbHVlOiAwLjI1IH07XG4gICAgcHJpdmF0ZSBfZGlzdG9ydGlvbjogeyB2YWx1ZTogbnVtYmVyIH0gPSB7IHZhbHVlOiAxIH07XG4gICAgcHJpdmF0ZSBfbWl4Q29udHJhc3Q6IHsgdmFsdWU6IG51bWJlciB9ID0geyB2YWx1ZTogMS4wIH07XG5cbiAgICBjb25zdHJ1Y3RvcihwYXJhbWV0ZXJzID0ge30pIHtcbiAgICAgICAgc3VwZXIocGFyYW1ldGVycyk7XG4gICAgICAgIHRoaXMuc2V0VmFsdWVzKHBhcmFtZXRlcnMpO1xuICAgIH1cbiAgICBvdmVycmlkZSBvbkJlZm9yZUNvbXBpbGUoc2hhZGVyOiBhbnkpIHtcbiAgICAgICAgaWYgKCFzaGFkZXIuZGVmaW5lcz8uVVNFX1VWKSB7XG4gICAgICAgICAgICBzaGFkZXIuZGVmaW5lcy5VU0VfVVYgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBzaGFkZXIudW5pZm9ybXMuaGFzQmx1ciA9IHRoaXMuX2hhc0JsdXI7XG4gICAgICAgIHNoYWRlci51bmlmb3Jtcy50RGlmZnVzZSA9IHRoaXMuX3REaWZmdXNlO1xuICAgICAgICBzaGFkZXIudW5pZm9ybXMudERlcHRoID0gdGhpcy5fdERlcHRoO1xuICAgICAgICBzaGFkZXIudW5pZm9ybXMuZGlzdG9ydGlvbk1hcCA9IHRoaXMuX2Rpc3RvcnRpb25NYXA7XG4gICAgICAgIHNoYWRlci51bmlmb3Jtcy50RGlmZnVzZUJsdXIgPSB0aGlzLl90RGlmZnVzZUJsdXI7XG4gICAgICAgIHNoYWRlci51bmlmb3Jtcy50ZXh0dXJlTWF0cml4ID0gdGhpcy5fdGV4dHVyZU1hdHJpeDtcbiAgICAgICAgc2hhZGVyLnVuaWZvcm1zLm1pcnJvciA9IHRoaXMuX21pcnJvcjtcbiAgICAgICAgc2hhZGVyLnVuaWZvcm1zLm1peEJsdXIgPSB0aGlzLl9taXhCbHVyO1xuICAgICAgICBzaGFkZXIudW5pZm9ybXMubWl4U3RyZW5ndGggPSB0aGlzLl9ibHVyU3RyZW5ndGg7XG4gICAgICAgIHNoYWRlci51bmlmb3Jtcy5taW5EZXB0aFRocmVzaG9sZCA9IHRoaXMuX21pbkRlcHRoVGhyZXNob2xkO1xuICAgICAgICBzaGFkZXIudW5pZm9ybXMubWF4RGVwdGhUaHJlc2hvbGQgPSB0aGlzLl9tYXhEZXB0aFRocmVzaG9sZDtcbiAgICAgICAgc2hhZGVyLnVuaWZvcm1zLmRlcHRoU2NhbGUgPSB0aGlzLl9kZXB0aFNjYWxlO1xuICAgICAgICBzaGFkZXIudW5pZm9ybXMuZGVwdGhUb0JsdXJSYXRpb0JpYXMgPSB0aGlzLl9kZXB0aFRvQmx1clJhdGlvQmlhcztcbiAgICAgICAgc2hhZGVyLnVuaWZvcm1zLmRpc3RvcnRpb24gPSB0aGlzLl9kaXN0b3J0aW9uO1xuICAgICAgICBzaGFkZXIudW5pZm9ybXMubWl4Q29udHJhc3QgPSB0aGlzLl9taXhDb250cmFzdDtcbiAgICAgICAgc2hhZGVyLnZlcnRleFNoYWRlciA9IGBcbiAgICAgICAgdW5pZm9ybSBtYXQ0IHRleHR1cmVNYXRyaXg7XG4gICAgICAgIHZhcnlpbmcgdmVjNCBteV92VXY7XG4gICAgICAke3NoYWRlci52ZXJ0ZXhTaGFkZXJ9YDtcbiAgICAgICAgc2hhZGVyLnZlcnRleFNoYWRlciA9IHNoYWRlci52ZXJ0ZXhTaGFkZXIucmVwbGFjZShcbiAgICAgICAgICAgICcjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+JyxcbiAgICAgICAgICAgIGAjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG4gICAgICAgIG15X3ZVdiA9IHRleHR1cmVNYXRyaXggKiB2ZWM0KCBwb3NpdGlvbiwgMS4wICk7XG4gICAgICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG1vZGVsVmlld01hdHJpeCAqIHZlYzQoIHBvc2l0aW9uLCAxLjAgKTtgXG4gICAgICAgICk7XG4gICAgICAgIHNoYWRlci5mcmFnbWVudFNoYWRlciA9IGBcbiAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdERpZmZ1c2U7XG4gICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHREaWZmdXNlQmx1cjtcbiAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdERlcHRoO1xuICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBkaXN0b3J0aW9uTWFwO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IGRpc3RvcnRpb247XG4gICAgICAgIHVuaWZvcm0gZmxvYXQgY2FtZXJhTmVhcjtcblx0XHRcdCAgdW5pZm9ybSBmbG9hdCBjYW1lcmFGYXI7XG4gICAgICAgIHVuaWZvcm0gYm9vbCBoYXNCbHVyO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IG1peEJsdXI7XG4gICAgICAgIHVuaWZvcm0gZmxvYXQgbWlycm9yO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IG1peFN0cmVuZ3RoO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IG1pbkRlcHRoVGhyZXNob2xkO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IG1heERlcHRoVGhyZXNob2xkO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IG1peENvbnRyYXN0O1xuICAgICAgICB1bmlmb3JtIGZsb2F0IGRlcHRoU2NhbGU7XG4gICAgICAgIHVuaWZvcm0gZmxvYXQgZGVwdGhUb0JsdXJSYXRpb0JpYXM7XG4gICAgICAgIHZhcnlpbmcgdmVjNCBteV92VXY7XG4gICAgICAgICR7c2hhZGVyLmZyYWdtZW50U2hhZGVyfWA7XG4gICAgICAgIHNoYWRlci5mcmFnbWVudFNoYWRlciA9IHNoYWRlci5mcmFnbWVudFNoYWRlci5yZXBsYWNlKFxuICAgICAgICAgICAgJyNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD4nLFxuICAgICAgICAgICAgYCNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD5cblxuICAgICAgZmxvYXQgZGlzdG9ydGlvbkZhY3RvciA9IDAuMDtcbiAgICAgICNpZmRlZiBVU0VfRElTVE9SVElPTlxuICAgICAgICBkaXN0b3J0aW9uRmFjdG9yID0gdGV4dHVyZTJEKGRpc3RvcnRpb25NYXAsIHZVdikuciAqIGRpc3RvcnRpb247XG4gICAgICAjZW5kaWZcblxuICAgICAgdmVjNCBuZXdfdlV2ID0gbXlfdlV2O1xuICAgICAgbmV3X3ZVdi54ICs9IGRpc3RvcnRpb25GYWN0b3I7XG4gICAgICBuZXdfdlV2LnkgKz0gZGlzdG9ydGlvbkZhY3RvcjtcblxuICAgICAgdmVjNCBiYXNlID0gdGV4dHVyZTJEUHJvaih0RGlmZnVzZSwgbmV3X3ZVdik7XG4gICAgICB2ZWM0IGJsdXIgPSB0ZXh0dXJlMkRQcm9qKHREaWZmdXNlQmx1ciwgbmV3X3ZVdik7XG5cbiAgICAgIHZlYzQgbWVyZ2UgPSBiYXNlO1xuXG4gICAgICAjaWZkZWYgVVNFX05PUk1BTE1BUFxuICAgICAgICB2ZWMyIG5vcm1hbF91diA9IHZlYzIoMC4wKTtcbiAgICAgICAgdmVjNCBub3JtYWxDb2xvciA9IHRleHR1cmUyRChub3JtYWxNYXAsIHZVdiAqIG5vcm1hbFNjYWxlKTtcbiAgICAgICAgdmVjMyBteV9ub3JtYWwgPSBub3JtYWxpemUoIHZlYzMoIG5vcm1hbENvbG9yLnIgKiAyLjAgLSAxLjAsIG5vcm1hbENvbG9yLmIsICBub3JtYWxDb2xvci5nICogMi4wIC0gMS4wICkgKTtcbiAgICAgICAgdmVjMyBjb29yZCA9IG5ld192VXYueHl6IC8gbmV3X3ZVdi53O1xuICAgICAgICBub3JtYWxfdXYgPSBjb29yZC54eSArIGNvb3JkLnogKiBteV9ub3JtYWwueHogKiAwLjA1O1xuICAgICAgICB2ZWM0IGJhc2Vfbm9ybWFsID0gdGV4dHVyZTJEKHREaWZmdXNlLCBub3JtYWxfdXYpO1xuICAgICAgICB2ZWM0IGJsdXJfbm9ybWFsID0gdGV4dHVyZTJEKHREaWZmdXNlQmx1ciwgbm9ybWFsX3V2KTtcbiAgICAgICAgbWVyZ2UgPSBiYXNlX25vcm1hbDtcbiAgICAgICAgYmx1ciA9IGJsdXJfbm9ybWFsO1xuICAgICAgI2VuZGlmXG5cbiAgICAgIGZsb2F0IGRlcHRoRmFjdG9yID0gMC4wMDAxO1xuICAgICAgZmxvYXQgYmx1ckZhY3RvciA9IDAuMDtcblxuICAgICAgI2lmZGVmIFVTRV9ERVBUSFxuICAgICAgICB2ZWM0IGRlcHRoID0gdGV4dHVyZTJEUHJvaih0RGVwdGgsIG5ld192VXYpO1xuICAgICAgICBkZXB0aEZhY3RvciA9IHNtb290aHN0ZXAobWluRGVwdGhUaHJlc2hvbGQsIG1heERlcHRoVGhyZXNob2xkLCAxLjAtKGRlcHRoLnIgKiBkZXB0aC5hKSk7XG4gICAgICAgIGRlcHRoRmFjdG9yICo9IGRlcHRoU2NhbGU7XG4gICAgICAgIGRlcHRoRmFjdG9yID0gbWF4KDAuMDAwMSwgbWluKDEuMCwgZGVwdGhGYWN0b3IpKTtcblxuICAgICAgICAjaWZkZWYgVVNFX0JMVVJcbiAgICAgICAgICBibHVyID0gYmx1ciAqIG1pbigxLjAsIGRlcHRoRmFjdG9yICsgZGVwdGhUb0JsdXJSYXRpb0JpYXMpO1xuICAgICAgICAgIG1lcmdlID0gbWVyZ2UgKiBtaW4oMS4wLCBkZXB0aEZhY3RvciArIDAuNSk7XG4gICAgICAgICNlbHNlXG4gICAgICAgICAgbWVyZ2UgPSBtZXJnZSAqIGRlcHRoRmFjdG9yO1xuICAgICAgICAjZW5kaWZcblxuICAgICAgI2VuZGlmXG5cbiAgICAgIGZsb2F0IHJlZmxlY3RvclJvdWdobmVzc0ZhY3RvciA9IHJvdWdobmVzcztcbiAgICAgICNpZmRlZiBVU0VfUk9VR0hORVNTTUFQXG4gICAgICAgIHZlYzQgcmVmbGVjdG9yVGV4ZWxSb3VnaG5lc3MgPSB0ZXh0dXJlMkQoIHJvdWdobmVzc01hcCwgdlV2ICk7XG4gICAgICAgIHJlZmxlY3RvclJvdWdobmVzc0ZhY3RvciAqPSByZWZsZWN0b3JUZXhlbFJvdWdobmVzcy5nO1xuICAgICAgI2VuZGlmXG5cbiAgICAgICNpZmRlZiBVU0VfQkxVUlxuICAgICAgICBibHVyRmFjdG9yID0gbWluKDEuMCwgbWl4Qmx1ciAqIHJlZmxlY3RvclJvdWdobmVzc0ZhY3Rvcik7XG4gICAgICAgIG1lcmdlID0gbWl4KG1lcmdlLCBibHVyLCBibHVyRmFjdG9yKTtcbiAgICAgICNlbmRpZlxuXG4gICAgICB2ZWM0IG5ld01lcmdlID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApO1xuICAgICAgbmV3TWVyZ2UuciA9IChtZXJnZS5yIC0gMC41KSAqIG1peENvbnRyYXN0ICsgMC41O1xuICAgICAgbmV3TWVyZ2UuZyA9IChtZXJnZS5nIC0gMC41KSAqIG1peENvbnRyYXN0ICsgMC41O1xuICAgICAgbmV3TWVyZ2UuYiA9IChtZXJnZS5iIC0gMC41KSAqIG1peENvbnRyYXN0ICsgMC41O1xuXG4gICAgICBkaWZmdXNlQ29sb3IucmdiID0gZGlmZnVzZUNvbG9yLnJnYiAqICgoMS4wIC0gbWluKDEuMCwgbWlycm9yKSkgKyBuZXdNZXJnZS5yZ2IgKiBtaXhTdHJlbmd0aCk7XG4gICAgICBgXG4gICAgICAgICk7XG4gICAgfVxuICAgIGdldCB0RGlmZnVzZSgpOiBUZXh0dXJlIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl90RGlmZnVzZS52YWx1ZTtcbiAgICB9XG4gICAgc2V0IHREaWZmdXNlKHY6IFRleHR1cmUgfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX3REaWZmdXNlLnZhbHVlID0gdjtcbiAgICB9XG4gICAgZ2V0IHREZXB0aCgpOiBUZXh0dXJlIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl90RGVwdGgudmFsdWU7XG4gICAgfVxuICAgIHNldCB0RGVwdGgodjogVGV4dHVyZSB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fdERlcHRoLnZhbHVlID0gdjtcbiAgICB9XG4gICAgZ2V0IGRpc3RvcnRpb25NYXAoKTogVGV4dHVyZSB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzdG9ydGlvbk1hcC52YWx1ZTtcbiAgICB9XG4gICAgc2V0IGRpc3RvcnRpb25NYXAodjogVGV4dHVyZSB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fZGlzdG9ydGlvbk1hcC52YWx1ZSA9IHY7XG4gICAgfVxuICAgIGdldCB0RGlmZnVzZUJsdXIoKTogVGV4dHVyZSB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fdERpZmZ1c2VCbHVyLnZhbHVlO1xuICAgIH1cbiAgICBzZXQgdERpZmZ1c2VCbHVyKHY6IFRleHR1cmUgfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX3REaWZmdXNlQmx1ci52YWx1ZSA9IHY7XG4gICAgfVxuICAgIGdldCB0ZXh0dXJlTWF0cml4KCk6IE1hdHJpeDQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RleHR1cmVNYXRyaXgudmFsdWU7XG4gICAgfVxuICAgIHNldCB0ZXh0dXJlTWF0cml4KHY6IE1hdHJpeDQgfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX3RleHR1cmVNYXRyaXgudmFsdWUgPSB2O1xuICAgIH1cbiAgICBnZXQgaGFzQmx1cigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc0JsdXIudmFsdWU7XG4gICAgfVxuICAgIHNldCBoYXNCbHVyKHY6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5faGFzQmx1ci52YWx1ZSA9IHY7XG4gICAgfVxuICAgIGdldCBtaXJyb3IoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21pcnJvci52YWx1ZTtcbiAgICB9XG4gICAgc2V0IG1pcnJvcih2OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fbWlycm9yLnZhbHVlID0gdjtcbiAgICB9XG4gICAgZ2V0IG1peEJsdXIoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21peEJsdXIudmFsdWU7XG4gICAgfVxuICAgIHNldCBtaXhCbHVyKHY6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9taXhCbHVyLnZhbHVlID0gdjtcbiAgICB9XG4gICAgZ2V0IG1peFN0cmVuZ3RoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ibHVyU3RyZW5ndGgudmFsdWU7XG4gICAgfVxuICAgIHNldCBtaXhTdHJlbmd0aCh2OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fYmx1clN0cmVuZ3RoLnZhbHVlID0gdjtcbiAgICB9XG4gICAgZ2V0IG1pbkRlcHRoVGhyZXNob2xkKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9taW5EZXB0aFRocmVzaG9sZC52YWx1ZTtcbiAgICB9XG4gICAgc2V0IG1pbkRlcHRoVGhyZXNob2xkKHY6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9taW5EZXB0aFRocmVzaG9sZC52YWx1ZSA9IHY7XG4gICAgfVxuICAgIGdldCBtYXhEZXB0aFRocmVzaG9sZCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWF4RGVwdGhUaHJlc2hvbGQudmFsdWU7XG4gICAgfVxuICAgIHNldCBtYXhEZXB0aFRocmVzaG9sZCh2OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fbWF4RGVwdGhUaHJlc2hvbGQudmFsdWUgPSB2O1xuICAgIH1cbiAgICBnZXQgZGVwdGhTY2FsZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVwdGhTY2FsZS52YWx1ZTtcbiAgICB9XG4gICAgc2V0IGRlcHRoU2NhbGUodjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2RlcHRoU2NhbGUudmFsdWUgPSB2O1xuICAgIH1cbiAgICBnZXQgZGVwdGhUb0JsdXJSYXRpb0JpYXMoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlcHRoVG9CbHVyUmF0aW9CaWFzLnZhbHVlO1xuICAgIH1cbiAgICBzZXQgZGVwdGhUb0JsdXJSYXRpb0JpYXModjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2RlcHRoVG9CbHVyUmF0aW9CaWFzLnZhbHVlID0gdjtcbiAgICB9XG4gICAgZ2V0IGRpc3RvcnRpb24oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3RvcnRpb24udmFsdWU7XG4gICAgfVxuICAgIHNldCBkaXN0b3J0aW9uKHY6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9kaXN0b3J0aW9uLnZhbHVlID0gdjtcbiAgICB9XG4gICAgZ2V0IG1peENvbnRyYXN0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9taXhDb250cmFzdC52YWx1ZTtcbiAgICB9XG4gICAgc2V0IG1peENvbnRyYXN0KHY6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9taXhDb250cmFzdC52YWx1ZSA9IHY7XG4gICAgfVxufVxuIl19
|