angular-three-soba 2.0.0-beta.26 → 2.0.0-beta.261
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 +62 -4
- package/abstractions/README.md +278 -2
- package/abstractions/index.d.ts +11 -6
- package/abstractions/lib/catmull-rom-line.d.ts +648 -0
- package/abstractions/lib/cubic-bezier-line.d.ts +19 -0
- package/abstractions/lib/edges.d.ts +850 -0
- package/abstractions/lib/gradient-texture.d.ts +24 -0
- package/abstractions/lib/grid.d.ts +339 -0
- package/abstractions/lib/helper.d.ts +25 -0
- package/abstractions/lib/line.d.ts +41 -0
- package/abstractions/lib/prism-geometry.d.ts +30 -0
- package/abstractions/lib/quadratic-bezier-line.d.ts +21 -0
- package/abstractions/lib/text-3d.d.ts +338 -0
- package/abstractions/lib/text.d.ts +55 -0
- package/cameras/README.md +91 -2
- package/cameras/index.d.ts +4 -4
- package/cameras/lib/camera-content.d.ts +10 -0
- package/cameras/lib/cube-camera.d.ts +38 -0
- package/cameras/lib/orthographic-camera.d.ts +40 -0
- package/cameras/lib/perspective-camera.d.ts +36 -0
- package/controls/README.md +95 -2
- package/controls/index.d.ts +2 -1
- package/controls/lib/camera-controls.d.ts +31 -0
- package/controls/lib/orbit-controls.d.ts +38 -0
- package/esm2022/abstractions/index.mjs +12 -7
- package/esm2022/abstractions/lib/catmull-rom-line.mjs +76 -0
- package/esm2022/abstractions/lib/cubic-bezier-line.mjs +51 -0
- package/esm2022/abstractions/lib/edges.mjs +70 -0
- package/esm2022/abstractions/lib/gradient-texture.mjs +91 -0
- package/esm2022/abstractions/lib/grid.mjs +103 -0
- package/esm2022/abstractions/lib/helper.mjs +80 -0
- package/esm2022/abstractions/lib/line.mjs +123 -0
- package/esm2022/abstractions/lib/prism-geometry.mjs +55 -0
- package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +73 -0
- package/esm2022/abstractions/lib/text-3d.mjs +98 -0
- package/esm2022/abstractions/lib/text.mjs +92 -0
- package/esm2022/cameras/index.mjs +5 -5
- package/esm2022/cameras/lib/camera-content.mjs +14 -0
- package/esm2022/cameras/lib/cube-camera.mjs +111 -0
- package/esm2022/cameras/lib/orthographic-camera.mjs +131 -0
- package/esm2022/cameras/lib/perspective-camera.mjs +104 -0
- package/esm2022/controls/index.mjs +3 -2
- package/esm2022/controls/lib/camera-controls.mjs +127 -0
- package/esm2022/controls/lib/orbit-controls.mjs +126 -0
- package/esm2022/loaders/index.mjs +6 -5
- package/esm2022/loaders/lib/font-loader.mjs +49 -0
- package/esm2022/loaders/lib/gltf-loader.mjs +33 -0
- package/esm2022/loaders/lib/loader.mjs +109 -0
- package/esm2022/loaders/lib/progress.mjs +51 -0
- package/esm2022/loaders/lib/texture-loader.mjs +32 -0
- package/esm2022/materials/index.mjs +7 -7
- package/esm2022/materials/lib/custom-shader-material.mjs +71 -0
- package/esm2022/materials/lib/mesh-distort-material.mjs +42 -0
- package/esm2022/materials/lib/mesh-reflector-material.mjs +278 -0
- package/esm2022/materials/lib/mesh-refraction-material.mjs +144 -0
- package/esm2022/materials/lib/mesh-transmission-material.mjs +188 -0
- package/esm2022/materials/lib/mesh-wobble-material.mjs +42 -0
- package/esm2022/misc/index.mjs +10 -14
- package/esm2022/misc/lib/animations.mjs +74 -0
- package/esm2022/misc/lib/bake-shadows.mjs +26 -0
- package/esm2022/misc/lib/computed-attribute.mjs +56 -0
- package/esm2022/misc/lib/constants.mjs +5 -0
- package/esm2022/misc/lib/decal.mjs +135 -0
- package/esm2022/misc/lib/deprecated.mjs +15 -0
- package/esm2022/misc/lib/depth-buffer.mjs +39 -0
- package/esm2022/misc/lib/fbo.mjs +89 -0
- package/esm2022/misc/lib/sampler.mjs +121 -0
- package/esm2022/shaders/index.mjs +3 -18
- package/esm2022/shaders/lib/grid-material.mjs +81 -0
- package/esm2022/shaders/lib/mesh-refraction-material.mjs +163 -0
- package/esm2022/staging/index.mjs +19 -22
- package/esm2022/staging/lib/accumulative-shadows.mjs +182 -0
- package/esm2022/staging/lib/backdrop.mjs +73 -0
- package/esm2022/staging/lib/bb-anchor.mjs +58 -0
- package/esm2022/staging/lib/bounds.mjs +286 -0
- package/esm2022/staging/lib/camera-shake.mjs +69 -0
- package/esm2022/staging/lib/caustics.mjs +188 -0
- package/esm2022/staging/lib/center.mjs +113 -0
- package/esm2022/staging/lib/contact-shadows.mjs +201 -0
- package/esm2022/staging/lib/environment.mjs +465 -0
- package/esm2022/staging/lib/float.mjs +60 -0
- package/esm2022/staging/lib/lightformer.mjs +107 -0
- package/esm2022/staging/lib/matcap-texture.mjs +81 -0
- package/esm2022/staging/lib/normal-texture.mjs +85 -0
- package/esm2022/staging/lib/randomized-lights.mjs +104 -0
- package/esm2022/staging/lib/render-texture.mjs +213 -0
- package/esm2022/staging/lib/sky.mjs +86 -0
- package/esm2022/staging/lib/spot-light.mjs +450 -0
- package/esm2022/staging/lib/stage.mjs +236 -0
- package/esm2022/vanilla-exports/angular-three-soba-vanilla-exports.mjs +5 -0
- package/esm2022/vanilla-exports/index.mjs +3 -0
- package/fesm2022/angular-three-soba-abstractions.mjs +739 -718
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +260 -307
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +174 -110
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +151 -129
- package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-materials.mjs +511 -764
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +405 -2149
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-shaders.mjs +33 -1373
- package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +2329 -3538
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2022/angular-three-soba-vanilla-exports.mjs +6 -0
- package/fesm2022/angular-three-soba-vanilla-exports.mjs.map +1 -0
- package/loaders/README.md +130 -2
- package/loaders/index.d.ts +5 -4
- package/loaders/lib/font-loader.d.ts +27 -0
- package/loaders/lib/gltf-loader.d.ts +21 -0
- package/loaders/lib/loader.d.ts +29 -0
- package/loaders/lib/progress.d.ts +9 -0
- package/loaders/lib/texture-loader.d.ts +13 -0
- package/materials/README.md +160 -2
- package/materials/index.d.ts +6 -6
- package/materials/lib/custom-shader-material.d.ts +19 -0
- package/materials/lib/mesh-distort-material.d.ts +18 -0
- package/materials/lib/mesh-reflector-material.d.ts +50 -0
- package/materials/lib/mesh-refraction-material.d.ts +42 -0
- package/materials/lib/mesh-transmission-material.d.ts +77 -0
- package/materials/lib/mesh-wobble-material.d.ts +15 -0
- package/metadata.json +1 -1
- package/misc/README.md +217 -2
- package/misc/index.d.ts +9 -13
- package/misc/lib/animations.d.ts +14 -0
- package/misc/lib/computed-attribute.d.ts +69 -0
- package/misc/lib/constants.d.ts +1 -0
- package/misc/lib/decal.d.ts +27 -0
- package/misc/lib/deprecated.d.ts +14 -0
- package/misc/lib/depth-buffer.d.ts +8 -0
- package/misc/lib/fbo.d.ts +47 -0
- package/misc/lib/sampler.d.ts +73 -0
- package/package.json +60 -38
- package/shaders/index.d.ts +2 -17
- package/shaders/lib/grid-material.d.ts +69 -0
- package/shaders/lib/mesh-refraction-material.d.ts +11 -0
- package/staging/README.md +472 -2
- package/staging/index.d.ts +18 -21
- package/staging/lib/accumulative-shadows.d.ts +75 -0
- package/staging/lib/backdrop.d.ts +22 -0
- package/staging/lib/bb-anchor.d.ts +17 -0
- package/staging/lib/bounds.d.ts +47 -0
- package/staging/lib/camera-shake.d.ts +29 -0
- package/staging/lib/caustics.d.ts +53 -0
- package/staging/lib/center.d.ts +422 -0
- package/staging/lib/contact-shadows.d.ts +45 -0
- package/staging/lib/environment.d.ts +159 -0
- package/staging/lib/float.d.ts +19 -0
- package/staging/lib/lightformer.d.ts +334 -0
- package/staging/lib/matcap-texture.d.ts +32 -0
- package/staging/lib/normal-texture.d.ts +37 -0
- package/staging/lib/randomized-lights.d.ts +54 -0
- package/staging/lib/render-texture.d.ts +64 -0
- package/staging/lib/sky.d.ts +32 -0
- package/staging/lib/spot-light.d.ts +120 -0
- package/staging/lib/stage.d.ts +376 -0
- package/vanilla-exports/README.md +3 -0
- package/vanilla-exports/index.d.ts +27 -0
- package/web-types.json +1 -1
- package/abstractions/billboard/billboard.d.ts +0 -28
- package/abstractions/detailed/detailed.d.ts +0 -26
- package/abstractions/edges/edges.d.ts +0 -34
- package/abstractions/grid/grid.d.ts +0 -50
- package/abstractions/text/text.d.ts +0 -82
- package/abstractions/text-3d/text-3d.d.ts +0 -84
- package/assets/distort.vert.glsl +0 -1
- package/cameras/camera/camera-content.d.ts +0 -13
- package/cameras/camera/camera.d.ts +0 -26
- package/cameras/cube-camera/cube-camera.d.ts +0 -69
- package/cameras/orthographic-camera/orthographic-camera.d.ts +0 -37
- package/cameras/perspective-camera/perspective-camera.d.ts +0 -18
- package/controls/orbit-controls/orbit-controls.d.ts +0 -54
- package/esm2022/abstractions/billboard/billboard.mjs +0 -74
- package/esm2022/abstractions/detailed/detailed.mjs +0 -64
- package/esm2022/abstractions/edges/edges.mjs +0 -88
- package/esm2022/abstractions/grid/grid.mjs +0 -180
- package/esm2022/abstractions/text/text.mjs +0 -274
- package/esm2022/abstractions/text-3d/text-3d.mjs +0 -172
- package/esm2022/cameras/camera/camera-content.mjs +0 -21
- package/esm2022/cameras/camera/camera.mjs +0 -77
- package/esm2022/cameras/cube-camera/cube-camera.mjs +0 -161
- package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +0 -102
- package/esm2022/cameras/perspective-camera/perspective-camera.mjs +0 -46
- package/esm2022/controls/orbit-controls/orbit-controls.mjs +0 -185
- package/esm2022/gizmos/angular-three-soba-gizmos.mjs +0 -5
- package/esm2022/gizmos/gizmo-helper/gizmo-helper.mjs +0 -197
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -93
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -150
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.mjs +0 -66
- package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -71
- package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -195
- package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -272
- package/esm2022/gizmos/index.mjs +0 -4
- package/esm2022/loaders/gltf-loader/gltf-loader.mjs +0 -30
- package/esm2022/loaders/loader/loader.mjs +0 -138
- package/esm2022/loaders/progress/progress.mjs +0 -52
- package/esm2022/loaders/texture-loader/texture-loader.mjs +0 -28
- package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +0 -82
- package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +0 -367
- package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +0 -171
- package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +0 -278
- package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +0 -68
- package/esm2022/materials/point-material/point-material.mjs +0 -50
- package/esm2022/misc/animations/animations.mjs +0 -59
- package/esm2022/misc/bake-shadows/bake-shadows.mjs +0 -24
- package/esm2022/misc/caustics/caustics.mjs +0 -387
- package/esm2022/misc/decal/decal.mjs +0 -187
- package/esm2022/misc/depth-buffer/depth-buffer.mjs +0 -44
- package/esm2022/misc/example/example.mjs +0 -160
- package/esm2022/misc/fbo/fbo.mjs +0 -47
- package/esm2022/misc/html/html-wrapper.mjs +0 -478
- package/esm2022/misc/html/html.mjs +0 -304
- package/esm2022/misc/sampler/sampler.mjs +0 -142
- package/esm2022/misc/shadow/shadow.mjs +0 -111
- package/esm2022/misc/stats-gl/stats-gl.mjs +0 -61
- package/esm2022/misc/trail/trail.mjs +0 -209
- package/esm2022/misc/trail-texture/inject-trail-texture.mjs +0 -17
- package/esm2022/misc/trail-texture/trail-texture.mjs +0 -106
- package/esm2022/modifiers/angular-three-soba-modifiers.mjs +0 -5
- package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +0 -64
- package/esm2022/modifiers/index.mjs +0 -2
- package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +0 -44
- package/esm2022/performances/adaptive-events/adaptive-events.mjs +0 -27
- package/esm2022/performances/angular-three-soba-performances.mjs +0 -5
- package/esm2022/performances/index.mjs +0 -8
- package/esm2022/performances/instances/instances.mjs +0 -220
- package/esm2022/performances/instances/position-mesh.mjs +0 -52
- package/esm2022/performances/points/points-input.mjs +0 -64
- package/esm2022/performances/points/points.mjs +0 -326
- package/esm2022/performances/points/position-point.mjs +0 -54
- package/esm2022/performances/segments/segment-object.mjs +0 -9
- package/esm2022/performances/segments/segments.mjs +0 -182
- package/esm2022/shaders/blur-pass/blur-pass.mjs +0 -61
- package/esm2022/shaders/caustics/caustics-material.mjs +0 -130
- package/esm2022/shaders/caustics/caustics-projection-material.mjs +0 -31
- package/esm2022/shaders/convolution-material/convolution-material.mjs +0 -94
- package/esm2022/shaders/discard-material/discard-material.mjs +0 -3
- package/esm2022/shaders/grid-material/grid-material.mjs +0 -77
- package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +0 -56
- package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +0 -223
- package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +0 -170
- package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +0 -268
- package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +0 -37
- package/esm2022/shaders/shader-material/shader-material.mjs +0 -34
- package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +0 -25
- package/esm2022/shaders/sparkles-material/sparkles-material.mjs +0 -33
- package/esm2022/shaders/spot-light-material/spot-light-material.mjs +0 -86
- package/esm2022/shaders/star-field-material/star-field-material.mjs +0 -33
- package/esm2022/shaders/wireframe-material/wireframe-material.mjs +0 -247
- package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +0 -267
- package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +0 -108
- package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +0 -206
- package/esm2022/staging/backdrop/backdrop.mjs +0 -77
- package/esm2022/staging/bb-anchor/bb-anchor.mjs +0 -69
- package/esm2022/staging/bounds/bounds.mjs +0 -308
- package/esm2022/staging/camera-shake/camera-shake.mjs +0 -123
- package/esm2022/staging/center/center.mjs +0 -165
- package/esm2022/staging/cloud/cloud.mjs +0 -158
- package/esm2022/staging/contact-shadows/contact-shadows.mjs +0 -246
- package/esm2022/staging/environment/assets.mjs +0 -13
- package/esm2022/staging/environment/environment-cube.mjs +0 -47
- package/esm2022/staging/environment/environment-ground.mjs +0 -41
- package/esm2022/staging/environment/environment-input.mjs +0 -119
- package/esm2022/staging/environment/environment-map.mjs +0 -53
- package/esm2022/staging/environment/environment-portal.mjs +0 -113
- package/esm2022/staging/environment/environment.mjs +0 -61
- package/esm2022/staging/environment/utils.mjs +0 -106
- package/esm2022/staging/float/float.mjs +0 -94
- package/esm2022/staging/matcap-texture/matcap-texture.mjs +0 -64
- package/esm2022/staging/normal-texture/normal-texture.mjs +0 -53
- package/esm2022/staging/sky/sky.mjs +0 -119
- package/esm2022/staging/sparkles/sparkles.mjs +0 -164
- package/esm2022/staging/spot-light/shadow-mesh-input.mjs +0 -63
- package/esm2022/staging/spot-light/shadow-mesh.mjs +0 -266
- package/esm2022/staging/spot-light/spot-light-input.mjs +0 -84
- package/esm2022/staging/spot-light/spot-light.mjs +0 -81
- package/esm2022/staging/spot-light/volumetric-mesh.mjs +0 -98
- package/esm2022/staging/stage/stage.mjs +0 -389
- package/esm2022/staging/stars/stars.mjs +0 -147
- package/esm2022/staging/wireframe/wireframe-input.mjs +0 -191
- package/esm2022/staging/wireframe/wireframe.mjs +0 -228
- package/esm2022/utils/angular-three-soba-utils.mjs +0 -5
- package/esm2022/utils/content/content.mjs +0 -15
- package/esm2022/utils/index.mjs +0 -2
- package/fesm2022/angular-three-soba-gizmos.mjs +0 -1043
- package/fesm2022/angular-three-soba-gizmos.mjs.map +0 -1
- package/fesm2022/angular-three-soba-modifiers.mjs +0 -71
- package/fesm2022/angular-three-soba-modifiers.mjs.map +0 -1
- package/fesm2022/angular-three-soba-performances.mjs +0 -956
- package/fesm2022/angular-three-soba-performances.mjs.map +0 -1
- package/fesm2022/angular-three-soba-utils.mjs +0 -22
- package/fesm2022/angular-three-soba-utils.mjs.map +0 -1
- package/gizmos/README.md +0 -3
- package/gizmos/gizmo-helper/gizmo-helper.d.ts +0 -69
- package/gizmos/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -12
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -29
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.d.ts +0 -33
- package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -10
- package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -40
- package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -30
- package/gizmos/index.d.ts +0 -3
- package/loaders/gltf-loader/gltf-loader.d.ts +0 -10
- package/loaders/loader/loader.d.ts +0 -33
- package/loaders/progress/progress.d.ts +0 -9
- package/loaders/texture-loader/texture-loader.d.ts +0 -7
- package/materials/mesh-distort-material/mesh-distort-material.d.ts +0 -40
- package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +0 -99
- package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +0 -62
- package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +0 -107
- package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +0 -29
- package/materials/point-material/point-material.d.ts +0 -24
- package/misc/animations/animations.d.ts +0 -15
- package/misc/caustics/caustics.d.ts +0 -87
- package/misc/decal/decal.d.ts +0 -49
- package/misc/depth-buffer/depth-buffer.d.ts +0 -9
- package/misc/example/example.d.ts +0 -81
- package/misc/fbo/fbo.d.ts +0 -17
- package/misc/html/html-wrapper.d.ts +0 -559
- package/misc/html/html.d.ts +0 -214
- package/misc/sampler/sampler.d.ts +0 -67
- package/misc/shadow/shadow.d.ts +0 -37
- package/misc/stats-gl/stats-gl.d.ts +0 -24
- package/misc/trail/trail.d.ts +0 -57
- package/misc/trail-texture/inject-trail-texture.d.ts +0 -9
- package/misc/trail-texture/trail-texture.d.ts +0 -50
- package/modifiers/README.md +0 -3
- package/modifiers/curve-modifier/curve-modifier.d.ts +0 -23
- package/modifiers/index.d.ts +0 -1
- package/performances/README.md +0 -3
- package/performances/adaptive-dpr/adaptive-dpr.d.ts +0 -14
- package/performances/adaptive-events/adaptive-events.d.ts +0 -9
- package/performances/index.d.ts +0 -7
- package/performances/instances/instances.d.ts +0 -79
- package/performances/instances/position-mesh.d.ts +0 -10
- package/performances/points/points-input.d.ts +0 -32
- package/performances/points/points.d.ts +0 -92
- package/performances/points/position-point.d.ts +0 -11
- package/performances/segments/segment-object.d.ts +0 -7
- package/performances/segments/segments.d.ts +0 -124
- package/shaders/blur-pass/blur-pass.d.ts +0 -23
- package/shaders/caustics/caustics-material.d.ts +0 -4
- package/shaders/caustics/caustics-projection-material.d.ts +0 -4
- package/shaders/convolution-material/convolution-material.d.ts +0 -7
- package/shaders/discard-material/discard-material.d.ts +0 -3
- package/shaders/grid-material/grid-material.d.ts +0 -37
- package/shaders/mesh-distort-material/mesh-distort-material.d.ts +0 -295
- package/shaders/mesh-reflector-material/mesh-reflector-material.d.ts +0 -50
- package/shaders/mesh-refraction-material/mesh-refraction-material.d.ts +0 -4
- package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +0 -25
- package/shaders/mesh-wobble-material/mesh-wobble-material.d.ts +0 -16
- package/shaders/shader-material/shader-material.d.ts +0 -6
- package/shaders/soft-shadow-material/soft-shadow-material.d.ts +0 -19
- package/shaders/sparkles-material/sparkles-material.d.ts +0 -17
- package/shaders/spot-light-material/spot-light-material.d.ts +0 -13
- package/shaders/star-field-material/star-field-material.d.ts +0 -13
- package/shaders/wireframe-material/wireframe-material.d.ts +0 -58
- package/staging/accumulative-shadows/accumulative-shadows.d.ts +0 -146
- package/staging/accumulative-shadows/progressive-light-map.d.ts +0 -34
- package/staging/accumulative-shadows/randomized-lights.d.ts +0 -90
- package/staging/backdrop/backdrop.d.ts +0 -30
- package/staging/bb-anchor/bb-anchor.d.ts +0 -27
- package/staging/bounds/bounds.d.ts +0 -134
- package/staging/camera-shake/camera-shake.d.ts +0 -43
- package/staging/center/center.d.ts +0 -70
- package/staging/cloud/cloud.d.ts +0 -51
- package/staging/contact-shadows/contact-shadows.d.ts +0 -70
- package/staging/environment/assets.d.ts +0 -13
- package/staging/environment/environment-cube.d.ts +0 -15
- package/staging/environment/environment-ground.d.ts +0 -13
- package/staging/environment/environment-input.d.ts +0 -68
- package/staging/environment/environment-map.d.ts +0 -16
- package/staging/environment/environment-portal.d.ts +0 -18
- package/staging/environment/environment.d.ts +0 -8
- package/staging/environment/utils.d.ts +0 -7
- package/staging/float/float.d.ts +0 -31
- package/staging/matcap-texture/matcap-texture.d.ts +0 -13
- package/staging/normal-texture/normal-texture.d.ts +0 -16
- package/staging/sky/sky.d.ts +0 -48
- package/staging/sparkles/sparkles.d.ts +0 -63
- package/staging/spot-light/shadow-mesh-input.d.ts +0 -29
- package/staging/spot-light/shadow-mesh.d.ts +0 -37
- package/staging/spot-light/spot-light-input.d.ts +0 -38
- package/staging/spot-light/spot-light.d.ts +0 -39
- package/staging/spot-light/volumetric-mesh.d.ts +0 -24
- package/staging/stage/stage.d.ts +0 -130
- package/staging/stars/stars.d.ts +0 -45
- package/staging/wireframe/wireframe-input.d.ts +0 -65
- package/staging/wireframe/wireframe.d.ts +0 -28
- package/utils/README.md +0 -3
- package/utils/content/content.d.ts +0 -8
- package/utils/index.d.ts +0 -1
- /package/misc/{bake-shadows → lib}/bake-shadows.d.ts +0 -0
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
import * as THREE from 'three';
|
|
2
|
-
export class MeshTransmissionMaterial extends THREE.MeshPhysicalMaterial {
|
|
3
|
-
constructor(samples = 6, transmissionSampler = false) {
|
|
4
|
-
super();
|
|
5
|
-
this.uniforms = {
|
|
6
|
-
chromaticAberration: { value: 0.05 },
|
|
7
|
-
// Transmission must always be 0, unless transmissionSampler is being used
|
|
8
|
-
transmission: { value: 0 },
|
|
9
|
-
// Instead a workaround is used, see below for reasons why
|
|
10
|
-
_transmission: { value: 1 },
|
|
11
|
-
transmissionMap: { value: null },
|
|
12
|
-
// Roughness is 1 in THREE.MeshPhysicalMaterial but it makes little sense in a transmission material
|
|
13
|
-
roughness: { value: 0 },
|
|
14
|
-
thickness: { value: 0 },
|
|
15
|
-
thicknessMap: { value: null },
|
|
16
|
-
attenuationDistance: { value: Infinity },
|
|
17
|
-
attenuationColor: { value: new THREE.Color('white') },
|
|
18
|
-
anisotropicBlur: { value: 0.1 },
|
|
19
|
-
time: { value: 0 },
|
|
20
|
-
distortion: { value: 0.0 },
|
|
21
|
-
distortionScale: { value: 0.5 },
|
|
22
|
-
temporalDistortion: { value: 0.0 },
|
|
23
|
-
buffer: { value: null },
|
|
24
|
-
};
|
|
25
|
-
this.onBeforeCompile = (shader) => {
|
|
26
|
-
shader.uniforms = {
|
|
27
|
-
...shader.uniforms,
|
|
28
|
-
...this.uniforms,
|
|
29
|
-
};
|
|
30
|
-
// If the transmission sampler is active inject a flag
|
|
31
|
-
if (transmissionSampler)
|
|
32
|
-
shader.defines['USE_SAMPLER'] = '';
|
|
33
|
-
// Otherwise we do use use .transmission and must therefore force USE_TRANSMISSION
|
|
34
|
-
// because threejs won't inject it for us
|
|
35
|
-
else
|
|
36
|
-
shader.defines['USE_TRANSMISSION'] = '';
|
|
37
|
-
// Head
|
|
38
|
-
shader.fragmentShader =
|
|
39
|
-
/*glsl*/ `
|
|
40
|
-
uniform float chromaticAberration;
|
|
41
|
-
uniform float anisotropicBlur;
|
|
42
|
-
uniform float time;
|
|
43
|
-
uniform float distortion;
|
|
44
|
-
uniform float distortionScale;
|
|
45
|
-
uniform float temporalDistortion;
|
|
46
|
-
uniform sampler2D buffer;
|
|
47
|
-
|
|
48
|
-
vec3 random3(vec3 c) {
|
|
49
|
-
float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
|
|
50
|
-
vec3 r;
|
|
51
|
-
r.z = fract(512.0*j);
|
|
52
|
-
j *= .125;
|
|
53
|
-
r.x = fract(512.0*j);
|
|
54
|
-
j *= .125;
|
|
55
|
-
r.y = fract(512.0*j);
|
|
56
|
-
return r-0.5;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
float seed = 0.0;
|
|
60
|
-
uint hash( uint x ) {
|
|
61
|
-
x += ( x << 10u );
|
|
62
|
-
x ^= ( x >> 6u );
|
|
63
|
-
x += ( x << 3u );
|
|
64
|
-
x ^= ( x >> 11u );
|
|
65
|
-
x += ( x << 15u );
|
|
66
|
-
return x;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
// Compound versions of the hashing algorithm I whipped together.
|
|
70
|
-
uint hash( uvec2 v ) { return hash( v.x ^ hash(v.y) ); }
|
|
71
|
-
uint hash( uvec3 v ) { return hash( v.x ^ hash(v.y) ^ hash(v.z) ); }
|
|
72
|
-
uint hash( uvec4 v ) { return hash( v.x ^ hash(v.y) ^ hash(v.z) ^ hash(v.w) ); }
|
|
73
|
-
|
|
74
|
-
// Construct a float with half-open range [0:1] using low 23 bits.
|
|
75
|
-
// All zeroes yields 0.0, all ones yields the next smallest representable value below 1.0.
|
|
76
|
-
float floatConstruct( uint m ) {
|
|
77
|
-
const uint ieeeMantissa = 0x007FFFFFu; // binary32 mantissa bitmask
|
|
78
|
-
const uint ieeeOne = 0x3F800000u; // 1.0 in IEEE binary32
|
|
79
|
-
m &= ieeeMantissa; // Keep only mantissa bits (fractional part)
|
|
80
|
-
m |= ieeeOne; // Add fractional part to 1.0
|
|
81
|
-
float f = uintBitsToFloat( m ); // Range [1:2]
|
|
82
|
-
return f - 1.0; // Range [0:1]
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
// Pseudo-random value in half-open range [0:1].
|
|
86
|
-
float random( float x ) { return floatConstruct(hash(floatBitsToUint(x))); }
|
|
87
|
-
float random( vec2 v ) { return floatConstruct(hash(floatBitsToUint(v))); }
|
|
88
|
-
float random( vec3 v ) { return floatConstruct(hash(floatBitsToUint(v))); }
|
|
89
|
-
float random( vec4 v ) { return floatConstruct(hash(floatBitsToUint(v))); }
|
|
90
|
-
|
|
91
|
-
float rand() {
|
|
92
|
-
float result = random(vec3(gl_FragCoord.xy, seed));
|
|
93
|
-
seed += 1.0;
|
|
94
|
-
return result;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
const float F3 = 0.3333333;
|
|
98
|
-
const float G3 = 0.1666667;
|
|
99
|
-
|
|
100
|
-
float snoise(vec3 p) {
|
|
101
|
-
vec3 s = floor(p + dot(p, vec3(F3)));
|
|
102
|
-
vec3 x = p - s + dot(s, vec3(G3));
|
|
103
|
-
vec3 e = step(vec3(0.0), x - x.yzx);
|
|
104
|
-
vec3 i1 = e*(1.0 - e.zxy);
|
|
105
|
-
vec3 i2 = 1.0 - e.zxy*(1.0 - e);
|
|
106
|
-
vec3 x1 = x - i1 + G3;
|
|
107
|
-
vec3 x2 = x - i2 + 2.0*G3;
|
|
108
|
-
vec3 x3 = x - 1.0 + 3.0*G3;
|
|
109
|
-
vec4 w, d;
|
|
110
|
-
w.x = dot(x, x);
|
|
111
|
-
w.y = dot(x1, x1);
|
|
112
|
-
w.z = dot(x2, x2);
|
|
113
|
-
w.w = dot(x3, x3);
|
|
114
|
-
w = max(0.6 - w, 0.0);
|
|
115
|
-
d.x = dot(random3(s), x);
|
|
116
|
-
d.y = dot(random3(s + i1), x1);
|
|
117
|
-
d.z = dot(random3(s + i2), x2);
|
|
118
|
-
d.w = dot(random3(s + 1.0), x3);
|
|
119
|
-
w *= w;
|
|
120
|
-
w *= w;
|
|
121
|
-
d *= w;
|
|
122
|
-
return dot(d, vec4(52.0));
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
float snoiseFractal(vec3 m) {
|
|
126
|
-
return 0.5333333* snoise(m)
|
|
127
|
-
+0.2666667* snoise(2.0*m)
|
|
128
|
-
+0.1333333* snoise(4.0*m)
|
|
129
|
-
+0.0666667* snoise(8.0*m);
|
|
130
|
-
}\n` + shader.fragmentShader;
|
|
131
|
-
// Remove transmission
|
|
132
|
-
shader.fragmentShader = shader.fragmentShader.replace('#include <transmission_pars_fragment>',
|
|
133
|
-
/*glsl*/ `
|
|
134
|
-
#ifdef USE_TRANSMISSION
|
|
135
|
-
// Transmission code is based on glTF-Sampler-Viewer
|
|
136
|
-
// https://github.com/KhronosGroup/glTF-Sample-Viewer
|
|
137
|
-
uniform float _transmission;
|
|
138
|
-
uniform float thickness;
|
|
139
|
-
uniform float attenuationDistance;
|
|
140
|
-
uniform vec3 attenuationColor;
|
|
141
|
-
#ifdef USE_TRANSMISSIONMAP
|
|
142
|
-
uniform sampler2D transmissionMap;
|
|
143
|
-
#endif
|
|
144
|
-
#ifdef USE_THICKNESSMAP
|
|
145
|
-
uniform sampler2D thicknessMap;
|
|
146
|
-
#endif
|
|
147
|
-
uniform vec2 transmissionSamplerSize;
|
|
148
|
-
uniform sampler2D transmissionSamplerMap;
|
|
149
|
-
uniform mat4 modelMatrix;
|
|
150
|
-
uniform mat4 projectionMatrix;
|
|
151
|
-
varying vec3 vWorldPosition;
|
|
152
|
-
vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {
|
|
153
|
-
// Direction of refracted light.
|
|
154
|
-
vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );
|
|
155
|
-
// Compute rotation-independant scaling of the model matrix.
|
|
156
|
-
vec3 modelScale;
|
|
157
|
-
modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );
|
|
158
|
-
modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );
|
|
159
|
-
modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );
|
|
160
|
-
// The thickness is specified in local space.
|
|
161
|
-
return normalize( refractionVector ) * thickness * modelScale;
|
|
162
|
-
}
|
|
163
|
-
float applyIorToRoughness( const in float roughness, const in float ior ) {
|
|
164
|
-
// Scale roughness with IOR so that an IOR of 1.0 results in no microfacet refraction and
|
|
165
|
-
// an IOR of 1.5 results in the default amount of microfacet refraction.
|
|
166
|
-
return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
|
|
167
|
-
}
|
|
168
|
-
vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {
|
|
169
|
-
float framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
|
|
170
|
-
#ifdef USE_SAMPLER
|
|
171
|
-
#ifdef texture2DLodEXT
|
|
172
|
-
return texture2DLodEXT(transmissionSamplerMap, fragCoord.xy, framebufferLod);
|
|
173
|
-
#else
|
|
174
|
-
return texture2D(transmissionSamplerMap, fragCoord.xy, framebufferLod);
|
|
175
|
-
#endif
|
|
176
|
-
#else
|
|
177
|
-
return texture2D(buffer, fragCoord.xy);
|
|
178
|
-
#endif
|
|
179
|
-
}
|
|
180
|
-
vec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {
|
|
181
|
-
if ( isinf( attenuationDistance ) ) {
|
|
182
|
-
// Attenuation distance is +∞, i.e. the transmitted color is not attenuated at all.
|
|
183
|
-
return radiance;
|
|
184
|
-
} else {
|
|
185
|
-
// Compute light attenuation using Beer's law.
|
|
186
|
-
vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;
|
|
187
|
-
vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); // Beer's law
|
|
188
|
-
return transmittance * radiance;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,
|
|
192
|
-
const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,
|
|
193
|
-
const in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,
|
|
194
|
-
const in vec3 attenuationColor, const in float attenuationDistance ) {
|
|
195
|
-
vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
|
|
196
|
-
vec3 refractedRayExit = position + transmissionRay;
|
|
197
|
-
// Project refracted vector on the framebuffer, while mapping to normalized device coordinates.
|
|
198
|
-
vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );
|
|
199
|
-
vec2 refractionCoords = ndcPos.xy / ndcPos.w;
|
|
200
|
-
refractionCoords += 1.0;
|
|
201
|
-
refractionCoords /= 2.0;
|
|
202
|
-
// Sample framebuffer to get pixel the refracted ray hits.
|
|
203
|
-
vec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );
|
|
204
|
-
vec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );
|
|
205
|
-
// Get the specular component.
|
|
206
|
-
vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );
|
|
207
|
-
return vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );
|
|
208
|
-
}
|
|
209
|
-
#endif\n`);
|
|
210
|
-
// Add refraction
|
|
211
|
-
shader.fragmentShader = shader.fragmentShader.replace('#include <transmission_fragment>',
|
|
212
|
-
/*glsl*/ `
|
|
213
|
-
// Improve the refraction to use the world pos
|
|
214
|
-
material.transmission = _transmission;
|
|
215
|
-
material.transmissionAlpha = 1.0;
|
|
216
|
-
material.thickness = thickness;
|
|
217
|
-
material.attenuationDistance = attenuationDistance;
|
|
218
|
-
material.attenuationColor = attenuationColor;
|
|
219
|
-
#ifdef USE_TRANSMISSIONMAP
|
|
220
|
-
material.transmission *= texture2D( transmissionMap, vUv ).r;
|
|
221
|
-
#endif
|
|
222
|
-
#ifdef USE_THICKNESSMAP
|
|
223
|
-
material.thickness *= texture2D( thicknessMap, vUv ).g;
|
|
224
|
-
#endif
|
|
225
|
-
|
|
226
|
-
vec3 pos = vWorldPosition;
|
|
227
|
-
vec3 v = normalize( cameraPosition - pos );
|
|
228
|
-
vec3 n = inverseTransformDirection( normal, viewMatrix );
|
|
229
|
-
vec3 transmission = vec3(0.0);
|
|
230
|
-
float transmissionR, transmissionB, transmissionG;
|
|
231
|
-
float randomCoords = rand();
|
|
232
|
-
float thickness_smear = thickness * max(pow(roughnessFactor, 0.33), anisotropicBlur);
|
|
233
|
-
vec3 distortionNormal = vec3(0.0);
|
|
234
|
-
vec3 temporalOffset = vec3(time, -time, -time) * temporalDistortion;
|
|
235
|
-
if (distortion > 0.0) {
|
|
236
|
-
distortionNormal = distortion * vec3(snoiseFractal(vec3((pos * distortionScale + temporalOffset))), snoiseFractal(vec3(pos.zxy * distortionScale - temporalOffset)), snoiseFractal(vec3(pos.yxz * distortionScale + temporalOffset)));
|
|
237
|
-
}
|
|
238
|
-
for (float i = 0.0; i < ${samples}.0; i ++) {
|
|
239
|
-
vec3 sampleNorm = normalize(n + roughnessFactor * roughnessFactor * 2.0 * normalize(vec3(rand() - 0.5, rand() - 0.5, rand() - 0.5)) * pow(rand(), 0.33) + distortionNormal);
|
|
240
|
-
transmissionR = getIBLVolumeRefraction(
|
|
241
|
-
sampleNorm, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,
|
|
242
|
-
pos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness + thickness_smear * (i + randomCoords) / float(${samples}),
|
|
243
|
-
material.attenuationColor, material.attenuationDistance
|
|
244
|
-
).r;
|
|
245
|
-
transmissionG = getIBLVolumeRefraction(
|
|
246
|
-
sampleNorm, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,
|
|
247
|
-
pos, modelMatrix, viewMatrix, projectionMatrix, material.ior * (1.0 + chromaticAberration * (i + randomCoords) / float(${samples})) , material.thickness + thickness_smear * (i + randomCoords) / float(${samples}),
|
|
248
|
-
material.attenuationColor, material.attenuationDistance
|
|
249
|
-
).g;
|
|
250
|
-
transmissionB = getIBLVolumeRefraction(
|
|
251
|
-
sampleNorm, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,
|
|
252
|
-
pos, modelMatrix, viewMatrix, projectionMatrix, material.ior * (1.0 + 2.0 * chromaticAberration * (i + randomCoords) / float(${samples})), material.thickness + thickness_smear * (i + randomCoords) / float(${samples}),
|
|
253
|
-
material.attenuationColor, material.attenuationDistance
|
|
254
|
-
).b;
|
|
255
|
-
transmission.r += transmissionR;
|
|
256
|
-
transmission.g += transmissionG;
|
|
257
|
-
transmission.b += transmissionB;
|
|
258
|
-
}
|
|
259
|
-
transmission /= ${samples}.0;
|
|
260
|
-
totalDiffuse = mix( totalDiffuse, transmission.rgb, material.transmission );\n`);
|
|
261
|
-
};
|
|
262
|
-
Object.keys(this.uniforms).forEach((name) => Object.defineProperty(this, name, {
|
|
263
|
-
get: () => this.uniforms[name].value,
|
|
264
|
-
set: (v) => (this.uniforms[name].value = v),
|
|
265
|
-
}));
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC10cmFuc21pc3Npb24tbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc2hhZGVycy9zcmMvbWVzaC10cmFuc21pc3Npb24tbWF0ZXJpYWwvbWVzaC10cmFuc21pc3Npb24tbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFNL0IsTUFBTSxPQUFPLHdCQUF5QixTQUFRLEtBQUssQ0FBQyxvQkFBb0I7SUFtQnZFLFlBQVksT0FBTyxHQUFHLENBQUMsRUFBRSxtQkFBbUIsR0FBRyxLQUFLO1FBQ25ELEtBQUssRUFBRSxDQUFDO1FBRVIsSUFBSSxDQUFDLFFBQVEsR0FBRztZQUNmLG1CQUFtQixFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtZQUNwQywwRUFBMEU7WUFDMUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUMxQiwwREFBMEQ7WUFDMUQsYUFBYSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUMzQixlQUFlLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ2hDLG9HQUFvRztZQUNwRyxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1lBQ3ZCLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7WUFDdkIsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtZQUM3QixtQkFBbUIsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDeEMsZ0JBQWdCLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3JELGVBQWUsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7WUFDL0IsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUNsQixVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO1lBQzFCLGVBQWUsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7WUFDL0Isa0JBQWtCLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO1lBQ2xDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7U0FDdkIsQ0FBQztRQUVGLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxNQUE2RCxFQUFFLEVBQUU7WUFDeEYsTUFBTSxDQUFDLFFBQVEsR0FBRztnQkFDakIsR0FBRyxNQUFNLENBQUMsUUFBUTtnQkFDbEIsR0FBRyxJQUFJLENBQUMsUUFBUTthQUNoQixDQUFDO1lBRUYsc0RBQXNEO1lBQ3RELElBQUksbUJBQW1CO2dCQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzVELGtGQUFrRjtZQUNsRix5Q0FBeUM7O2dCQUNwQyxNQUFNLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxDQUFDO1lBRTdDLE9BQU87WUFDUCxNQUFNLENBQUMsY0FBYztnQkFDcEIsUUFBUSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1VBMkZILEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQztZQUVoQyxzQkFBc0I7WUFDdEIsTUFBTSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FDcEQsdUNBQXVDO1lBQ3ZDLFFBQVEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQkE0RUksQ0FDYixDQUFDO1lBRUYsaUJBQWlCO1lBQ2pCLE1BQU0sQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQ3BELGtDQUFrQztZQUNsQyxRQUFRLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tDQTBCcUIsT0FBTzs7OzsrSUFJc0csT0FBTzs7Ozs7c0lBS2hCLE9BQU8sMEVBQTBFLE9BQU87Ozs7OzJJQUtuRixPQUFPLHlFQUF5RSxPQUFPOzs7Ozs7OzBCQU94TSxPQUFPO3VGQUNzRCxDQUNuRixDQUFDO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDM0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQ2pDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQWtDLENBQUMsQ0FBQyxLQUFLO1lBQ2xFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQWtDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1NBQ3pFLENBQUMsQ0FDRixDQUFDO0lBQ0gsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG5pbnRlcmZhY2UgVW5pZm9ybTxUPiB7XG5cdHZhbHVlOiBUO1xufVxuXG5leHBvcnQgY2xhc3MgTWVzaFRyYW5zbWlzc2lvbk1hdGVyaWFsIGV4dGVuZHMgVEhSRUUuTWVzaFBoeXNpY2FsTWF0ZXJpYWwge1xuXHR1bmlmb3Jtczoge1xuXHRcdGNocm9tYXRpY0FiZXJyYXRpb246IFVuaWZvcm08bnVtYmVyPjtcblx0XHR0cmFuc21pc3Npb246IFVuaWZvcm08bnVtYmVyPjtcblx0XHR0cmFuc21pc3Npb25NYXA6IFVuaWZvcm08VEhSRUUuVGV4dHVyZSB8IG51bGw+O1xuXHRcdF90cmFuc21pc3Npb246IFVuaWZvcm08bnVtYmVyPjtcblx0XHR0aGlja25lc3M6IFVuaWZvcm08bnVtYmVyPjtcblx0XHRyb3VnaG5lc3M6IFVuaWZvcm08bnVtYmVyPjtcblx0XHR0aGlja25lc3NNYXA6IFVuaWZvcm08VEhSRUUuVGV4dHVyZSB8IG51bGw+O1xuXHRcdGF0dGVudWF0aW9uRGlzdGFuY2U6IFVuaWZvcm08bnVtYmVyPjtcblx0XHRhdHRlbnVhdGlvbkNvbG9yOiBVbmlmb3JtPFRIUkVFLkNvbG9yPjtcblx0XHRhbmlzb3Ryb3BpY0JsdXI6IFVuaWZvcm08bnVtYmVyPjtcblx0XHR0aW1lOiBVbmlmb3JtPG51bWJlcj47XG5cdFx0ZGlzdG9ydGlvbjogVW5pZm9ybTxudW1iZXI+O1xuXHRcdGRpc3RvcnRpb25TY2FsZTogVW5pZm9ybTxudW1iZXI+O1xuXHRcdHRlbXBvcmFsRGlzdG9ydGlvbjogVW5pZm9ybTxudW1iZXI+O1xuXHRcdGJ1ZmZlcjogVW5pZm9ybTxUSFJFRS5UZXh0dXJlIHwgbnVsbD47XG5cdH07XG5cblx0Y29uc3RydWN0b3Ioc2FtcGxlcyA9IDYsIHRyYW5zbWlzc2lvblNhbXBsZXIgPSBmYWxzZSkge1xuXHRcdHN1cGVyKCk7XG5cblx0XHR0aGlzLnVuaWZvcm1zID0ge1xuXHRcdFx0Y2hyb21hdGljQWJlcnJhdGlvbjogeyB2YWx1ZTogMC4wNSB9LFxuXHRcdFx0Ly8gVHJhbnNtaXNzaW9uIG11c3QgYWx3YXlzIGJlIDAsIHVubGVzcyB0cmFuc21pc3Npb25TYW1wbGVyIGlzIGJlaW5nIHVzZWRcblx0XHRcdHRyYW5zbWlzc2lvbjogeyB2YWx1ZTogMCB9LFxuXHRcdFx0Ly8gSW5zdGVhZCBhIHdvcmthcm91bmQgaXMgdXNlZCwgc2VlIGJlbG93IGZvciByZWFzb25zIHdoeVxuXHRcdFx0X3RyYW5zbWlzc2lvbjogeyB2YWx1ZTogMSB9LFxuXHRcdFx0dHJhbnNtaXNzaW9uTWFwOiB7IHZhbHVlOiBudWxsIH0sXG5cdFx0XHQvLyBSb3VnaG5lc3MgaXMgMSBpbiBUSFJFRS5NZXNoUGh5c2ljYWxNYXRlcmlhbCBidXQgaXQgbWFrZXMgbGl0dGxlIHNlbnNlIGluIGEgdHJhbnNtaXNzaW9uIG1hdGVyaWFsXG5cdFx0XHRyb3VnaG5lc3M6IHsgdmFsdWU6IDAgfSxcblx0XHRcdHRoaWNrbmVzczogeyB2YWx1ZTogMCB9LFxuXHRcdFx0dGhpY2tuZXNzTWFwOiB7IHZhbHVlOiBudWxsIH0sXG5cdFx0XHRhdHRlbnVhdGlvbkRpc3RhbmNlOiB7IHZhbHVlOiBJbmZpbml0eSB9LFxuXHRcdFx0YXR0ZW51YXRpb25Db2xvcjogeyB2YWx1ZTogbmV3IFRIUkVFLkNvbG9yKCd3aGl0ZScpIH0sXG5cdFx0XHRhbmlzb3Ryb3BpY0JsdXI6IHsgdmFsdWU6IDAuMSB9LFxuXHRcdFx0dGltZTogeyB2YWx1ZTogMCB9LFxuXHRcdFx0ZGlzdG9ydGlvbjogeyB2YWx1ZTogMC4wIH0sXG5cdFx0XHRkaXN0b3J0aW9uU2NhbGU6IHsgdmFsdWU6IDAuNSB9LFxuXHRcdFx0dGVtcG9yYWxEaXN0b3J0aW9uOiB7IHZhbHVlOiAwLjAgfSxcblx0XHRcdGJ1ZmZlcjogeyB2YWx1ZTogbnVsbCB9LFxuXHRcdH07XG5cblx0XHR0aGlzLm9uQmVmb3JlQ29tcGlsZSA9IChzaGFkZXI6IFRIUkVFLlNoYWRlciAmIHsgZGVmaW5lczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB9KSA9PiB7XG5cdFx0XHRzaGFkZXIudW5pZm9ybXMgPSB7XG5cdFx0XHRcdC4uLnNoYWRlci51bmlmb3Jtcyxcblx0XHRcdFx0Li4udGhpcy51bmlmb3Jtcyxcblx0XHRcdH07XG5cblx0XHRcdC8vIElmIHRoZSB0cmFuc21pc3Npb24gc2FtcGxlciBpcyBhY3RpdmUgaW5qZWN0IGEgZmxhZ1xuXHRcdFx0aWYgKHRyYW5zbWlzc2lvblNhbXBsZXIpIHNoYWRlci5kZWZpbmVzWydVU0VfU0FNUExFUiddID0gJyc7XG5cdFx0XHQvLyBPdGhlcndpc2Ugd2UgZG8gdXNlIHVzZSAudHJhbnNtaXNzaW9uIGFuZCBtdXN0IHRoZXJlZm9yZSBmb3JjZSBVU0VfVFJBTlNNSVNTSU9OXG5cdFx0XHQvLyBiZWNhdXNlIHRocmVlanMgd29uJ3QgaW5qZWN0IGl0IGZvciB1c1xuXHRcdFx0ZWxzZSBzaGFkZXIuZGVmaW5lc1snVVNFX1RSQU5TTUlTU0lPTiddID0gJyc7XG5cblx0XHRcdC8vIEhlYWRcblx0XHRcdHNoYWRlci5mcmFnbWVudFNoYWRlciA9XG5cdFx0XHRcdC8qZ2xzbCovIGBcbiAgICAgIHVuaWZvcm0gZmxvYXQgY2hyb21hdGljQWJlcnJhdGlvbjtcbiAgICAgIHVuaWZvcm0gZmxvYXQgYW5pc290cm9waWNCbHVyO1xuICAgICAgdW5pZm9ybSBmbG9hdCB0aW1lO1xuICAgICAgdW5pZm9ybSBmbG9hdCBkaXN0b3J0aW9uO1xuICAgICAgdW5pZm9ybSBmbG9hdCBkaXN0b3J0aW9uU2NhbGU7XG4gICAgICB1bmlmb3JtIGZsb2F0IHRlbXBvcmFsRGlzdG9ydGlvbjtcbiAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIGJ1ZmZlcjtcblxuICAgICAgdmVjMyByYW5kb20zKHZlYzMgYykge1xuICAgICAgICBmbG9hdCBqID0gNDA5Ni4wKnNpbihkb3QoYyx2ZWMzKDE3LjAsIDU5LjQsIDE1LjApKSk7XG4gICAgICAgIHZlYzMgcjtcbiAgICAgICAgci56ID0gZnJhY3QoNTEyLjAqaik7XG4gICAgICAgIGogKj0gLjEyNTtcbiAgICAgICAgci54ID0gZnJhY3QoNTEyLjAqaik7XG4gICAgICAgIGogKj0gLjEyNTtcbiAgICAgICAgci55ID0gZnJhY3QoNTEyLjAqaik7XG4gICAgICAgIHJldHVybiByLTAuNTtcbiAgICAgIH1cblxuICAgICAgZmxvYXQgc2VlZCA9IDAuMDtcbiAgICAgIHVpbnQgaGFzaCggdWludCB4ICkge1xuICAgICAgICB4ICs9ICggeCA8PCAxMHUgKTtcbiAgICAgICAgeCBePSAoIHggPj4gIDZ1ICk7XG4gICAgICAgIHggKz0gKCB4IDw8ICAzdSApO1xuICAgICAgICB4IF49ICggeCA+PiAxMXUgKTtcbiAgICAgICAgeCArPSAoIHggPDwgMTV1ICk7XG4gICAgICAgIHJldHVybiB4O1xuICAgICAgfVxuXG4gICAgICAvLyBDb21wb3VuZCB2ZXJzaW9ucyBvZiB0aGUgaGFzaGluZyBhbGdvcml0aG0gSSB3aGlwcGVkIHRvZ2V0aGVyLlxuICAgICAgdWludCBoYXNoKCB1dmVjMiB2ICkgeyByZXR1cm4gaGFzaCggdi54IF4gaGFzaCh2LnkpICAgICAgICAgICAgICAgICAgICAgICAgICk7IH1cbiAgICAgIHVpbnQgaGFzaCggdXZlYzMgdiApIHsgcmV0dXJuIGhhc2goIHYueCBeIGhhc2godi55KSBeIGhhc2godi56KSAgICAgICAgICAgICApOyB9XG4gICAgICB1aW50IGhhc2goIHV2ZWM0IHYgKSB7IHJldHVybiBoYXNoKCB2LnggXiBoYXNoKHYueSkgXiBoYXNoKHYueikgXiBoYXNoKHYudykgKTsgfVxuXG4gICAgICAvLyBDb25zdHJ1Y3QgYSBmbG9hdCB3aXRoIGhhbGYtb3BlbiByYW5nZSBbMDoxXSB1c2luZyBsb3cgMjMgYml0cy5cbiAgICAgIC8vIEFsbCB6ZXJvZXMgeWllbGRzIDAuMCwgYWxsIG9uZXMgeWllbGRzIHRoZSBuZXh0IHNtYWxsZXN0IHJlcHJlc2VudGFibGUgdmFsdWUgYmVsb3cgMS4wLlxuICAgICAgZmxvYXQgZmxvYXRDb25zdHJ1Y3QoIHVpbnQgbSApIHtcbiAgICAgICAgY29uc3QgdWludCBpZWVlTWFudGlzc2EgPSAweDAwN0ZGRkZGdTsgLy8gYmluYXJ5MzIgbWFudGlzc2EgYml0bWFza1xuICAgICAgICBjb25zdCB1aW50IGllZWVPbmUgICAgICA9IDB4M0Y4MDAwMDB1OyAvLyAxLjAgaW4gSUVFRSBiaW5hcnkzMlxuICAgICAgICBtICY9IGllZWVNYW50aXNzYTsgICAgICAgICAgICAgICAgICAgICAvLyBLZWVwIG9ubHkgbWFudGlzc2EgYml0cyAoZnJhY3Rpb25hbCBwYXJ0KVxuICAgICAgICBtIHw9IGllZWVPbmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBZGQgZnJhY3Rpb25hbCBwYXJ0IHRvIDEuMFxuICAgICAgICBmbG9hdCAgZiA9IHVpbnRCaXRzVG9GbG9hdCggbSApOyAgICAgICAvLyBSYW5nZSBbMToyXVxuICAgICAgICByZXR1cm4gZiAtIDEuMDsgICAgICAgICAgICAgICAgICAgICAgICAvLyBSYW5nZSBbMDoxXVxuICAgICAgfVxuXG4gICAgICAvLyBQc2V1ZG8tcmFuZG9tIHZhbHVlIGluIGhhbGYtb3BlbiByYW5nZSBbMDoxXS5cbiAgICAgIGZsb2F0IHJhbmRvbSggZmxvYXQgeCApIHsgcmV0dXJuIGZsb2F0Q29uc3RydWN0KGhhc2goZmxvYXRCaXRzVG9VaW50KHgpKSk7IH1cbiAgICAgIGZsb2F0IHJhbmRvbSggdmVjMiAgdiApIHsgcmV0dXJuIGZsb2F0Q29uc3RydWN0KGhhc2goZmxvYXRCaXRzVG9VaW50KHYpKSk7IH1cbiAgICAgIGZsb2F0IHJhbmRvbSggdmVjMyAgdiApIHsgcmV0dXJuIGZsb2F0Q29uc3RydWN0KGhhc2goZmxvYXRCaXRzVG9VaW50KHYpKSk7IH1cbiAgICAgIGZsb2F0IHJhbmRvbSggdmVjNCAgdiApIHsgcmV0dXJuIGZsb2F0Q29uc3RydWN0KGhhc2goZmxvYXRCaXRzVG9VaW50KHYpKSk7IH1cblxuICAgICAgZmxvYXQgcmFuZCgpIHtcbiAgICAgICAgZmxvYXQgcmVzdWx0ID0gcmFuZG9tKHZlYzMoZ2xfRnJhZ0Nvb3JkLnh5LCBzZWVkKSk7XG4gICAgICAgIHNlZWQgKz0gMS4wO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmbG9hdCBGMyA9ICAwLjMzMzMzMzM7XG4gICAgICBjb25zdCBmbG9hdCBHMyA9ICAwLjE2NjY2Njc7XG5cbiAgICAgIGZsb2F0IHNub2lzZSh2ZWMzIHApIHtcbiAgICAgICAgdmVjMyBzID0gZmxvb3IocCArIGRvdChwLCB2ZWMzKEYzKSkpO1xuICAgICAgICB2ZWMzIHggPSBwIC0gcyArIGRvdChzLCB2ZWMzKEczKSk7XG4gICAgICAgIHZlYzMgZSA9IHN0ZXAodmVjMygwLjApLCB4IC0geC55engpO1xuICAgICAgICB2ZWMzIGkxID0gZSooMS4wIC0gZS56eHkpO1xuICAgICAgICB2ZWMzIGkyID0gMS4wIC0gZS56eHkqKDEuMCAtIGUpO1xuICAgICAgICB2ZWMzIHgxID0geCAtIGkxICsgRzM7XG4gICAgICAgIHZlYzMgeDIgPSB4IC0gaTIgKyAyLjAqRzM7XG4gICAgICAgIHZlYzMgeDMgPSB4IC0gMS4wICsgMy4wKkczO1xuICAgICAgICB2ZWM0IHcsIGQ7XG4gICAgICAgIHcueCA9IGRvdCh4LCB4KTtcbiAgICAgICAgdy55ID0gZG90KHgxLCB4MSk7XG4gICAgICAgIHcueiA9IGRvdCh4MiwgeDIpO1xuICAgICAgICB3LncgPSBkb3QoeDMsIHgzKTtcbiAgICAgICAgdyA9IG1heCgwLjYgLSB3LCAwLjApO1xuICAgICAgICBkLnggPSBkb3QocmFuZG9tMyhzKSwgeCk7XG4gICAgICAgIGQueSA9IGRvdChyYW5kb20zKHMgKyBpMSksIHgxKTtcbiAgICAgICAgZC56ID0gZG90KHJhbmRvbTMocyArIGkyKSwgeDIpO1xuICAgICAgICBkLncgPSBkb3QocmFuZG9tMyhzICsgMS4wKSwgeDMpO1xuICAgICAgICB3ICo9IHc7XG4gICAgICAgIHcgKj0gdztcbiAgICAgICAgZCAqPSB3O1xuICAgICAgICByZXR1cm4gZG90KGQsIHZlYzQoNTIuMCkpO1xuICAgICAgfVxuXG4gICAgICBmbG9hdCBzbm9pc2VGcmFjdGFsKHZlYzMgbSkge1xuICAgICAgICByZXR1cm4gMC41MzMzMzMzKiBzbm9pc2UobSlcbiAgICAgICAgICAgICAgKzAuMjY2NjY2Nyogc25vaXNlKDIuMCptKVxuICAgICAgICAgICAgICArMC4xMzMzMzMzKiBzbm9pc2UoNC4wKm0pXG4gICAgICAgICAgICAgICswLjA2NjY2NjcqIHNub2lzZSg4LjAqbSk7XG4gICAgICB9XFxuYCArIHNoYWRlci5mcmFnbWVudFNoYWRlcjtcblxuXHRcdFx0Ly8gUmVtb3ZlIHRyYW5zbWlzc2lvblxuXHRcdFx0c2hhZGVyLmZyYWdtZW50U2hhZGVyID0gc2hhZGVyLmZyYWdtZW50U2hhZGVyLnJlcGxhY2UoXG5cdFx0XHRcdCcjaW5jbHVkZSA8dHJhbnNtaXNzaW9uX3BhcnNfZnJhZ21lbnQ+Jyxcblx0XHRcdFx0LypnbHNsKi8gYFxuICAgICAgICAjaWZkZWYgVVNFX1RSQU5TTUlTU0lPTlxuICAgICAgICAgIC8vIFRyYW5zbWlzc2lvbiBjb2RlIGlzIGJhc2VkIG9uIGdsVEYtU2FtcGxlci1WaWV3ZXJcbiAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL2dsVEYtU2FtcGxlLVZpZXdlclxuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgX3RyYW5zbWlzc2lvbjtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IHRoaWNrbmVzcztcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGF0dGVudWF0aW9uRGlzdGFuY2U7XG4gICAgICAgICAgdW5pZm9ybSB2ZWMzIGF0dGVudWF0aW9uQ29sb3I7XG4gICAgICAgICAgI2lmZGVmIFVTRV9UUkFOU01JU1NJT05NQVBcbiAgICAgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHRyYW5zbWlzc2lvbk1hcDtcbiAgICAgICAgICAjZW5kaWZcbiAgICAgICAgICAjaWZkZWYgVVNFX1RISUNLTkVTU01BUFxuICAgICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdGhpY2tuZXNzTWFwO1xuICAgICAgICAgICNlbmRpZlxuICAgICAgICAgIHVuaWZvcm0gdmVjMiB0cmFuc21pc3Npb25TYW1wbGVyU2l6ZTtcbiAgICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCB0cmFuc21pc3Npb25TYW1wbGVyTWFwO1xuICAgICAgICAgIHVuaWZvcm0gbWF0NCBtb2RlbE1hdHJpeDtcbiAgICAgICAgICB1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDtcbiAgICAgICAgICB2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XG4gICAgICAgICAgdmVjMyBnZXRWb2x1bWVUcmFuc21pc3Npb25SYXkoIGNvbnN0IGluIHZlYzMgbiwgY29uc3QgaW4gdmVjMyB2LCBjb25zdCBpbiBmbG9hdCB0aGlja25lc3MsIGNvbnN0IGluIGZsb2F0IGlvciwgY29uc3QgaW4gbWF0NCBtb2RlbE1hdHJpeCApIHtcbiAgICAgICAgICAgIC8vIERpcmVjdGlvbiBvZiByZWZyYWN0ZWQgbGlnaHQuXG4gICAgICAgICAgICB2ZWMzIHJlZnJhY3Rpb25WZWN0b3IgPSByZWZyYWN0KCAtIHYsIG5vcm1hbGl6ZSggbiApLCAxLjAgLyBpb3IgKTtcbiAgICAgICAgICAgIC8vIENvbXB1dGUgcm90YXRpb24taW5kZXBlbmRhbnQgc2NhbGluZyBvZiB0aGUgbW9kZWwgbWF0cml4LlxuICAgICAgICAgICAgdmVjMyBtb2RlbFNjYWxlO1xuICAgICAgICAgICAgbW9kZWxTY2FsZS54ID0gbGVuZ3RoKCB2ZWMzKCBtb2RlbE1hdHJpeFsgMCBdLnh5eiApICk7XG4gICAgICAgICAgICBtb2RlbFNjYWxlLnkgPSBsZW5ndGgoIHZlYzMoIG1vZGVsTWF0cml4WyAxIF0ueHl6ICkgKTtcbiAgICAgICAgICAgIG1vZGVsU2NhbGUueiA9IGxlbmd0aCggdmVjMyggbW9kZWxNYXRyaXhbIDIgXS54eXogKSApO1xuICAgICAgICAgICAgLy8gVGhlIHRoaWNrbmVzcyBpcyBzcGVjaWZpZWQgaW4gbG9jYWwgc3BhY2UuXG4gICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplKCByZWZyYWN0aW9uVmVjdG9yICkgKiB0aGlja25lc3MgKiBtb2RlbFNjYWxlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmbG9hdCBhcHBseUlvclRvUm91Z2huZXNzKCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGNvbnN0IGluIGZsb2F0IGlvciApIHtcbiAgICAgICAgICAgIC8vIFNjYWxlIHJvdWdobmVzcyB3aXRoIElPUiBzbyB0aGF0IGFuIElPUiBvZiAxLjAgcmVzdWx0cyBpbiBubyBtaWNyb2ZhY2V0IHJlZnJhY3Rpb24gYW5kXG4gICAgICAgICAgICAvLyBhbiBJT1Igb2YgMS41IHJlc3VsdHMgaW4gdGhlIGRlZmF1bHQgYW1vdW50IG9mIG1pY3JvZmFjZXQgcmVmcmFjdGlvbi5cbiAgICAgICAgICAgIHJldHVybiByb3VnaG5lc3MgKiBjbGFtcCggaW9yICogMi4wIC0gMi4wLCAwLjAsIDEuMCApO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2ZWM0IGdldFRyYW5zbWlzc2lvblNhbXBsZSggY29uc3QgaW4gdmVjMiBmcmFnQ29vcmQsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcywgY29uc3QgaW4gZmxvYXQgaW9yICkge1xuICAgICAgICAgICAgZmxvYXQgZnJhbWVidWZmZXJMb2QgPSBsb2cyKCB0cmFuc21pc3Npb25TYW1wbGVyU2l6ZS54ICkgKiBhcHBseUlvclRvUm91Z2huZXNzKCByb3VnaG5lc3MsIGlvciApO1xuICAgICAgICAgICAgI2lmZGVmIFVTRV9TQU1QTEVSXG4gICAgICAgICAgICAgICNpZmRlZiB0ZXh0dXJlMkRMb2RFWFRcbiAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZTJETG9kRVhUKHRyYW5zbWlzc2lvblNhbXBsZXJNYXAsIGZyYWdDb29yZC54eSwgZnJhbWVidWZmZXJMb2QpO1xuICAgICAgICAgICAgICAjZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlMkQodHJhbnNtaXNzaW9uU2FtcGxlck1hcCwgZnJhZ0Nvb3JkLnh5LCBmcmFtZWJ1ZmZlckxvZCk7XG4gICAgICAgICAgICAgICNlbmRpZlxuICAgICAgICAgICAgI2Vsc2VcbiAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmUyRChidWZmZXIsIGZyYWdDb29yZC54eSk7XG4gICAgICAgICAgICAjZW5kaWZcbiAgICAgICAgICB9XG4gICAgICAgICAgdmVjMyBhcHBseVZvbHVtZUF0dGVudWF0aW9uKCBjb25zdCBpbiB2ZWMzIHJhZGlhbmNlLCBjb25zdCBpbiBmbG9hdCB0cmFuc21pc3Npb25EaXN0YW5jZSwgY29uc3QgaW4gdmVjMyBhdHRlbnVhdGlvbkNvbG9yLCBjb25zdCBpbiBmbG9hdCBhdHRlbnVhdGlvbkRpc3RhbmNlICkge1xuICAgICAgICAgICAgaWYgKCBpc2luZiggYXR0ZW51YXRpb25EaXN0YW5jZSApICkge1xuICAgICAgICAgICAgICAvLyBBdHRlbnVhdGlvbiBkaXN0YW5jZSBpcyAr4oieLCBpLmUuIHRoZSB0cmFuc21pdHRlZCBjb2xvciBpcyBub3QgYXR0ZW51YXRlZCBhdCBhbGwuXG4gICAgICAgICAgICAgIHJldHVybiByYWRpYW5jZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIENvbXB1dGUgbGlnaHQgYXR0ZW51YXRpb24gdXNpbmcgQmVlcidzIGxhdy5cbiAgICAgICAgICAgICAgdmVjMyBhdHRlbnVhdGlvbkNvZWZmaWNpZW50ID0gLWxvZyggYXR0ZW51YXRpb25Db2xvciApIC8gYXR0ZW51YXRpb25EaXN0YW5jZTtcbiAgICAgICAgICAgICAgdmVjMyB0cmFuc21pdHRhbmNlID0gZXhwKCAtIGF0dGVudWF0aW9uQ29lZmZpY2llbnQgKiB0cmFuc21pc3Npb25EaXN0YW5jZSApOyAvLyBCZWVyJ3MgbGF3XG4gICAgICAgICAgICAgIHJldHVybiB0cmFuc21pdHRhbmNlICogcmFkaWFuY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHZlYzQgZ2V0SUJMVm9sdW1lUmVmcmFjdGlvbiggY29uc3QgaW4gdmVjMyBuLCBjb25zdCBpbiB2ZWMzIHYsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcywgY29uc3QgaW4gdmVjMyBkaWZmdXNlQ29sb3IsXG4gICAgICAgICAgICBjb25zdCBpbiB2ZWMzIHNwZWN1bGFyQ29sb3IsIGNvbnN0IGluIGZsb2F0IHNwZWN1bGFyRjkwLCBjb25zdCBpbiB2ZWMzIHBvc2l0aW9uLCBjb25zdCBpbiBtYXQ0IG1vZGVsTWF0cml4LFxuICAgICAgICAgICAgY29uc3QgaW4gbWF0NCB2aWV3TWF0cml4LCBjb25zdCBpbiBtYXQ0IHByb2pNYXRyaXgsIGNvbnN0IGluIGZsb2F0IGlvciwgY29uc3QgaW4gZmxvYXQgdGhpY2tuZXNzLFxuICAgICAgICAgICAgY29uc3QgaW4gdmVjMyBhdHRlbnVhdGlvbkNvbG9yLCBjb25zdCBpbiBmbG9hdCBhdHRlbnVhdGlvbkRpc3RhbmNlICkge1xuICAgICAgICAgICAgdmVjMyB0cmFuc21pc3Npb25SYXkgPSBnZXRWb2x1bWVUcmFuc21pc3Npb25SYXkoIG4sIHYsIHRoaWNrbmVzcywgaW9yLCBtb2RlbE1hdHJpeCApO1xuICAgICAgICAgICAgdmVjMyByZWZyYWN0ZWRSYXlFeGl0ID0gcG9zaXRpb24gKyB0cmFuc21pc3Npb25SYXk7XG4gICAgICAgICAgICAvLyBQcm9qZWN0IHJlZnJhY3RlZCB2ZWN0b3Igb24gdGhlIGZyYW1lYnVmZmVyLCB3aGlsZSBtYXBwaW5nIHRvIG5vcm1hbGl6ZWQgZGV2aWNlIGNvb3JkaW5hdGVzLlxuICAgICAgICAgICAgdmVjNCBuZGNQb3MgPSBwcm9qTWF0cml4ICogdmlld01hdHJpeCAqIHZlYzQoIHJlZnJhY3RlZFJheUV4aXQsIDEuMCApO1xuICAgICAgICAgICAgdmVjMiByZWZyYWN0aW9uQ29vcmRzID0gbmRjUG9zLnh5IC8gbmRjUG9zLnc7XG4gICAgICAgICAgICByZWZyYWN0aW9uQ29vcmRzICs9IDEuMDtcbiAgICAgICAgICAgIHJlZnJhY3Rpb25Db29yZHMgLz0gMi4wO1xuICAgICAgICAgICAgLy8gU2FtcGxlIGZyYW1lYnVmZmVyIHRvIGdldCBwaXhlbCB0aGUgcmVmcmFjdGVkIHJheSBoaXRzLlxuICAgICAgICAgICAgdmVjNCB0cmFuc21pdHRlZExpZ2h0ID0gZ2V0VHJhbnNtaXNzaW9uU2FtcGxlKCByZWZyYWN0aW9uQ29vcmRzLCByb3VnaG5lc3MsIGlvciApO1xuICAgICAgICAgICAgdmVjMyBhdHRlbnVhdGVkQ29sb3IgPSBhcHBseVZvbHVtZUF0dGVudWF0aW9uKCB0cmFuc21pdHRlZExpZ2h0LnJnYiwgbGVuZ3RoKCB0cmFuc21pc3Npb25SYXkgKSwgYXR0ZW51YXRpb25Db2xvciwgYXR0ZW51YXRpb25EaXN0YW5jZSApO1xuICAgICAgICAgICAgLy8gR2V0IHRoZSBzcGVjdWxhciBjb21wb25lbnQuXG4gICAgICAgICAgICB2ZWMzIEYgPSBFbnZpcm9ubWVudEJSREYoIG4sIHYsIHNwZWN1bGFyQ29sb3IsIHNwZWN1bGFyRjkwLCByb3VnaG5lc3MgKTtcbiAgICAgICAgICAgIHJldHVybiB2ZWM0KCAoIDEuMCAtIEYgKSAqIGF0dGVudWF0ZWRDb2xvciAqIGRpZmZ1c2VDb2xvciwgdHJhbnNtaXR0ZWRMaWdodC5hICk7XG4gICAgICAgICAgfVxuICAgICAgICAjZW5kaWZcXG5gLFxuXHRcdFx0KTtcblxuXHRcdFx0Ly8gQWRkIHJlZnJhY3Rpb25cblx0XHRcdHNoYWRlci5mcmFnbWVudFNoYWRlciA9IHNoYWRlci5mcmFnbWVudFNoYWRlci5yZXBsYWNlKFxuXHRcdFx0XHQnI2luY2x1ZGUgPHRyYW5zbWlzc2lvbl9mcmFnbWVudD4nLFxuXHRcdFx0XHQvKmdsc2wqLyBgXG4gICAgICAgIC8vIEltcHJvdmUgdGhlIHJlZnJhY3Rpb24gdG8gdXNlIHRoZSB3b3JsZCBwb3NcbiAgICAgICAgbWF0ZXJpYWwudHJhbnNtaXNzaW9uID0gX3RyYW5zbWlzc2lvbjtcbiAgICAgICAgbWF0ZXJpYWwudHJhbnNtaXNzaW9uQWxwaGEgPSAxLjA7XG4gICAgICAgIG1hdGVyaWFsLnRoaWNrbmVzcyA9IHRoaWNrbmVzcztcbiAgICAgICAgbWF0ZXJpYWwuYXR0ZW51YXRpb25EaXN0YW5jZSA9IGF0dGVudWF0aW9uRGlzdGFuY2U7XG4gICAgICAgIG1hdGVyaWFsLmF0dGVudWF0aW9uQ29sb3IgPSBhdHRlbnVhdGlvbkNvbG9yO1xuICAgICAgICAjaWZkZWYgVVNFX1RSQU5TTUlTU0lPTk1BUFxuICAgICAgICAgIG1hdGVyaWFsLnRyYW5zbWlzc2lvbiAqPSB0ZXh0dXJlMkQoIHRyYW5zbWlzc2lvbk1hcCwgdlV2ICkucjtcbiAgICAgICAgI2VuZGlmXG4gICAgICAgICNpZmRlZiBVU0VfVEhJQ0tORVNTTUFQXG4gICAgICAgICAgbWF0ZXJpYWwudGhpY2tuZXNzICo9IHRleHR1cmUyRCggdGhpY2tuZXNzTWFwLCB2VXYgKS5nO1xuICAgICAgICAjZW5kaWZcblxuICAgICAgICB2ZWMzIHBvcyA9IHZXb3JsZFBvc2l0aW9uO1xuICAgICAgICB2ZWMzIHYgPSBub3JtYWxpemUoIGNhbWVyYVBvc2l0aW9uIC0gcG9zICk7XG4gICAgICAgIHZlYzMgbiA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIG5vcm1hbCwgdmlld01hdHJpeCApO1xuICAgICAgICB2ZWMzIHRyYW5zbWlzc2lvbiA9IHZlYzMoMC4wKTtcbiAgICAgICAgZmxvYXQgdHJhbnNtaXNzaW9uUiwgdHJhbnNtaXNzaW9uQiwgdHJhbnNtaXNzaW9uRztcbiAgICAgICAgZmxvYXQgcmFuZG9tQ29vcmRzID0gcmFuZCgpO1xuICAgICAgICBmbG9hdCB0aGlja25lc3Nfc21lYXIgPSB0aGlja25lc3MgKiBtYXgocG93KHJvdWdobmVzc0ZhY3RvciwgMC4zMyksIGFuaXNvdHJvcGljQmx1cik7XG4gICAgICAgIHZlYzMgZGlzdG9ydGlvbk5vcm1hbCA9IHZlYzMoMC4wKTtcbiAgICAgICAgdmVjMyB0ZW1wb3JhbE9mZnNldCA9IHZlYzModGltZSwgLXRpbWUsIC10aW1lKSAqIHRlbXBvcmFsRGlzdG9ydGlvbjtcbiAgICAgICAgaWYgKGRpc3RvcnRpb24gPiAwLjApIHtcbiAgICAgICAgICBkaXN0b3J0aW9uTm9ybWFsID0gZGlzdG9ydGlvbiAqIHZlYzMoc25vaXNlRnJhY3RhbCh2ZWMzKChwb3MgKiBkaXN0b3J0aW9uU2NhbGUgKyB0ZW1wb3JhbE9mZnNldCkpKSwgc25vaXNlRnJhY3RhbCh2ZWMzKHBvcy56eHkgKiBkaXN0b3J0aW9uU2NhbGUgLSB0ZW1wb3JhbE9mZnNldCkpLCBzbm9pc2VGcmFjdGFsKHZlYzMocG9zLnl4eiAqIGRpc3RvcnRpb25TY2FsZSArIHRlbXBvcmFsT2Zmc2V0KSkpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoZmxvYXQgaSA9IDAuMDsgaSA8ICR7c2FtcGxlc30uMDsgaSArKykge1xuICAgICAgICAgIHZlYzMgc2FtcGxlTm9ybSA9IG5vcm1hbGl6ZShuICsgcm91Z2huZXNzRmFjdG9yICogcm91Z2huZXNzRmFjdG9yICogMi4wICogbm9ybWFsaXplKHZlYzMocmFuZCgpIC0gMC41LCByYW5kKCkgLSAwLjUsIHJhbmQoKSAtIDAuNSkpICogcG93KHJhbmQoKSwgMC4zMykgKyBkaXN0b3J0aW9uTm9ybWFsKTtcbiAgICAgICAgICB0cmFuc21pc3Npb25SID0gZ2V0SUJMVm9sdW1lUmVmcmFjdGlvbihcbiAgICAgICAgICAgIHNhbXBsZU5vcm0sIHYsIG1hdGVyaWFsLnJvdWdobmVzcywgbWF0ZXJpYWwuZGlmZnVzZUNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckY5MCxcbiAgICAgICAgICAgIHBvcywgbW9kZWxNYXRyaXgsIHZpZXdNYXRyaXgsIHByb2plY3Rpb25NYXRyaXgsIG1hdGVyaWFsLmlvciwgbWF0ZXJpYWwudGhpY2tuZXNzICArIHRoaWNrbmVzc19zbWVhciAqIChpICsgcmFuZG9tQ29vcmRzKSAvIGZsb2F0KCR7c2FtcGxlc30pLFxuICAgICAgICAgICAgbWF0ZXJpYWwuYXR0ZW51YXRpb25Db2xvciwgbWF0ZXJpYWwuYXR0ZW51YXRpb25EaXN0YW5jZVxuICAgICAgICAgICkucjtcbiAgICAgICAgICB0cmFuc21pc3Npb25HID0gZ2V0SUJMVm9sdW1lUmVmcmFjdGlvbihcbiAgICAgICAgICAgIHNhbXBsZU5vcm0sIHYsIG1hdGVyaWFsLnJvdWdobmVzcywgbWF0ZXJpYWwuZGlmZnVzZUNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckY5MCxcbiAgICAgICAgICAgIHBvcywgbW9kZWxNYXRyaXgsIHZpZXdNYXRyaXgsIHByb2plY3Rpb25NYXRyaXgsIG1hdGVyaWFsLmlvciAgKiAoMS4wICsgY2hyb21hdGljQWJlcnJhdGlvbiAqIChpICsgcmFuZG9tQ29vcmRzKSAvIGZsb2F0KCR7c2FtcGxlc30pKSAsIG1hdGVyaWFsLnRoaWNrbmVzcyArIHRoaWNrbmVzc19zbWVhciAqIChpICsgcmFuZG9tQ29vcmRzKSAvIGZsb2F0KCR7c2FtcGxlc30pLFxuICAgICAgICAgICAgbWF0ZXJpYWwuYXR0ZW51YXRpb25Db2xvciwgbWF0ZXJpYWwuYXR0ZW51YXRpb25EaXN0YW5jZVxuICAgICAgICAgICkuZztcbiAgICAgICAgICB0cmFuc21pc3Npb25CID0gZ2V0SUJMVm9sdW1lUmVmcmFjdGlvbihcbiAgICAgICAgICAgIHNhbXBsZU5vcm0sIHYsIG1hdGVyaWFsLnJvdWdobmVzcywgbWF0ZXJpYWwuZGlmZnVzZUNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckY5MCxcbiAgICAgICAgICAgIHBvcywgbW9kZWxNYXRyaXgsIHZpZXdNYXRyaXgsIHByb2plY3Rpb25NYXRyaXgsIG1hdGVyaWFsLmlvciAqICgxLjAgKyAyLjAgKiBjaHJvbWF0aWNBYmVycmF0aW9uICogKGkgKyByYW5kb21Db29yZHMpIC8gZmxvYXQoJHtzYW1wbGVzfSkpLCBtYXRlcmlhbC50aGlja25lc3MgKyB0aGlja25lc3Nfc21lYXIgKiAoaSArIHJhbmRvbUNvb3JkcykgLyBmbG9hdCgke3NhbXBsZXN9KSxcbiAgICAgICAgICAgIG1hdGVyaWFsLmF0dGVudWF0aW9uQ29sb3IsIG1hdGVyaWFsLmF0dGVudWF0aW9uRGlzdGFuY2VcbiAgICAgICAgICApLmI7XG4gICAgICAgICAgdHJhbnNtaXNzaW9uLnIgKz0gdHJhbnNtaXNzaW9uUjtcbiAgICAgICAgICB0cmFuc21pc3Npb24uZyArPSB0cmFuc21pc3Npb25HO1xuICAgICAgICAgIHRyYW5zbWlzc2lvbi5iICs9IHRyYW5zbWlzc2lvbkI7XG4gICAgICAgIH1cbiAgICAgICAgdHJhbnNtaXNzaW9uIC89ICR7c2FtcGxlc30uMDtcbiAgICAgICAgdG90YWxEaWZmdXNlID0gbWl4KCB0b3RhbERpZmZ1c2UsIHRyYW5zbWlzc2lvbi5yZ2IsIG1hdGVyaWFsLnRyYW5zbWlzc2lvbiApO1xcbmAsXG5cdFx0XHQpO1xuXHRcdH07XG5cblx0XHRPYmplY3Qua2V5cyh0aGlzLnVuaWZvcm1zKS5mb3JFYWNoKChuYW1lKSA9PlxuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIG5hbWUsIHtcblx0XHRcdFx0Z2V0OiAoKSA9PiB0aGlzLnVuaWZvcm1zW25hbWUgYXMga2V5b2YgdHlwZW9mIHRoaXMudW5pZm9ybXNdLnZhbHVlLFxuXHRcdFx0XHRzZXQ6ICh2KSA9PiAodGhpcy51bmlmb3Jtc1tuYW1lIGFzIGtleW9mIHR5cGVvZiB0aGlzLnVuaWZvcm1zXS52YWx1ZSA9IHYpLFxuXHRcdFx0fSksXG5cdFx0KTtcblx0fVxufVxuIl19
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import * as THREE from 'three';
|
|
2
|
-
export class MeshWobbleMaterial extends THREE.MeshStandardMaterial {
|
|
3
|
-
constructor(parameters = {}) {
|
|
4
|
-
super(parameters);
|
|
5
|
-
this.setValues(parameters);
|
|
6
|
-
this._time = { value: 0 };
|
|
7
|
-
this._factor = { value: 1 };
|
|
8
|
-
}
|
|
9
|
-
onBeforeCompile(shader) {
|
|
10
|
-
shader.uniforms['time'] = this._time;
|
|
11
|
-
shader.uniforms['factor'] = this._factor;
|
|
12
|
-
shader.vertexShader = `
|
|
13
|
-
uniform float time;
|
|
14
|
-
uniform float factor;
|
|
15
|
-
${shader.vertexShader}
|
|
16
|
-
`;
|
|
17
|
-
shader.vertexShader = shader.vertexShader.replace('#include <begin_vertex>', `float theta = sin( time + position.y ) / 2.0 * factor;
|
|
18
|
-
float c = cos( theta );
|
|
19
|
-
float s = sin( theta );
|
|
20
|
-
mat3 m = mat3( c, 0, s, 0, 1, 0, -s, 0, c );
|
|
21
|
-
vec3 transformed = vec3( position ) * m;
|
|
22
|
-
vNormal = vNormal * m;`);
|
|
23
|
-
}
|
|
24
|
-
get time() {
|
|
25
|
-
return this._time.value;
|
|
26
|
-
}
|
|
27
|
-
set time(v) {
|
|
28
|
-
this._time.value = v;
|
|
29
|
-
}
|
|
30
|
-
get factor() {
|
|
31
|
-
return this._factor.value;
|
|
32
|
-
}
|
|
33
|
-
set factor(v) {
|
|
34
|
-
this._factor.value = v;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC13b2JibGUtbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc2hhZGVycy9zcmMvbWVzaC13b2JibGUtbWF0ZXJpYWwvbWVzaC13b2JibGUtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFNL0IsTUFBTSxPQUFPLGtCQUFtQixTQUFRLEtBQUssQ0FBQyxvQkFBb0I7SUFJakUsWUFBWSxhQUFtRCxFQUFFO1FBQ2hFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRVEsZUFBZSxDQUFDLE1BQW9CO1FBQzVDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNyQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFekMsTUFBTSxDQUFDLFlBQVksR0FBRzs7O1FBR2hCLE1BQU0sQ0FBQyxZQUFZO0tBQ3RCLENBQUM7UUFDSixNQUFNLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUNoRCx5QkFBeUIsRUFDekI7Ozs7OytCQUs0QixDQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksSUFBSTtRQUNQLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLENBQUM7UUFDVCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNULE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLENBQUM7UUFDWCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDeEIsQ0FBQztDQUdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG5pbnRlcmZhY2UgVW5pZm9ybTxUPiB7XG5cdHZhbHVlOiBUO1xufVxuXG5leHBvcnQgY2xhc3MgTWVzaFdvYmJsZU1hdGVyaWFsIGV4dGVuZHMgVEhSRUUuTWVzaFN0YW5kYXJkTWF0ZXJpYWwge1xuXHRfdGltZTogVW5pZm9ybTxudW1iZXI+O1xuXHRfZmFjdG9yOiBVbmlmb3JtPG51bWJlcj47XG5cblx0Y29uc3RydWN0b3IocGFyYW1ldGVyczogVEhSRUUuTWVzaFN0YW5kYXJkTWF0ZXJpYWxQYXJhbWV0ZXJzID0ge30pIHtcblx0XHRzdXBlcihwYXJhbWV0ZXJzKTtcblx0XHR0aGlzLnNldFZhbHVlcyhwYXJhbWV0ZXJzKTtcblx0XHR0aGlzLl90aW1lID0geyB2YWx1ZTogMCB9O1xuXHRcdHRoaXMuX2ZhY3RvciA9IHsgdmFsdWU6IDEgfTtcblx0fVxuXG5cdG92ZXJyaWRlIG9uQmVmb3JlQ29tcGlsZShzaGFkZXI6IFRIUkVFLlNoYWRlcikge1xuXHRcdHNoYWRlci51bmlmb3Jtc1sndGltZSddID0gdGhpcy5fdGltZTtcblx0XHRzaGFkZXIudW5pZm9ybXNbJ2ZhY3RvciddID0gdGhpcy5fZmFjdG9yO1xuXG5cdFx0c2hhZGVyLnZlcnRleFNoYWRlciA9IGBcbiAgICAgIHVuaWZvcm0gZmxvYXQgdGltZTtcbiAgICAgIHVuaWZvcm0gZmxvYXQgZmFjdG9yO1xuICAgICAgJHtzaGFkZXIudmVydGV4U2hhZGVyfVxuICAgIGA7XG5cdFx0c2hhZGVyLnZlcnRleFNoYWRlciA9IHNoYWRlci52ZXJ0ZXhTaGFkZXIucmVwbGFjZShcblx0XHRcdCcjaW5jbHVkZSA8YmVnaW5fdmVydGV4PicsXG5cdFx0XHRgZmxvYXQgdGhldGEgPSBzaW4oIHRpbWUgKyBwb3NpdGlvbi55ICkgLyAyLjAgKiBmYWN0b3I7XG4gICAgICAgIGZsb2F0IGMgPSBjb3MoIHRoZXRhICk7XG4gICAgICAgIGZsb2F0IHMgPSBzaW4oIHRoZXRhICk7XG4gICAgICAgIG1hdDMgbSA9IG1hdDMoIGMsIDAsIHMsIDAsIDEsIDAsIC1zLCAwLCBjICk7XG4gICAgICAgIHZlYzMgdHJhbnNmb3JtZWQgPSB2ZWMzKCBwb3NpdGlvbiApICogbTtcbiAgICAgICAgdk5vcm1hbCA9IHZOb3JtYWwgKiBtO2AsXG5cdFx0KTtcblx0fVxuXG5cdGdldCB0aW1lKCkge1xuXHRcdHJldHVybiB0aGlzLl90aW1lLnZhbHVlO1xuXHR9XG5cblx0c2V0IHRpbWUodikge1xuXHRcdHRoaXMuX3RpbWUudmFsdWUgPSB2O1xuXHR9XG5cblx0Z2V0IGZhY3RvcigpIHtcblx0XHRyZXR1cm4gdGhpcy5fZmFjdG9yLnZhbHVlO1xuXHR9XG5cblx0c2V0IGZhY3Rvcih2KSB7XG5cdFx0dGhpcy5fZmFjdG9yLnZhbHVlID0gdjtcblx0fVxuXG5cdGRlY2xhcmUgc3BlZWQ6IG51bWJlcjtcbn1cbiJdfQ==
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import * as THREE from 'three';
|
|
2
|
-
export function shaderMaterial(uniforms, vertexShader, fragmentShader, onInit) {
|
|
3
|
-
const material = class extends THREE.ShaderMaterial {
|
|
4
|
-
constructor(parameters = {}) {
|
|
5
|
-
const entries = Object.entries(uniforms);
|
|
6
|
-
// Create unforms and shaders
|
|
7
|
-
super({
|
|
8
|
-
uniforms: entries.reduce((acc, [name, value]) => {
|
|
9
|
-
const uniform = THREE.UniformsUtils.clone({ [name]: { value } });
|
|
10
|
-
return {
|
|
11
|
-
...acc,
|
|
12
|
-
...uniform,
|
|
13
|
-
};
|
|
14
|
-
}, {}),
|
|
15
|
-
vertexShader,
|
|
16
|
-
fragmentShader,
|
|
17
|
-
});
|
|
18
|
-
this.key = '';
|
|
19
|
-
// Create getter/setters
|
|
20
|
-
entries.forEach(([name]) => Object.defineProperty(this, name, {
|
|
21
|
-
get: () => this.uniforms[name].value,
|
|
22
|
-
set: (v) => (this.uniforms[name].value = v),
|
|
23
|
-
}));
|
|
24
|
-
// Assign parameters, this might include uniforms
|
|
25
|
-
Object.assign(this, parameters);
|
|
26
|
-
// Call onInit
|
|
27
|
-
if (onInit)
|
|
28
|
-
onInit(this);
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
material.key = THREE.MathUtils.generateUUID();
|
|
32
|
-
return material;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhZGVyLW1hdGVyaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3NoYWRlcnMvc3JjL3NoYWRlci1tYXRlcmlhbC9zaGFkZXItbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFL0IsTUFBTSxVQUFVLGNBQWMsQ0FvQjdCLFFBQWtCLEVBQ2xCLFlBQW9CLEVBQ3BCLGNBQXNCLEVBQ3RCLE1BQWtEO0lBRWxELE1BQU0sUUFBUSxHQUFHLEtBQU0sU0FBUSxLQUFLLENBQUMsY0FBYztRQUVsRCxZQUFZLFVBQVUsR0FBRyxFQUFFO1lBQzFCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekMsNkJBQTZCO1lBQzdCLEtBQUssQ0FBQztnQkFDTCxRQUFRLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO29CQUMvQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ2pFLE9BQU87d0JBQ04sR0FBRyxHQUFHO3dCQUNOLEdBQUcsT0FBTztxQkFDVixDQUFDO2dCQUNILENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ04sWUFBWTtnQkFDWixjQUFjO2FBQ2QsQ0FBQyxDQUFDO1lBZEcsUUFBRyxHQUFXLEVBQUUsQ0FBQztZQWV2Qix3QkFBd0I7WUFDeEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUMxQixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7Z0JBQ2pDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUs7Z0JBQ3BDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7YUFDM0MsQ0FBQyxDQUNGLENBQUM7WUFFRixpREFBaUQ7WUFDakQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDaEMsY0FBYztZQUNkLElBQUksTUFBTTtnQkFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsQ0FBQztLQUMyRCxDQUFDO0lBQzlELFFBQVEsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5QyxPQUFPLFFBQVEsQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG5leHBvcnQgZnVuY3Rpb24gc2hhZGVyTWF0ZXJpYWw8XG5cdFVuaWZvcm1zIGV4dGVuZHMge1xuXHRcdFtuYW1lOiBzdHJpbmddOlxuXHRcdFx0fCBUSFJFRS5DdWJlVGV4dHVyZVxuXHRcdFx0fCBUSFJFRS5UZXh0dXJlXG5cdFx0XHR8IEludDMyQXJyYXlcblx0XHRcdHwgRmxvYXQzMkFycmF5XG5cdFx0XHR8IFRIUkVFLk1hdHJpeDRcblx0XHRcdHwgVEhSRUUuTWF0cml4M1xuXHRcdFx0fCBUSFJFRS5RdWF0ZXJuaW9uXG5cdFx0XHR8IFRIUkVFLlZlY3RvcjRcblx0XHRcdHwgVEhSRUUuVmVjdG9yM1xuXHRcdFx0fCBUSFJFRS5WZWN0b3IyXG5cdFx0XHR8IFRIUkVFLkNvbG9yXG5cdFx0XHR8IG51bWJlclxuXHRcdFx0fCBib29sZWFuXG5cdFx0XHR8IEFycmF5PGFueT5cblx0XHRcdHwgbnVsbDtcblx0fSxcbj4oXG5cdHVuaWZvcm1zOiBVbmlmb3Jtcyxcblx0dmVydGV4U2hhZGVyOiBzdHJpbmcsXG5cdGZyYWdtZW50U2hhZGVyOiBzdHJpbmcsXG5cdG9uSW5pdD86IChtYXRlcmlhbD86IFRIUkVFLlNoYWRlck1hdGVyaWFsKSA9PiB2b2lkLFxuKSB7XG5cdGNvbnN0IG1hdGVyaWFsID0gY2xhc3MgZXh0ZW5kcyBUSFJFRS5TaGFkZXJNYXRlcmlhbCB7XG5cdFx0cHVibGljIGtleTogc3RyaW5nID0gJyc7XG5cdFx0Y29uc3RydWN0b3IocGFyYW1ldGVycyA9IHt9KSB7XG5cdFx0XHRjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXModW5pZm9ybXMpO1xuXHRcdFx0Ly8gQ3JlYXRlIHVuZm9ybXMgYW5kIHNoYWRlcnNcblx0XHRcdHN1cGVyKHtcblx0XHRcdFx0dW5pZm9ybXM6IGVudHJpZXMucmVkdWNlKChhY2MsIFtuYW1lLCB2YWx1ZV0pID0+IHtcblx0XHRcdFx0XHRjb25zdCB1bmlmb3JtID0gVEhSRUUuVW5pZm9ybXNVdGlscy5jbG9uZSh7IFtuYW1lXTogeyB2YWx1ZSB9IH0pO1xuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHQuLi5hY2MsXG5cdFx0XHRcdFx0XHQuLi51bmlmb3JtLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0sIHt9KSxcblx0XHRcdFx0dmVydGV4U2hhZGVyLFxuXHRcdFx0XHRmcmFnbWVudFNoYWRlcixcblx0XHRcdH0pO1xuXHRcdFx0Ly8gQ3JlYXRlIGdldHRlci9zZXR0ZXJzXG5cdFx0XHRlbnRyaWVzLmZvckVhY2goKFtuYW1lXSkgPT5cblx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIG5hbWUsIHtcblx0XHRcdFx0XHRnZXQ6ICgpID0+IHRoaXMudW5pZm9ybXNbbmFtZV0udmFsdWUsXG5cdFx0XHRcdFx0c2V0OiAodikgPT4gKHRoaXMudW5pZm9ybXNbbmFtZV0udmFsdWUgPSB2KSxcblx0XHRcdFx0fSksXG5cdFx0XHQpO1xuXG5cdFx0XHQvLyBBc3NpZ24gcGFyYW1ldGVycywgdGhpcyBtaWdodCBpbmNsdWRlIHVuaWZvcm1zXG5cdFx0XHRPYmplY3QuYXNzaWduKHRoaXMsIHBhcmFtZXRlcnMpO1xuXHRcdFx0Ly8gQ2FsbCBvbkluaXRcblx0XHRcdGlmIChvbkluaXQpIG9uSW5pdCh0aGlzKTtcblx0XHR9XG5cdH0gYXMgdW5rbm93biBhcyB0eXBlb2YgVEhSRUUuU2hhZGVyTWF0ZXJpYWwgJiB7IGtleTogc3RyaW5nIH07XG5cdG1hdGVyaWFsLmtleSA9IFRIUkVFLk1hdGhVdGlscy5nZW5lcmF0ZVVVSUQoKTtcblx0cmV0dXJuIG1hdGVyaWFsO1xufVxuIl19
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import * as THREE from 'three';
|
|
2
|
-
import { shaderMaterial } from '../shader-material/shader-material';
|
|
3
|
-
export const SoftShadowMaterial = shaderMaterial({
|
|
4
|
-
color: new THREE.Color(),
|
|
5
|
-
blend: 2.0,
|
|
6
|
-
alphaTest: 0.75,
|
|
7
|
-
opacity: 0,
|
|
8
|
-
map: null,
|
|
9
|
-
}, `varying vec2 vUv;
|
|
10
|
-
void main() {
|
|
11
|
-
gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position, 1.);
|
|
12
|
-
vUv = uv;
|
|
13
|
-
}`, `varying vec2 vUv;
|
|
14
|
-
uniform sampler2D map;
|
|
15
|
-
uniform vec3 color;
|
|
16
|
-
uniform float opacity;
|
|
17
|
-
uniform float alphaTest;
|
|
18
|
-
uniform float blend;
|
|
19
|
-
void main() {
|
|
20
|
-
vec4 sampledDiffuseColor = texture2D(map, vUv);
|
|
21
|
-
gl_FragColor = vec4(color * sampledDiffuseColor.r * blend, max(0.0, (1.0 - (sampledDiffuseColor.r + sampledDiffuseColor.g + sampledDiffuseColor.b) / alphaTest)) * opacity);
|
|
22
|
-
#include <tonemapping_fragment>
|
|
23
|
-
#include <${parseInt(THREE.REVISION.replace(/\D+/g, '')) >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
|
|
24
|
-
}`);
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29mdC1zaGFkb3ctbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc2hhZGVycy9zcmMvc29mdC1zaGFkb3ctbWF0ZXJpYWwvc29mdC1zaGFkb3ctbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXBFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLGNBQWMsQ0FDL0M7SUFDQyxLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO0lBQ3hCLEtBQUssRUFBRSxHQUFHO0lBQ1YsU0FBUyxFQUFFLElBQUk7SUFDZixPQUFPLEVBQUUsQ0FBQztJQUNWLEdBQUcsRUFBRSxJQUFJO0NBQ1QsRUFDRDs7OztLQUlJLEVBQ0o7Ozs7Ozs7Ozs7aUJBVWdCLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxvQkFBb0I7S0FDOUcsQ0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBOZ3RTaGFkZXJNYXRlcmlhbCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgc2hhZGVyTWF0ZXJpYWwgfSBmcm9tICcuLi9zaGFkZXItbWF0ZXJpYWwvc2hhZGVyLW1hdGVyaWFsJztcblxuZXhwb3J0IGNvbnN0IFNvZnRTaGFkb3dNYXRlcmlhbCA9IHNoYWRlck1hdGVyaWFsKFxuXHR7XG5cdFx0Y29sb3I6IG5ldyBUSFJFRS5Db2xvcigpLFxuXHRcdGJsZW5kOiAyLjAsXG5cdFx0YWxwaGFUZXN0OiAwLjc1LFxuXHRcdG9wYWNpdHk6IDAsXG5cdFx0bWFwOiBudWxsLFxuXHR9LFxuXHRgdmFyeWluZyB2ZWMyIHZVdjtcbiAgIHZvaWQgbWFpbigpIHtcbiAgICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogdmlld01hdHJpeCAqIG1vZGVsTWF0cml4ICogdmVjNChwb3NpdGlvbiwgMS4pO1xuICAgICB2VXYgPSB1djtcbiAgIH1gLFxuXHRgdmFyeWluZyB2ZWMyIHZVdjtcbiAgIHVuaWZvcm0gc2FtcGxlcjJEIG1hcDtcbiAgIHVuaWZvcm0gdmVjMyBjb2xvcjtcbiAgIHVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiAgIHVuaWZvcm0gZmxvYXQgYWxwaGFUZXN0O1xuICAgdW5pZm9ybSBmbG9hdCBibGVuZDtcbiAgIHZvaWQgbWFpbigpIHtcbiAgICAgdmVjNCBzYW1wbGVkRGlmZnVzZUNvbG9yID0gdGV4dHVyZTJEKG1hcCwgdlV2KTtcbiAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChjb2xvciAqIHNhbXBsZWREaWZmdXNlQ29sb3IuciAqIGJsZW5kLCBtYXgoMC4wLCAoMS4wIC0gKHNhbXBsZWREaWZmdXNlQ29sb3IuciArIHNhbXBsZWREaWZmdXNlQ29sb3IuZyArIHNhbXBsZWREaWZmdXNlQ29sb3IuYikgLyBhbHBoYVRlc3QpKSAqIG9wYWNpdHkpO1xuICAgICAjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG4gICAgICNpbmNsdWRlIDwke3BhcnNlSW50KFRIUkVFLlJFVklTSU9OLnJlcGxhY2UoL1xcRCsvZywgJycpKSA+PSAxNTQgPyAnY29sb3JzcGFjZV9mcmFnbWVudCcgOiAnZW5jb2RpbmdzX2ZyYWdtZW50J30+XG4gICB9YCxcbik7XG5cbmV4cG9ydCB0eXBlIE5ndFNvZnRTaGFkb3dNYXRlcmlhbFN0YXRlID0ge1xuXHRtYXA6IFRIUkVFLlRleHR1cmU7XG5cdGNvbG9yPzogVEhSRUUuQ29sb3JSZXByZXNlbnRhdGlvbjtcblx0YWxwaGFUZXN0PzogbnVtYmVyO1xuXHRibGVuZD86IG51bWJlcjtcbn07XG5cbmRlY2xhcmUgZ2xvYmFsIHtcblx0aW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG5cdFx0LyoqXG5cdFx0ICogIEBleHRlbmRzIG5ndC1zaGFkZXItbWF0ZXJpYWxcblx0XHQgKi9cblx0XHQnbmd0LXNvZnQtc2hhZG93LW1hdGVyaWFsJzogTmd0U29mdFNoYWRvd01hdGVyaWFsU3RhdGUgJiBOZ3RTaGFkZXJNYXRlcmlhbDtcblx0fVxufVxuIl19
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import * as THREE from 'three';
|
|
2
|
-
import { shaderMaterial } from '../shader-material/shader-material';
|
|
3
|
-
export const SparklesMaterial = shaderMaterial({ time: 0, pixelRatio: 1 }, ` uniform float pixelRatio;
|
|
4
|
-
uniform float time;
|
|
5
|
-
attribute float size;
|
|
6
|
-
attribute float speed;
|
|
7
|
-
attribute float opacity;
|
|
8
|
-
attribute vec3 noise;
|
|
9
|
-
attribute vec3 color;
|
|
10
|
-
varying vec3 vColor;
|
|
11
|
-
varying float vOpacity;
|
|
12
|
-
void main() {
|
|
13
|
-
vec4 modelPosition = modelMatrix * vec4(position, 1.0);
|
|
14
|
-
modelPosition.y += sin(time * speed + modelPosition.x * noise.x * 100.0) * 0.2;
|
|
15
|
-
modelPosition.z += cos(time * speed + modelPosition.x * noise.y * 100.0) * 0.2;
|
|
16
|
-
modelPosition.x += cos(time * speed + modelPosition.x * noise.z * 100.0) * 0.2;
|
|
17
|
-
vec4 viewPosition = viewMatrix * modelPosition;
|
|
18
|
-
vec4 projectionPostion = projectionMatrix * viewPosition;
|
|
19
|
-
gl_Position = projectionPostion;
|
|
20
|
-
gl_PointSize = size * 25. * pixelRatio;
|
|
21
|
-
gl_PointSize *= (1.0 / - viewPosition.z);
|
|
22
|
-
vColor = color;
|
|
23
|
-
vOpacity = opacity;
|
|
24
|
-
}`, ` varying vec3 vColor;
|
|
25
|
-
varying float vOpacity;
|
|
26
|
-
void main() {
|
|
27
|
-
float distanceToCenter = distance(gl_PointCoord, vec2(0.5));
|
|
28
|
-
float strength = 0.05 / distanceToCenter - 0.1;
|
|
29
|
-
gl_FragColor = vec4(vColor, strength * vOpacity);
|
|
30
|
-
#include <tonemapping_fragment>
|
|
31
|
-
#include <${parseInt(THREE.REVISION.replace(/\D+/g, '')) >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
|
|
32
|
-
}`);
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhcmtsZXMtbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc2hhZGVycy9zcmMvc3BhcmtsZXMtbWF0ZXJpYWwvc3BhcmtsZXMtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXBFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FDN0MsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFDMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQXFCSyxFQUNMOzs7Ozs7O2tCQU9pQixRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsb0JBQW9CO01BQzlHLENBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTmd0U2hhZGVyTWF0ZXJpYWwgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IHNoYWRlck1hdGVyaWFsIH0gZnJvbSAnLi4vc2hhZGVyLW1hdGVyaWFsL3NoYWRlci1tYXRlcmlhbCc7XG5cbmV4cG9ydCBjb25zdCBTcGFya2xlc01hdGVyaWFsID0gc2hhZGVyTWF0ZXJpYWwoXG5cdHsgdGltZTogMCwgcGl4ZWxSYXRpbzogMSB9LFxuXHRgIHVuaWZvcm0gZmxvYXQgcGl4ZWxSYXRpbztcbiAgICB1bmlmb3JtIGZsb2F0IHRpbWU7XG4gICAgYXR0cmlidXRlIGZsb2F0IHNpemU7XG4gICAgYXR0cmlidXRlIGZsb2F0IHNwZWVkO1xuICAgIGF0dHJpYnV0ZSBmbG9hdCBvcGFjaXR5O1xuICAgIGF0dHJpYnV0ZSB2ZWMzIG5vaXNlO1xuICAgIGF0dHJpYnV0ZSB2ZWMzIGNvbG9yO1xuICAgIHZhcnlpbmcgdmVjMyB2Q29sb3I7XG4gICAgdmFyeWluZyBmbG9hdCB2T3BhY2l0eTtcbiAgICB2b2lkIG1haW4oKSB7XG4gICAgICB2ZWM0IG1vZGVsUG9zaXRpb24gPSBtb2RlbE1hdHJpeCAqIHZlYzQocG9zaXRpb24sIDEuMCk7XG4gICAgICBtb2RlbFBvc2l0aW9uLnkgKz0gc2luKHRpbWUgKiBzcGVlZCArIG1vZGVsUG9zaXRpb24ueCAqIG5vaXNlLnggKiAxMDAuMCkgKiAwLjI7XG4gICAgICBtb2RlbFBvc2l0aW9uLnogKz0gY29zKHRpbWUgKiBzcGVlZCArIG1vZGVsUG9zaXRpb24ueCAqIG5vaXNlLnkgKiAxMDAuMCkgKiAwLjI7XG4gICAgICBtb2RlbFBvc2l0aW9uLnggKz0gY29zKHRpbWUgKiBzcGVlZCArIG1vZGVsUG9zaXRpb24ueCAqIG5vaXNlLnogKiAxMDAuMCkgKiAwLjI7XG4gICAgICB2ZWM0IHZpZXdQb3NpdGlvbiA9IHZpZXdNYXRyaXggKiBtb2RlbFBvc2l0aW9uO1xuICAgICAgdmVjNCBwcm9qZWN0aW9uUG9zdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiB2aWV3UG9zaXRpb247XG4gICAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25Qb3N0aW9uO1xuICAgICAgZ2xfUG9pbnRTaXplID0gc2l6ZSAqIDI1LiAqIHBpeGVsUmF0aW87XG4gICAgICBnbF9Qb2ludFNpemUgKj0gKDEuMCAvIC0gdmlld1Bvc2l0aW9uLnopO1xuICAgICAgdkNvbG9yID0gY29sb3I7XG4gICAgICB2T3BhY2l0eSA9IG9wYWNpdHk7XG4gICAgfWAsXG5cdGAgdmFyeWluZyB2ZWMzIHZDb2xvcjtcbiAgICB2YXJ5aW5nIGZsb2F0IHZPcGFjaXR5O1xuICAgIHZvaWQgbWFpbigpIHtcbiAgICAgIGZsb2F0IGRpc3RhbmNlVG9DZW50ZXIgPSBkaXN0YW5jZShnbF9Qb2ludENvb3JkLCB2ZWMyKDAuNSkpO1xuICAgICAgZmxvYXQgc3RyZW5ndGggPSAwLjA1IC8gZGlzdGFuY2VUb0NlbnRlciAtIDAuMTtcbiAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQodkNvbG9yLCBzdHJlbmd0aCAqIHZPcGFjaXR5KTtcbiAgICAgICNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cbiAgICAgICNpbmNsdWRlIDwke3BhcnNlSW50KFRIUkVFLlJFVklTSU9OLnJlcGxhY2UoL1xcRCsvZywgJycpKSA+PSAxNTQgPyAnY29sb3JzcGFjZV9mcmFnbWVudCcgOiAnZW5jb2RpbmdzX2ZyYWdtZW50J30+XG4gICAgfWAsXG4pO1xuXG5leHBvcnQgdHlwZSBOZ3RTcGFya2xlc01hdGVyaWFsU3RhdGUgPSB7XG5cdHRpbWU/OiBudW1iZXI7XG5cdHBpeGVsUmF0aW8/OiBudW1iZXI7XG59O1xuXG5kZWNsYXJlIGdsb2JhbCB7XG5cdGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuXHRcdC8qKlxuXHRcdCAqIEBleHRlbmRzIG5ndC1zaGFkZXItbWF0ZXJpYWxcblx0XHQgKi9cblx0XHQnbmd0LXNwYXJrbGVzLW1hdGVyaWFsJzogTmd0U3BhcmtsZXNNYXRlcmlhbFN0YXRlICYgTmd0U2hhZGVyTWF0ZXJpYWw7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import * as THREE from 'three';
|
|
2
|
-
export class SpotLightMaterial extends THREE.ShaderMaterial {
|
|
3
|
-
constructor() {
|
|
4
|
-
super({
|
|
5
|
-
uniforms: {
|
|
6
|
-
depth: { value: null },
|
|
7
|
-
opacity: { value: 1 },
|
|
8
|
-
attenuation: { value: 2.5 },
|
|
9
|
-
anglePower: { value: 12 },
|
|
10
|
-
spotPosition: { value: new THREE.Vector3(0, 0, 0) },
|
|
11
|
-
lightColor: { value: new THREE.Color('white') },
|
|
12
|
-
cameraNear: { value: 0 },
|
|
13
|
-
cameraFar: { value: 1 },
|
|
14
|
-
resolution: { value: new THREE.Vector2(0, 0) },
|
|
15
|
-
},
|
|
16
|
-
transparent: true,
|
|
17
|
-
depthWrite: false,
|
|
18
|
-
vertexShader: /* glsl */ `
|
|
19
|
-
varying vec3 vNormal;
|
|
20
|
-
varying vec3 vWorldPosition;
|
|
21
|
-
varying float vViewZ;
|
|
22
|
-
varying float vIntensity;
|
|
23
|
-
uniform vec3 spotPosition;
|
|
24
|
-
uniform float attenuation;
|
|
25
|
-
|
|
26
|
-
void main() {
|
|
27
|
-
// compute intensity
|
|
28
|
-
vNormal = normalize( normalMatrix * normal );
|
|
29
|
-
vec4 worldPosition = modelMatrix * vec4( position, 1.0 );
|
|
30
|
-
vWorldPosition = worldPosition.xyz;
|
|
31
|
-
vec4 viewPosition = viewMatrix * worldPosition;
|
|
32
|
-
vViewZ = viewPosition.z;
|
|
33
|
-
float intensity = distance(worldPosition.xyz, spotPosition) / attenuation;
|
|
34
|
-
intensity = 1.0 - clamp(intensity, 0.0, 1.0);
|
|
35
|
-
vIntensity = intensity;
|
|
36
|
-
// set gl_Position
|
|
37
|
-
gl_Position = projectionMatrix * viewPosition;
|
|
38
|
-
|
|
39
|
-
}`,
|
|
40
|
-
fragmentShader: /* glsl */ `
|
|
41
|
-
#include <packing>
|
|
42
|
-
|
|
43
|
-
varying vec3 vNormal;
|
|
44
|
-
varying vec3 vWorldPosition;
|
|
45
|
-
uniform vec3 lightColor;
|
|
46
|
-
uniform vec3 spotPosition;
|
|
47
|
-
uniform float attenuation;
|
|
48
|
-
uniform float anglePower;
|
|
49
|
-
uniform sampler2D depth;
|
|
50
|
-
uniform vec2 resolution;
|
|
51
|
-
uniform float cameraNear;
|
|
52
|
-
uniform float cameraFar;
|
|
53
|
-
varying float vViewZ;
|
|
54
|
-
varying float vIntensity;
|
|
55
|
-
uniform float opacity;
|
|
56
|
-
|
|
57
|
-
float readDepth( sampler2D depthSampler, vec2 coord ) {
|
|
58
|
-
float fragCoordZ = texture2D( depthSampler, coord ).x;
|
|
59
|
-
float viewZ = perspectiveDepthToViewZ(fragCoordZ, cameraNear, cameraFar);
|
|
60
|
-
return viewZ;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
void main() {
|
|
64
|
-
float d = 1.0;
|
|
65
|
-
bool isSoft = resolution[0] > 0.0 && resolution[1] > 0.0;
|
|
66
|
-
if (isSoft) {
|
|
67
|
-
vec2 sUv = gl_FragCoord.xy / resolution;
|
|
68
|
-
d = readDepth(depth, sUv);
|
|
69
|
-
}
|
|
70
|
-
float intensity = vIntensity;
|
|
71
|
-
vec3 normal = vec3(vNormal.x, vNormal.y, abs(vNormal.z));
|
|
72
|
-
float angleIntensity = pow( dot(normal, vec3(0.0, 0.0, 1.0)), anglePower );
|
|
73
|
-
intensity *= angleIntensity;
|
|
74
|
-
// fades when z is close to sampled depth, meaning the cone is intersecting existing geometry
|
|
75
|
-
if (isSoft) {
|
|
76
|
-
intensity *= smoothstep(0., 1., vViewZ - d);
|
|
77
|
-
}
|
|
78
|
-
gl_FragColor = vec4(lightColor, intensity * opacity);
|
|
79
|
-
|
|
80
|
-
#include <tonemapping_fragment>
|
|
81
|
-
#include <${parseInt(THREE.REVISION.replace(/\D+/g, '')) >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
|
|
82
|
-
}`,
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvdC1saWdodC1tYXRlcmlhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9zaGFkZXJzL3NyYy9zcG90LWxpZ2h0LW1hdGVyaWFsL3Nwb3QtbGlnaHQtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFL0IsTUFBTSxPQUFPLGlCQUFrQixTQUFRLEtBQUssQ0FBQyxjQUFjO0lBQzFEO1FBQ0MsS0FBSyxDQUFDO1lBQ0wsUUFBUSxFQUFFO2dCQUNULEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQ3RCLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7Z0JBQ3JCLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQzNCLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7Z0JBQ3pCLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtnQkFDbkQsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDL0MsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtnQkFDeEIsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtnQkFDdkIsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7YUFDOUM7WUFDRCxXQUFXLEVBQUUsSUFBSTtZQUNqQixVQUFVLEVBQUUsS0FBSztZQUNqQixZQUFZLEVBQUUsVUFBVSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UUFxQnBCO1lBQ0wsY0FBYyxFQUFFLFVBQVUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUJBeUNYLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxvQkFBb0I7UUFDN0c7U0FDTCxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE5ndFNoYWRlck1hdGVyaWFsIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCBjbGFzcyBTcG90TGlnaHRNYXRlcmlhbCBleHRlbmRzIFRIUkVFLlNoYWRlck1hdGVyaWFsIHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoe1xuXHRcdFx0dW5pZm9ybXM6IHtcblx0XHRcdFx0ZGVwdGg6IHsgdmFsdWU6IG51bGwgfSxcblx0XHRcdFx0b3BhY2l0eTogeyB2YWx1ZTogMSB9LFxuXHRcdFx0XHRhdHRlbnVhdGlvbjogeyB2YWx1ZTogMi41IH0sXG5cdFx0XHRcdGFuZ2xlUG93ZXI6IHsgdmFsdWU6IDEyIH0sXG5cdFx0XHRcdHNwb3RQb3NpdGlvbjogeyB2YWx1ZTogbmV3IFRIUkVFLlZlY3RvcjMoMCwgMCwgMCkgfSxcblx0XHRcdFx0bGlnaHRDb2xvcjogeyB2YWx1ZTogbmV3IFRIUkVFLkNvbG9yKCd3aGl0ZScpIH0sXG5cdFx0XHRcdGNhbWVyYU5lYXI6IHsgdmFsdWU6IDAgfSxcblx0XHRcdFx0Y2FtZXJhRmFyOiB7IHZhbHVlOiAxIH0sXG5cdFx0XHRcdHJlc29sdXRpb246IHsgdmFsdWU6IG5ldyBUSFJFRS5WZWN0b3IyKDAsIDApIH0sXG5cdFx0XHR9LFxuXHRcdFx0dHJhbnNwYXJlbnQ6IHRydWUsXG5cdFx0XHRkZXB0aFdyaXRlOiBmYWxzZSxcblx0XHRcdHZlcnRleFNoYWRlcjogLyogZ2xzbCAqLyBgXG4gICAgICB2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcbiAgICAgIHZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbiAgICAgIHZhcnlpbmcgZmxvYXQgdlZpZXdaO1xuICAgICAgdmFyeWluZyBmbG9hdCB2SW50ZW5zaXR5O1xuICAgICAgdW5pZm9ybSB2ZWMzIHNwb3RQb3NpdGlvbjtcbiAgICAgIHVuaWZvcm0gZmxvYXQgYXR0ZW51YXRpb247XG5cbiAgICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgLy8gY29tcHV0ZSBpbnRlbnNpdHlcbiAgICAgICAgdk5vcm1hbCA9IG5vcm1hbGl6ZSggbm9ybWFsTWF0cml4ICogbm9ybWFsICk7XG4gICAgICAgIHZlYzQgd29ybGRQb3NpdGlvblx0PSBtb2RlbE1hdHJpeCAqIHZlYzQoIHBvc2l0aW9uLCAxLjAgKTtcbiAgICAgICAgdldvcmxkUG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uLnh5ejtcbiAgICAgICAgdmVjNCB2aWV3UG9zaXRpb24gPSB2aWV3TWF0cml4ICogd29ybGRQb3NpdGlvbjtcbiAgICAgICAgdlZpZXdaID0gdmlld1Bvc2l0aW9uLno7XG4gICAgICAgIGZsb2F0IGludGVuc2l0eVx0PSBkaXN0YW5jZSh3b3JsZFBvc2l0aW9uLnh5eiwgc3BvdFBvc2l0aW9uKSAvIGF0dGVudWF0aW9uO1xuICAgICAgICBpbnRlbnNpdHlcdD0gMS4wIC0gY2xhbXAoaW50ZW5zaXR5LCAwLjAsIDEuMCk7XG4gICAgICAgIHZJbnRlbnNpdHkgPSBpbnRlbnNpdHk7XG4gICAgICAgIC8vIHNldCBnbF9Qb3NpdGlvblxuICAgICAgICBnbF9Qb3NpdGlvblx0PSBwcm9qZWN0aW9uTWF0cml4ICogdmlld1Bvc2l0aW9uO1xuXG4gICAgICB9YCxcblx0XHRcdGZyYWdtZW50U2hhZGVyOiAvKiBnbHNsICovIGBcbiAgICAgICNpbmNsdWRlIDxwYWNraW5nPlxuXG4gICAgICB2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcbiAgICAgIHZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbiAgICAgIHVuaWZvcm0gdmVjMyBsaWdodENvbG9yO1xuICAgICAgdW5pZm9ybSB2ZWMzIHNwb3RQb3NpdGlvbjtcbiAgICAgIHVuaWZvcm0gZmxvYXQgYXR0ZW51YXRpb247XG4gICAgICB1bmlmb3JtIGZsb2F0IGFuZ2xlUG93ZXI7XG4gICAgICB1bmlmb3JtIHNhbXBsZXIyRCBkZXB0aDtcbiAgICAgIHVuaWZvcm0gdmVjMiByZXNvbHV0aW9uO1xuICAgICAgdW5pZm9ybSBmbG9hdCBjYW1lcmFOZWFyO1xuICAgICAgdW5pZm9ybSBmbG9hdCBjYW1lcmFGYXI7XG4gICAgICB2YXJ5aW5nIGZsb2F0IHZWaWV3WjtcbiAgICAgIHZhcnlpbmcgZmxvYXQgdkludGVuc2l0eTtcbiAgICAgIHVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcblxuICAgICAgZmxvYXQgcmVhZERlcHRoKCBzYW1wbGVyMkQgZGVwdGhTYW1wbGVyLCB2ZWMyIGNvb3JkICkge1xuICAgICAgICBmbG9hdCBmcmFnQ29vcmRaID0gdGV4dHVyZTJEKCBkZXB0aFNhbXBsZXIsIGNvb3JkICkueDtcbiAgICAgICAgZmxvYXQgdmlld1ogPSBwZXJzcGVjdGl2ZURlcHRoVG9WaWV3WihmcmFnQ29vcmRaLCBjYW1lcmFOZWFyLCBjYW1lcmFGYXIpO1xuICAgICAgICByZXR1cm4gdmlld1o7XG4gICAgICB9XG5cbiAgICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgZmxvYXQgZCA9IDEuMDtcbiAgICAgICAgYm9vbCBpc1NvZnQgPSByZXNvbHV0aW9uWzBdID4gMC4wICYmIHJlc29sdXRpb25bMV0gPiAwLjA7XG4gICAgICAgIGlmIChpc1NvZnQpIHtcbiAgICAgICAgICB2ZWMyIHNVdiA9IGdsX0ZyYWdDb29yZC54eSAvIHJlc29sdXRpb247XG4gICAgICAgICAgZCA9IHJlYWREZXB0aChkZXB0aCwgc1V2KTtcbiAgICAgICAgfVxuICAgICAgICBmbG9hdCBpbnRlbnNpdHkgPSB2SW50ZW5zaXR5O1xuICAgICAgICB2ZWMzIG5vcm1hbFx0PSB2ZWMzKHZOb3JtYWwueCwgdk5vcm1hbC55LCBhYnModk5vcm1hbC56KSk7XG4gICAgICAgIGZsb2F0IGFuZ2xlSW50ZW5zaXR5XHQ9IHBvdyggZG90KG5vcm1hbCwgdmVjMygwLjAsIDAuMCwgMS4wKSksIGFuZ2xlUG93ZXIgKTtcbiAgICAgICAgaW50ZW5zaXR5XHQqPSBhbmdsZUludGVuc2l0eTtcbiAgICAgICAgLy8gZmFkZXMgd2hlbiB6IGlzIGNsb3NlIHRvIHNhbXBsZWQgZGVwdGgsIG1lYW5pbmcgdGhlIGNvbmUgaXMgaW50ZXJzZWN0aW5nIGV4aXN0aW5nIGdlb21ldHJ5XG4gICAgICAgIGlmIChpc1NvZnQpIHtcbiAgICAgICAgICBpbnRlbnNpdHlcdCo9IHNtb290aHN0ZXAoMC4sIDEuLCB2Vmlld1ogLSBkKTtcbiAgICAgICAgfVxuICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGxpZ2h0Q29sb3IsIGludGVuc2l0eSAqIG9wYWNpdHkpO1xuXG4gICAgICAgICNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0ICAgICAgI2luY2x1ZGUgPCR7cGFyc2VJbnQoVEhSRUUuUkVWSVNJT04ucmVwbGFjZSgvXFxEKy9nLCAnJykpID49IDE1NCA/ICdjb2xvcnNwYWNlX2ZyYWdtZW50JyA6ICdlbmNvZGluZ3NfZnJhZ21lbnQnfT5cbiAgICAgIH1gLFxuXHRcdH0pO1xuXHR9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcblx0aW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG5cdFx0LyoqXG5cdFx0ICogQGV4dGVuZHMgbmd0LXNoYWRlci1tYXRlcmlhbFxuXHRcdCAqL1xuXHRcdCduZ3Qtc3BvdC1saWdodC1tYXRlcmlhbCc6IE5ndFNoYWRlck1hdGVyaWFsO1xuXHR9XG59XG4iXX0=
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import * as THREE from 'three';
|
|
2
|
-
import { shaderMaterial } from '../shader-material/shader-material';
|
|
3
|
-
export const StarFieldMaterial = shaderMaterial({ time: 0.0, fade: 0.0 },
|
|
4
|
-
// language=GLSL
|
|
5
|
-
`
|
|
6
|
-
uniform float time;
|
|
7
|
-
attribute float size;
|
|
8
|
-
varying vec3 vColor;
|
|
9
|
-
void main() {
|
|
10
|
-
vColor = color;
|
|
11
|
-
vec4 mvPosition = modelViewMatrix * vec4(position, 0.5);
|
|
12
|
-
gl_PointSize = size * (30.0 / -mvPosition.z) * (3.0 + sin(time + 100.0));
|
|
13
|
-
gl_Position = projectionMatrix * mvPosition;
|
|
14
|
-
}
|
|
15
|
-
`,
|
|
16
|
-
// language=GLSL
|
|
17
|
-
`
|
|
18
|
-
uniform sampler2D pointTexture;
|
|
19
|
-
uniform float fade;
|
|
20
|
-
varying vec3 vColor;
|
|
21
|
-
void main() {
|
|
22
|
-
float opacity = 1.0;
|
|
23
|
-
if (fade == 1.0) {
|
|
24
|
-
float d = distance(gl_PointCoord, vec2(0.5, 0.5));
|
|
25
|
-
opacity = 1.0 / (1.0 + exp(16.0 * (d - 0.25)));
|
|
26
|
-
}
|
|
27
|
-
gl_FragColor = vec4(vColor, opacity);
|
|
28
|
-
|
|
29
|
-
#include <tonemapping_fragment>
|
|
30
|
-
#include <${parseInt(THREE.REVISION.replace(/\D+/g, '')) >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
|
|
31
|
-
}
|
|
32
|
-
`);
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rhci1maWVsZC1tYXRlcmlhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9zaGFkZXJzL3NyYy9zdGFyLWZpZWxkLW1hdGVyaWFsL3N0YXItZmllbGQtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXBFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGNBQWMsQ0FDOUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUU7QUFDeEIsZ0JBQWdCO0FBQ2hCOzs7Ozs7Ozs7O0dBVUU7QUFDRixnQkFBZ0I7QUFDaEI7Ozs7Ozs7Ozs7Ozs7YUFhWSxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsb0JBQW9COztHQUU1RyxDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE5ndFNoYWRlck1hdGVyaWFsIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBzaGFkZXJNYXRlcmlhbCB9IGZyb20gJy4uL3NoYWRlci1tYXRlcmlhbC9zaGFkZXItbWF0ZXJpYWwnO1xuXG5leHBvcnQgY29uc3QgU3RhckZpZWxkTWF0ZXJpYWwgPSBzaGFkZXJNYXRlcmlhbChcblx0eyB0aW1lOiAwLjAsIGZhZGU6IDAuMCB9LFxuXHQvLyBsYW5ndWFnZT1HTFNMXG5cdGBcbnVuaWZvcm0gZmxvYXQgdGltZTtcbmF0dHJpYnV0ZSBmbG9hdCBzaXplO1xudmFyeWluZyB2ZWMzIHZDb2xvcjtcbnZvaWQgbWFpbigpIHtcbiAgdkNvbG9yID0gY29sb3I7XG4gIHZlYzQgbXZQb3NpdGlvbiA9IG1vZGVsVmlld01hdHJpeCAqIHZlYzQocG9zaXRpb24sIDAuNSk7XG4gIGdsX1BvaW50U2l6ZSA9IHNpemUgKiAoMzAuMCAvIC1tdlBvc2l0aW9uLnopICogKDMuMCArIHNpbih0aW1lICsgMTAwLjApKTtcbiAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbXZQb3NpdGlvbjtcbn1cbiAgYCxcblx0Ly8gbGFuZ3VhZ2U9R0xTTFxuXHRgXG51bmlmb3JtIHNhbXBsZXIyRCBwb2ludFRleHR1cmU7XG51bmlmb3JtIGZsb2F0IGZhZGU7XG52YXJ5aW5nIHZlYzMgdkNvbG9yO1xudm9pZCBtYWluKCkge1xuICBmbG9hdCBvcGFjaXR5ID0gMS4wO1xuICBpZiAoZmFkZSA9PSAxLjApIHtcbiAgICBmbG9hdCBkID0gZGlzdGFuY2UoZ2xfUG9pbnRDb29yZCwgdmVjMigwLjUsIDAuNSkpO1xuICAgIG9wYWNpdHkgPSAxLjAgLyAoMS4wICsgZXhwKDE2LjAgKiAoZCAtIDAuMjUpKSk7XG4gIH1cbiAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh2Q29sb3IsIG9wYWNpdHkpO1xuXG4gICNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPCR7cGFyc2VJbnQoVEhSRUUuUkVWSVNJT04ucmVwbGFjZSgvXFxEKy9nLCAnJykpID49IDE1NCA/ICdjb2xvcnNwYWNlX2ZyYWdtZW50JyA6ICdlbmNvZGluZ3NfZnJhZ21lbnQnfT5cbn1cbiAgYCxcbik7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcblx0aW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG5cdFx0LyoqXG5cdFx0ICogQGV4dGVuZHMgbmd0LXNoYWRlci1tYXRlcmlhbFxuXHRcdCAqL1xuXHRcdCduZ3Qtc3Rhci1maWVsZC1tYXRlcmlhbCc6IE5ndFNoYWRlck1hdGVyaWFsO1xuXHR9XG59XG4iXX0=
|