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,182 +0,0 @@
|
|
|
1
|
-
import { CUSTOM_ELEMENTS_SCHEMA, Component, Injector, Input, NgZone, computed, effect, forwardRef, inject, signal, untracked, } from '@angular/core';
|
|
2
|
-
import { NgtArgs, createInjectionToken, extend, injectBeforeRender, injectNgtRef, is, signalStore, } from 'angular-three';
|
|
3
|
-
import * as THREE from 'three';
|
|
4
|
-
import { Line2, LineMaterial, LineSegmentsGeometry } from 'three-stdlib';
|
|
5
|
-
import { SegmentObject } from './segment-object';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
const normPos = (pos) => pos instanceof THREE.Vector3
|
|
8
|
-
? pos
|
|
9
|
-
: new THREE.Vector3(...(typeof pos === 'number' ? [pos, pos, pos] : pos));
|
|
10
|
-
extend({ SegmentObject });
|
|
11
|
-
export const [injectNgtsSegmentsApi, provideNgtsSegmentsApi] = createInjectionToken((segments) => segments.api, { isRoot: false, deps: [forwardRef(() => NgtsSegments)] });
|
|
12
|
-
export class NgtsSegment {
|
|
13
|
-
constructor() {
|
|
14
|
-
this.inputs = signalStore({});
|
|
15
|
-
this.segmentRef = injectNgtRef();
|
|
16
|
-
this.segmentsApi = injectNgtsSegmentsApi();
|
|
17
|
-
this.injector = inject(Injector);
|
|
18
|
-
this.zone = inject(NgZone);
|
|
19
|
-
this.start = this.inputs.select('start');
|
|
20
|
-
this.end = this.inputs.select('end');
|
|
21
|
-
this.normalizedStart = computed(() => normPos(this.start()));
|
|
22
|
-
this.normalizedEnd = computed(() => normPos(this.end()));
|
|
23
|
-
this.color = this.inputs.select('color');
|
|
24
|
-
}
|
|
25
|
-
set _start(start) {
|
|
26
|
-
this.inputs.set({ start });
|
|
27
|
-
}
|
|
28
|
-
set _end(end) {
|
|
29
|
-
this.inputs.set({ end });
|
|
30
|
-
}
|
|
31
|
-
set _color(color) {
|
|
32
|
-
this.inputs.set({ color });
|
|
33
|
-
}
|
|
34
|
-
ngOnInit() {
|
|
35
|
-
effect((onCleanup) => {
|
|
36
|
-
const cleanup = this.zone.runOutsideAngular(() => {
|
|
37
|
-
const api = this.segmentsApi();
|
|
38
|
-
return api.subscribe(this.segmentRef);
|
|
39
|
-
});
|
|
40
|
-
onCleanup(cleanup);
|
|
41
|
-
}, { injector: this.injector });
|
|
42
|
-
}
|
|
43
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSegment, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
44
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsSegment, isStandalone: true, selector: "ngts-segment", inputs: { segmentRef: "segmentRef", _start: ["start", "_start"], _end: ["end", "_end"], _color: ["color", "_color"] }, ngImport: i0, template: `
|
|
45
|
-
<ngt-segment-object [ref]="segmentRef" [color]="color()" [start]="normalizedStart()" [end]="normalizedEnd()" />
|
|
46
|
-
`, isInline: true }); }
|
|
47
|
-
}
|
|
48
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSegment, decorators: [{
|
|
49
|
-
type: Component,
|
|
50
|
-
args: [{
|
|
51
|
-
selector: 'ngts-segment',
|
|
52
|
-
standalone: true,
|
|
53
|
-
template: `
|
|
54
|
-
<ngt-segment-object [ref]="segmentRef" [color]="color()" [start]="normalizedStart()" [end]="normalizedEnd()" />
|
|
55
|
-
`,
|
|
56
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
57
|
-
}]
|
|
58
|
-
}], propDecorators: { segmentRef: [{
|
|
59
|
-
type: Input
|
|
60
|
-
}], _start: [{
|
|
61
|
-
type: Input,
|
|
62
|
-
args: [{ alias: 'start' }]
|
|
63
|
-
}], _end: [{
|
|
64
|
-
type: Input,
|
|
65
|
-
args: [{ alias: 'end' }]
|
|
66
|
-
}], _color: [{
|
|
67
|
-
type: Input,
|
|
68
|
-
args: [{ alias: 'color' }]
|
|
69
|
-
}] } });
|
|
70
|
-
export class NgtsSegments {
|
|
71
|
-
set _limit(limit) {
|
|
72
|
-
this.inputs.set({ limit });
|
|
73
|
-
}
|
|
74
|
-
set _lineWidth(lineWidth) {
|
|
75
|
-
this.inputs.set({ lineWidth });
|
|
76
|
-
}
|
|
77
|
-
constructor() {
|
|
78
|
-
this.inputs = signalStore({ limit: 1000, lineWidth: 1 });
|
|
79
|
-
this.segmentsRef = injectNgtRef();
|
|
80
|
-
this.segments = signal([]);
|
|
81
|
-
this.limit = this.inputs.select('limit');
|
|
82
|
-
this.positions = computed(() => Array(this.limit() * 6).fill(0));
|
|
83
|
-
this.colors = computed(() => Array(this.limit() * 6).fill(0));
|
|
84
|
-
this.resolution = new THREE.Vector2(512, 512);
|
|
85
|
-
this.lineWidth = this.inputs.select('lineWidth');
|
|
86
|
-
this.line = new Line2();
|
|
87
|
-
this.material = new LineMaterial();
|
|
88
|
-
this.geometry = new LineSegmentsGeometry();
|
|
89
|
-
this.api = computed(() => ({
|
|
90
|
-
subscribe: (segmentRef) => {
|
|
91
|
-
untracked(() => {
|
|
92
|
-
this.segments.update((s) => [...s, segmentRef]);
|
|
93
|
-
});
|
|
94
|
-
return () => {
|
|
95
|
-
untracked(() => {
|
|
96
|
-
this.segments.update((s) => s.filter((segment) => segment !== segmentRef));
|
|
97
|
-
});
|
|
98
|
-
};
|
|
99
|
-
},
|
|
100
|
-
}));
|
|
101
|
-
this.beforeRender();
|
|
102
|
-
}
|
|
103
|
-
beforeRender() {
|
|
104
|
-
injectBeforeRender(() => {
|
|
105
|
-
const [segments, limit, positions, colors] = [
|
|
106
|
-
this.segments(),
|
|
107
|
-
this.limit(),
|
|
108
|
-
this.positions(),
|
|
109
|
-
this.colors(),
|
|
110
|
-
];
|
|
111
|
-
for (let i = 0; i < limit; i++) {
|
|
112
|
-
const segmentRef = segments[i];
|
|
113
|
-
const segment = is.ref(segmentRef) ? segmentRef.nativeElement : segmentRef;
|
|
114
|
-
if (segment) {
|
|
115
|
-
positions[i * 6 + 0] = segment.start.x;
|
|
116
|
-
positions[i * 6 + 1] = segment.start.y;
|
|
117
|
-
positions[i * 6 + 2] = segment.start.z;
|
|
118
|
-
positions[i * 6 + 3] = segment.end.x;
|
|
119
|
-
positions[i * 6 + 4] = segment.end.y;
|
|
120
|
-
positions[i * 6 + 5] = segment.end.z;
|
|
121
|
-
colors[i * 6 + 0] = segment.color.r;
|
|
122
|
-
colors[i * 6 + 1] = segment.color.g;
|
|
123
|
-
colors[i * 6 + 2] = segment.color.b;
|
|
124
|
-
colors[i * 6 + 3] = segment.color.r;
|
|
125
|
-
colors[i * 6 + 4] = segment.color.g;
|
|
126
|
-
colors[i * 6 + 5] = segment.color.b;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
this.geometry.setColors(colors);
|
|
130
|
-
this.geometry.setPositions(positions);
|
|
131
|
-
this.line.computeLineDistances();
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSegments, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
135
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsSegments, isStandalone: true, selector: "ngts-segments", inputs: { segmentsRef: "segmentsRef", _limit: ["limit", "_limit"], _lineWidth: ["lineWidth", "_lineWidth"] }, providers: [provideNgtsSegmentsApi()], ngImport: i0, template: `
|
|
136
|
-
<ngt-primitive *args="[line]" [ref]="segmentsRef">
|
|
137
|
-
<ngt-primitive *args="[geometry]" attach="geometry" />
|
|
138
|
-
<ngt-primitive
|
|
139
|
-
*args="[material]"
|
|
140
|
-
attach="material"
|
|
141
|
-
ngtCompound
|
|
142
|
-
[vertexColors]="true"
|
|
143
|
-
[resolution]="resolution"
|
|
144
|
-
[linewidth]="lineWidth()"
|
|
145
|
-
/>
|
|
146
|
-
<ng-content />
|
|
147
|
-
</ngt-primitive>
|
|
148
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
|
|
149
|
-
}
|
|
150
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSegments, decorators: [{
|
|
151
|
-
type: Component,
|
|
152
|
-
args: [{
|
|
153
|
-
selector: 'ngts-segments',
|
|
154
|
-
standalone: true,
|
|
155
|
-
template: `
|
|
156
|
-
<ngt-primitive *args="[line]" [ref]="segmentsRef">
|
|
157
|
-
<ngt-primitive *args="[geometry]" attach="geometry" />
|
|
158
|
-
<ngt-primitive
|
|
159
|
-
*args="[material]"
|
|
160
|
-
attach="material"
|
|
161
|
-
ngtCompound
|
|
162
|
-
[vertexColors]="true"
|
|
163
|
-
[resolution]="resolution"
|
|
164
|
-
[linewidth]="lineWidth()"
|
|
165
|
-
/>
|
|
166
|
-
<ng-content />
|
|
167
|
-
</ngt-primitive>
|
|
168
|
-
`,
|
|
169
|
-
imports: [NgtArgs],
|
|
170
|
-
providers: [provideNgtsSegmentsApi()],
|
|
171
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
172
|
-
}]
|
|
173
|
-
}], ctorParameters: function () { return []; }, propDecorators: { segmentsRef: [{
|
|
174
|
-
type: Input
|
|
175
|
-
}], _limit: [{
|
|
176
|
-
type: Input,
|
|
177
|
-
args: [{ alias: 'limit' }]
|
|
178
|
-
}], _lineWidth: [{
|
|
179
|
-
type: Input,
|
|
180
|
-
args: [{ alias: 'lineWidth' }]
|
|
181
|
-
}] } });
|
|
182
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvcGVyZm9ybWFuY2VzL3NyYy9zZWdtZW50cy9zZWdtZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsR0FFVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ04sT0FBTyxFQUNQLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixFQUFFLEVBQ0YsV0FBVyxHQUlYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFxQmpELE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBOEIsRUFBMEIsRUFBRSxDQUMxRSxHQUFHLFlBQVksS0FBSyxDQUFDLE9BQU87SUFDM0IsQ0FBQyxDQUFDLEdBQUc7SUFDTCxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUE4QixDQUFDLENBQUM7QUFFMUcsTUFBTSxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztBQUUxQixNQUFNLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLHNCQUFzQixDQUFDLEdBQUcsb0JBQW9C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QztnQkFDM0UsSUFBSSxPQUFPLEVBQUU7b0JBQ1osU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQ3ZDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUN2QyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFFdkMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ3JDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUNyQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFFckMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQ3BDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUNwQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFFcEMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQ3BDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUNwQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDcEM7YUFDRDtZQUNELElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBNUVXLFlBQVk7a0dBQVosWUFBWSwwS0FIYixDQUFDLHNCQUFzQixFQUFFLENBQUMsMEJBZjNCOzs7Ozs7Ozs7Ozs7O0VBYVQsNERBQ1MsT0FBTzs7MkZBSUwsWUFBWTtrQkFyQnhCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7RUFhVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2xCLFNBQVMsRUFBRSxDQUFDLHNCQUFzQixFQUFFLENBQUM7b0JBQ3JDLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNqQzswRUFJUyxXQUFXO3NCQUFuQixLQUFLO2dCQUV5QixNQUFNO3NCQUFwQyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtnQkFJVSxVQUFVO3NCQUE1QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdENvbXBvbmVudCxcblx0SW5qZWN0b3IsXG5cdElucHV0LFxuXHROZ1pvbmUsXG5cdGNvbXB1dGVkLFxuXHRlZmZlY3QsXG5cdGZvcndhcmRSZWYsXG5cdGluamVjdCxcblx0c2lnbmFsLFxuXHR1bnRyYWNrZWQsXG5cdHR5cGUgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG5cdE5ndEFyZ3MsXG5cdGNyZWF0ZUluamVjdGlvblRva2VuLFxuXHRleHRlbmQsXG5cdGluamVjdEJlZm9yZVJlbmRlcixcblx0aW5qZWN0Tmd0UmVmLFxuXHRpcyxcblx0c2lnbmFsU3RvcmUsXG5cdHR5cGUgTmd0Q29sb3IsXG5cdHR5cGUgTmd0UmVmLFxuXHR0eXBlIE5ndFZlY3RvcjMsXG59IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTGluZTIsIExpbmVNYXRlcmlhbCwgTGluZVNlZ21lbnRzR2VvbWV0cnkgfSBmcm9tICd0aHJlZS1zdGRsaWInO1xuaW1wb3J0IHsgU2VnbWVudE9iamVjdCB9IGZyb20gJy4vc2VnbWVudC1vYmplY3QnO1xuXG5leHBvcnQgdHlwZSBOZ3RzU2VnbWVudFN0YXRlID0ge1xuXHRzdGFydD86IE5ndFZlY3RvcjM7XG5cdGVuZD86IE5ndFZlY3RvcjM7XG5cdGNvbG9yPzogTmd0Q29sb3I7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RzU2VnbWVudHNTdGF0ZSA9IHtcblx0bGltaXQ6IG51bWJlcjtcblx0bGluZVdpZHRoOiBudW1iZXI7XG59O1xuXG5kZWNsYXJlIGdsb2JhbCB7XG5cdGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuXHRcdCduZ3Qtc2VnbWVudC1vYmplY3QnOiBTZWdtZW50T2JqZWN0O1xuXHRcdCduZ3RzLXNlZ21lbnQnOiBOZ3RzU2VnbWVudFN0YXRlO1xuXHRcdCduZ3RzLXNlZ21lbnRzJzogTmd0c1NlZ21lbnRzU3RhdGU7XG5cdH1cbn1cblxuY29uc3Qgbm9ybVBvcyA9IChwb3M6IE5ndHNTZWdtZW50U3RhdGVbJ3N0YXJ0J10pOiBTZWdtZW50T2JqZWN0WydzdGFydCddID0+XG5cdHBvcyBpbnN0YW5jZW9mIFRIUkVFLlZlY3RvcjNcblx0XHQ/IHBvc1xuXHRcdDogbmV3IFRIUkVFLlZlY3RvcjMoLi4uKCh0eXBlb2YgcG9zID09PSAnbnVtYmVyJyA/IFtwb3MsIHBvcywgcG9zXSA6IHBvcykgYXMgW251bWJlciwgbnVtYmVyLCBudW1iZXJdKSk7XG5cbmV4dGVuZCh7IFNlZ21lbnRPYmplY3QgfSk7XG5cbmV4cG9ydCBjb25zdCBbaW5qZWN0Tmd0c1NlZ21lbnRzQXBpLCBwcm92aWRlTmd0c1NlZ21lbnRzQXBpXSA9IGNyZWF0ZUluamVjdGlvblRva2VuKFxuXHQoc2VnbWVudHM6IE5ndHNTZWdtZW50cykgPT4gc2VnbWVudHMuYXBpLFxuXHR7IGlzUm9vdDogZmFsc2UsIGRlcHM6IFtmb3J3YXJkUmVmKCgpID0+IE5ndHNTZWdtZW50cyldIH0sXG4pO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXNlZ21lbnQnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3Qtc2VnbWVudC1vYmplY3QgW3JlZl09XCJzZWdtZW50UmVmXCIgW2NvbG9yXT1cImNvbG9yKClcIiBbc3RhcnRdPVwibm9ybWFsaXplZFN0YXJ0KClcIiBbZW5kXT1cIm5vcm1hbGl6ZWRFbmQoKVwiIC8+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c1NlZ21lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXHRwcml2YXRlIGlucHV0cyA9IHNpZ25hbFN0b3JlPE5ndHNTZWdtZW50U3RhdGU+KHt9KTtcblxuXHRASW5wdXQoKSBzZWdtZW50UmVmID0gaW5qZWN0Tmd0UmVmPFNlZ21lbnRPYmplY3Q+KCk7XG5cblx0QElucHV0KHsgYWxpYXM6ICdzdGFydCcgfSkgc2V0IF9zdGFydChzdGFydDogTmd0VmVjdG9yMykge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHN0YXJ0IH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdlbmQnIH0pIHNldCBfZW5kKGVuZDogTmd0VmVjdG9yMykge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGVuZCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnY29sb3InIH0pIHNldCBfY29sb3IoY29sb3I6IE5ndENvbG9yKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgY29sb3IgfSk7XG5cdH1cblxuXHRwcml2YXRlIHNlZ21lbnRzQXBpID0gaW5qZWN0Tmd0c1NlZ21lbnRzQXBpKCk7XG5cdHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXHRwcml2YXRlIHpvbmUgPSBpbmplY3QoTmdab25lKTtcblxuXHRwcml2YXRlIHN0YXJ0ID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdzdGFydCcpO1xuXHRwcml2YXRlIGVuZCA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZW5kJyk7XG5cblx0bm9ybWFsaXplZFN0YXJ0ID0gY29tcHV0ZWQoKCkgPT4gbm9ybVBvcyh0aGlzLnN0YXJ0KCkpKTtcblx0bm9ybWFsaXplZEVuZCA9IGNvbXB1dGVkKCgpID0+IG5vcm1Qb3ModGhpcy5lbmQoKSkpO1xuXHRjb2xvciA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnY29sb3InKTtcblxuXHRuZ09uSW5pdCgpIHtcblx0XHRlZmZlY3QoXG5cdFx0XHQob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGNsZWFudXAgPSB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IGFwaSA9IHRoaXMuc2VnbWVudHNBcGkoKTtcblx0XHRcdFx0XHRyZXR1cm4gYXBpLnN1YnNjcmliZSh0aGlzLnNlZ21lbnRSZWYpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0b25DbGVhbnVwKGNsZWFudXApO1xuXHRcdFx0fSxcblx0XHRcdHsgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IgfSxcblx0XHQpO1xuXHR9XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtc2VnbWVudHMnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcHJpbWl0aXZlICphcmdzPVwiW2xpbmVdXCIgW3JlZl09XCJzZWdtZW50c1JlZlwiPlxuXHRcdFx0PG5ndC1wcmltaXRpdmUgKmFyZ3M9XCJbZ2VvbWV0cnldXCIgYXR0YWNoPVwiZ2VvbWV0cnlcIiAvPlxuXHRcdFx0PG5ndC1wcmltaXRpdmVcblx0XHRcdFx0KmFyZ3M9XCJbbWF0ZXJpYWxdXCJcblx0XHRcdFx0YXR0YWNoPVwibWF0ZXJpYWxcIlxuXHRcdFx0XHRuZ3RDb21wb3VuZFxuXHRcdFx0XHRbdmVydGV4Q29sb3JzXT1cInRydWVcIlxuXHRcdFx0XHRbcmVzb2x1dGlvbl09XCJyZXNvbHV0aW9uXCJcblx0XHRcdFx0W2xpbmV3aWR0aF09XCJsaW5lV2lkdGgoKVwiXG5cdFx0XHQvPlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1wcmltaXRpdmU+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RBcmdzXSxcblx0cHJvdmlkZXJzOiBbcHJvdmlkZU5ndHNTZWdtZW50c0FwaSgpXSxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzU2VnbWVudHMge1xuXHRwcml2YXRlIGlucHV0cyA9IHNpZ25hbFN0b3JlPE5ndHNTZWdtZW50c1N0YXRlPih7IGxpbWl0OiAxMDAwLCBsaW5lV2lkdGg6IDEgfSk7XG5cblx0QElucHV0KCkgc2VnbWVudHNSZWYgPSBpbmplY3ROZ3RSZWY8TGluZTI+KCk7XG5cblx0QElucHV0KHsgYWxpYXM6ICdsaW1pdCcgfSkgc2V0IF9saW1pdChsaW1pdDogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgbGltaXQgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2xpbmVXaWR0aCcgfSkgc2V0IF9saW5lV2lkdGgobGluZVdpZHRoOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBsaW5lV2lkdGggfSk7XG5cdH1cblxuXHRwcml2YXRlIHNlZ21lbnRzID0gc2lnbmFsPE5ndFJlZjxTZWdtZW50T2JqZWN0PltdPihbXSk7XG5cdHByaXZhdGUgbGltaXQgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2xpbWl0Jyk7XG5cblx0cHJpdmF0ZSBwb3NpdGlvbnMgPSBjb21wdXRlZCgoKSA9PiBBcnJheSh0aGlzLmxpbWl0KCkgKiA2KS5maWxsKDApKTtcblx0cHJpdmF0ZSBjb2xvcnMgPSBjb21wdXRlZCgoKSA9PiBBcnJheSh0aGlzLmxpbWl0KCkgKiA2KS5maWxsKDApKTtcblxuXHRyZXNvbHV0aW9uID0gbmV3IFRIUkVFLlZlY3RvcjIoNTEyLCA1MTIpO1xuXHRsaW5lV2lkdGggPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2xpbmVXaWR0aCcpO1xuXHRsaW5lID0gbmV3IExpbmUyKCk7XG5cdG1hdGVyaWFsID0gbmV3IExpbmVNYXRlcmlhbCgpO1xuXHRnZW9tZXRyeSA9IG5ldyBMaW5lU2VnbWVudHNHZW9tZXRyeSgpO1xuXG5cdGFwaSA9IGNvbXB1dGVkKCgpID0+ICh7XG5cdFx0c3Vic2NyaWJlOiAoc2VnbWVudFJlZjogTmd0UmVmPFNlZ21lbnRPYmplY3Q+KSA9PiB7XG5cdFx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLnNlZ21lbnRzLnVwZGF0ZSgocykgPT4gWy4uLnMsIHNlZ21lbnRSZWZdKTtcblx0XHRcdH0pO1xuXG5cdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuc2VnbWVudHMudXBkYXRlKChzKSA9PiBzLmZpbHRlcigoc2VnbWVudCkgPT4gc2VnbWVudCAhPT0gc2VnbWVudFJlZikpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH07XG5cdFx0fSxcblx0fSkpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuYmVmb3JlUmVuZGVyKCk7XG5cdH1cblxuXHRwcml2YXRlIGJlZm9yZVJlbmRlcigpIHtcblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuXHRcdFx0Y29uc3QgW3NlZ21lbnRzLCBsaW1pdCwgcG9zaXRpb25zLCBjb2xvcnNdID0gW1xuXHRcdFx0XHR0aGlzLnNlZ21lbnRzKCksXG5cdFx0XHRcdHRoaXMubGltaXQoKSxcblx0XHRcdFx0dGhpcy5wb3NpdGlvbnMoKSxcblx0XHRcdFx0dGhpcy5jb2xvcnMoKSxcblx0XHRcdF07XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGxpbWl0OyBpKyspIHtcblx0XHRcdFx0Y29uc3Qgc2VnbWVudFJlZiA9IHNlZ21lbnRzW2ldO1xuXHRcdFx0XHRjb25zdCBzZWdtZW50ID0gaXMucmVmKHNlZ21lbnRSZWYpID8gc2VnbWVudFJlZi5uYXRpdmVFbGVtZW50IDogc2VnbWVudFJlZjtcblx0XHRcdFx0aWYgKHNlZ21lbnQpIHtcblx0XHRcdFx0XHRwb3NpdGlvbnNbaSAqIDYgKyAwXSA9IHNlZ21lbnQuc3RhcnQueDtcblx0XHRcdFx0XHRwb3NpdGlvbnNbaSAqIDYgKyAxXSA9IHNlZ21lbnQuc3RhcnQueTtcblx0XHRcdFx0XHRwb3NpdGlvbnNbaSAqIDYgKyAyXSA9IHNlZ21lbnQuc3RhcnQuejtcblxuXHRcdFx0XHRcdHBvc2l0aW9uc1tpICogNiArIDNdID0gc2VnbWVudC5lbmQueDtcblx0XHRcdFx0XHRwb3NpdGlvbnNbaSAqIDYgKyA0XSA9IHNlZ21lbnQuZW5kLnk7XG5cdFx0XHRcdFx0cG9zaXRpb25zW2kgKiA2ICsgNV0gPSBzZWdtZW50LmVuZC56O1xuXG5cdFx0XHRcdFx0Y29sb3JzW2kgKiA2ICsgMF0gPSBzZWdtZW50LmNvbG9yLnI7XG5cdFx0XHRcdFx0Y29sb3JzW2kgKiA2ICsgMV0gPSBzZWdtZW50LmNvbG9yLmc7XG5cdFx0XHRcdFx0Y29sb3JzW2kgKiA2ICsgMl0gPSBzZWdtZW50LmNvbG9yLmI7XG5cblx0XHRcdFx0XHRjb2xvcnNbaSAqIDYgKyAzXSA9IHNlZ21lbnQuY29sb3Iucjtcblx0XHRcdFx0XHRjb2xvcnNbaSAqIDYgKyA0XSA9IHNlZ21lbnQuY29sb3IuZztcblx0XHRcdFx0XHRjb2xvcnNbaSAqIDYgKyA1XSA9IHNlZ21lbnQuY29sb3IuYjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dGhpcy5nZW9tZXRyeS5zZXRDb2xvcnMoY29sb3JzKTtcblx0XHRcdHRoaXMuZ2VvbWV0cnkuc2V0UG9zaXRpb25zKHBvc2l0aW9ucyk7XG5cdFx0XHR0aGlzLmxpbmUuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKTtcblx0XHR9KTtcblx0fVxufVxuIl19
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { BufferAttribute, BufferGeometry, Camera, HalfFloatType, LinearFilter, Mesh, PerspectiveCamera, Scene, Vector2, WebGLRenderTarget, WebGLRenderer, } from 'three';
|
|
2
|
-
import { ConvolutionMaterial } from '../convolution-material/convolution-material';
|
|
3
|
-
export class BlurPass {
|
|
4
|
-
constructor({ gl, resolution, width = 500, height = 500, minDepthThreshold = 0, maxDepthThreshold = 1, depthScale = 0, depthToBlurRatioBias = 0.25, }) {
|
|
5
|
-
this.renderToScreen = false;
|
|
6
|
-
this.renderTargetA = new WebGLRenderTarget(resolution, resolution, {
|
|
7
|
-
minFilter: LinearFilter,
|
|
8
|
-
magFilter: LinearFilter,
|
|
9
|
-
stencilBuffer: false,
|
|
10
|
-
depthBuffer: false,
|
|
11
|
-
type: HalfFloatType,
|
|
12
|
-
});
|
|
13
|
-
this.renderTargetB = this.renderTargetA.clone();
|
|
14
|
-
this.convolutionMaterial = new ConvolutionMaterial();
|
|
15
|
-
this.convolutionMaterial.setTexelSize(1.0 / width, 1.0 / height);
|
|
16
|
-
this.convolutionMaterial.setResolution(new Vector2(width, height));
|
|
17
|
-
this.scene = new Scene();
|
|
18
|
-
this.camera = new PerspectiveCamera();
|
|
19
|
-
this.convolutionMaterial.uniforms['minDepthThreshold'].value = minDepthThreshold;
|
|
20
|
-
this.convolutionMaterial.uniforms['maxDepthThreshold'].value = maxDepthThreshold;
|
|
21
|
-
this.convolutionMaterial.uniforms['depthScale'].value = depthScale;
|
|
22
|
-
this.convolutionMaterial.uniforms['depthToBlurRatioBias'].value = depthToBlurRatioBias;
|
|
23
|
-
this.convolutionMaterial.defines['USE_DEPTH'] = depthScale > 0;
|
|
24
|
-
const vertices = new Float32Array([-1, -1, 0, 3, -1, 0, -1, 3, 0]);
|
|
25
|
-
const uvs = new Float32Array([0, 0, 2, 0, 0, 2]);
|
|
26
|
-
const geometry = new BufferGeometry();
|
|
27
|
-
geometry.setAttribute('position', new BufferAttribute(vertices, 3));
|
|
28
|
-
geometry.setAttribute('uv', new BufferAttribute(uvs, 2));
|
|
29
|
-
this.screen = new Mesh(geometry, this.convolutionMaterial);
|
|
30
|
-
this.screen.frustumCulled = false;
|
|
31
|
-
this.scene.add(this.screen);
|
|
32
|
-
}
|
|
33
|
-
render(renderer, inputBuffer, outputBuffer) {
|
|
34
|
-
const scene = this.scene;
|
|
35
|
-
const camera = this.camera;
|
|
36
|
-
const renderTargetA = this.renderTargetA;
|
|
37
|
-
const renderTargetB = this.renderTargetB;
|
|
38
|
-
let material = this.convolutionMaterial;
|
|
39
|
-
let uniforms = material.uniforms;
|
|
40
|
-
uniforms['depthBuffer'].value = inputBuffer.depthTexture;
|
|
41
|
-
const kernel = material.kernel;
|
|
42
|
-
let lastRT = inputBuffer;
|
|
43
|
-
let destRT;
|
|
44
|
-
let i, l;
|
|
45
|
-
// Apply the multi-pass blur.
|
|
46
|
-
for (i = 0, l = kernel.length - 1; i < l; ++i) {
|
|
47
|
-
// Alternate between targets.
|
|
48
|
-
destRT = (i & 1) === 0 ? renderTargetA : renderTargetB;
|
|
49
|
-
uniforms['kernel'].value = kernel[i];
|
|
50
|
-
uniforms['inputBuffer'].value = lastRT.texture;
|
|
51
|
-
renderer.setRenderTarget(destRT);
|
|
52
|
-
renderer.render(scene, camera);
|
|
53
|
-
lastRT = destRT;
|
|
54
|
-
}
|
|
55
|
-
uniforms['kernel'].value = kernel[i];
|
|
56
|
-
uniforms['inputBuffer'].value = lastRT.texture;
|
|
57
|
-
renderer.setRenderTarget(this.renderToScreen ? null : outputBuffer);
|
|
58
|
-
renderer.render(scene, camera);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmx1ci1wYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3NoYWRlcnMvc3JjL2JsdXItcGFzcy9ibHVyLXBhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLGVBQWUsRUFDZixjQUFjLEVBQ2QsTUFBTSxFQUNOLGFBQWEsRUFDYixZQUFZLEVBQ1osSUFBSSxFQUNKLGlCQUFpQixFQUNqQixLQUFLLEVBQ0wsT0FBTyxFQUNQLGlCQUFpQixFQUNqQixhQUFhLEdBQ2IsTUFBTSxPQUFPLENBQUM7QUFFZixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQWFuRixNQUFNLE9BQU8sUUFBUTtJQVNwQixZQUFZLEVBQ1gsRUFBRSxFQUNGLFVBQVUsRUFDVixLQUFLLEdBQUcsR0FBRyxFQUNYLE1BQU0sR0FBRyxHQUFHLEVBQ1osaUJBQWlCLEdBQUcsQ0FBQyxFQUNyQixpQkFBaUIsR0FBRyxDQUFDLEVBQ3JCLFVBQVUsR0FBRyxDQUFDLEVBQ2Qsb0JBQW9CLEdBQUcsSUFBSSxHQUNaO1FBWGhCLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBWS9CLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFO1lBQ2xFLFNBQVMsRUFBRSxZQUFZO1lBQ3ZCLFNBQVMsRUFBRSxZQUFZO1lBQ3ZCLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLElBQUksRUFBRSxhQUFhO1NBQ25CLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1FBQ3JELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsR0FBRyxHQUFHLEtBQUss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QUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDOUMsNkJBQTZCO1lBQzdCLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO1lBQ3ZELFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUMvQyxRQUFRLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQy9CLE1BQU0sR0FBRyxNQUFNLENBQUM7U0FDaEI7UUFDRCxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDL0MsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BFLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdEJ1ZmZlckF0dHJpYnV0ZSxcblx0QnVmZmVyR2VvbWV0cnksXG5cdENhbWVyYSxcblx0SGFsZkZsb2F0VHlwZSxcblx0TGluZWFyRmlsdGVyLFxuXHRNZXNoLFxuXHRQZXJzcGVjdGl2ZUNhbWVyYSxcblx0U2NlbmUsXG5cdFZlY3RvcjIsXG5cdFdlYkdMUmVuZGVyVGFyZ2V0LFxuXHRXZWJHTFJlbmRlcmVyLFxufSBmcm9tICd0aHJlZSc7XG5cbmltcG9ydCB7IENvbnZvbHV0aW9uTWF0ZXJpYWwgfSBmcm9tICcuLi9jb252b2x1dGlvbi1tYXRlcmlhbC9jb252b2x1dGlvbi1tYXRlcmlhbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmx1clBhc3NQcm9wcyB7XG5cdGdsOiBXZWJHTFJlbmRlcmVyO1xuXHRyZXNvbHV0aW9uOiBudW1iZXI7XG5cdHdpZHRoPzogbnVtYmVyO1xuXHRoZWlnaHQ/OiBudW1iZXI7XG5cdG1pbkRlcHRoVGhyZXNob2xkPzogbnVtYmVyO1xuXHRtYXhEZXB0aFRocmVzaG9sZD86IG51bWJlcjtcblx0ZGVwdGhTY2FsZT86IG51bWJlcjtcblx0ZGVwdGhUb0JsdXJSYXRpb0JpYXM/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBCbHVyUGFzcyB7XG5cdHJlYWRvbmx5IHJlbmRlclRhcmdldEE6IFdlYkdMUmVuZGVyVGFyZ2V0O1xuXHRyZWFkb25seSByZW5kZXJUYXJnZXRCOiBXZWJHTFJlbmRlclRhcmdldDtcblx0cmVhZG9ubHkgY29udm9sdXRpb25NYXRlcmlhbDogQ29udm9sdXRpb25NYXRlcmlhbDtcblx0cmVhZG9ubHkgc2NlbmU6IFNjZW5lO1xuXHRyZWFkb25seSBjYW1lcmE6IENhbWVyYTtcblx0cmVhZG9ubHkgc2NyZWVuOiBNZXNoO1xuXHRyZW5kZXJUb1NjcmVlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdGNvbnN0cnVjdG9yKHtcblx0XHRnbCxcblx0XHRyZXNvbHV0aW9uLFxuXHRcdHdpZHRoID0gNTAwLFxuXHRcdGhlaWdodCA9IDUwMCxcblx0XHRtaW5EZXB0aFRocmVzaG9sZCA9IDAsXG5cdFx0bWF4RGVwdGhUaHJlc2hvbGQgPSAxLFxuXHRcdGRlcHRoU2NhbGUgPSAwLFxuXHRcdGRlcHRoVG9CbHVyUmF0aW9CaWFzID0gMC4yNSxcblx0fTogQmx1clBhc3NQcm9wcykge1xuXHRcdHRoaXMucmVuZGVyVGFyZ2V0QSA9IG5ldyBXZWJHTFJlbmRlclRhcmdldChyZXNvbHV0aW9uLCByZXNvbHV0aW9uLCB7XG5cdFx0XHRtaW5GaWx0ZXI6IExpbmVhckZpbHRlcixcblx0XHRcdG1hZ0ZpbHRlcjogTGluZWFyRmlsdGVyLFxuXHRcdFx0c3RlbmNpbEJ1ZmZlcjogZmFsc2UsXG5cdFx0XHRkZXB0aEJ1ZmZlcjogZmFsc2UsXG5cdFx0XHR0eXBlOiBIYWxmRmxvYXRUeXBlLFxuXHRcdH0pO1xuXHRcdHRoaXMucmVuZGVyVGFyZ2V0QiA9IHRoaXMucmVuZGVyVGFyZ2V0QS5jbG9uZSgpO1xuXHRcdHRoaXMuY29udm9sdXRpb25NYXRlcmlhbCA9IG5ldyBDb252b2x1dGlvbk1hdGVyaWFsKCk7XG5cdFx0dGhpcy5jb252b2x1dGlvbk1hdGVyaWFsLnNldFRleGVsU2l6ZSgxLjAgLyB3aWR0aCwgMS4wIC8gaGVpZ2h0KTtcblx0XHR0aGlzLmNvbnZvbHV0aW9uTWF0ZXJpYWwuc2V0UmVzb2x1dGlvbihuZXcgVmVjdG9yMih3aWR0aCwgaGVpZ2h0KSk7XG5cdFx0dGhpcy5zY2VuZSA9IG5ldyBTY2VuZSgpO1xuXHRcdHRoaXMuY2FtZXJhID0gbmV3IFBlcnNwZWN0aXZlQ2FtZXJhKCk7XG5cdFx0dGhpcy5jb252b2x1dGlvbk1hdGVyaWFsLnVuaWZvcm1zWydtaW5EZXB0aFRocmVzaG9sZCddLnZhbHVlID0gbWluRGVwdGhUaHJlc2hvbGQ7XG5cdFx0dGhpcy5jb252b2x1dGlvbk1hdGVyaWFsLnVuaWZvcm1zWydtYXhEZXB0aFRocmVzaG9sZCddLnZhbHVlID0gbWF4RGVwdGhUaHJlc2hvbGQ7XG5cdFx0dGhpcy5jb252b2x1dGlvbk1hdGVyaWFsLnVuaWZvcm1zWydkZXB0aFNjYWxlJ10udmFsdWUgPSBkZXB0aFNjYWxlO1xuXHRcdHRoaXMuY29udm9sdXRpb25NYXRlcmlhbC51bmlmb3Jtc1snZGVwdGhUb0JsdXJSYXRpb0JpYXMnXS52YWx1ZSA9IGRlcHRoVG9CbHVyUmF0aW9CaWFzO1xuXHRcdHRoaXMuY29udm9sdXRpb25NYXRlcmlhbC5kZWZpbmVzWydVU0VfREVQVEgnXSA9IGRlcHRoU2NhbGUgPiAwO1xuXHRcdGNvbnN0IHZlcnRpY2VzID0gbmV3IEZsb2F0MzJBcnJheShbLTEsIC0xLCAwLCAzLCAtMSwgMCwgLTEsIDMsIDBdKTtcblx0XHRjb25zdCB1dnMgPSBuZXcgRmxvYXQzMkFycmF5KFswLCAwLCAyLCAwLCAwLCAyXSk7XG5cdFx0Y29uc3QgZ2VvbWV0cnkgPSBuZXcgQnVmZmVyR2VvbWV0cnkoKTtcblx0XHRnZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgbmV3IEJ1ZmZlckF0dHJpYnV0ZSh2ZXJ0aWNlcywgMykpO1xuXHRcdGdlb21ldHJ5LnNldEF0dHJpYnV0ZSgndXYnLCBuZXcgQnVmZmVyQXR0cmlidXRlKHV2cywgMikpO1xuXHRcdHRoaXMuc2NyZWVuID0gbmV3IE1lc2goZ2VvbWV0cnksIHRoaXMuY29udm9sdXRpb25NYXRlcmlhbCk7XG5cdFx0dGhpcy5zY3JlZW4uZnJ1c3R1bUN1bGxlZCA9IGZhbHNlO1xuXHRcdHRoaXMuc2NlbmUuYWRkKHRoaXMuc2NyZWVuKTtcblx0fVxuXG5cdHJlbmRlcihyZW5kZXJlcjogV2ViR0xSZW5kZXJlciwgaW5wdXRCdWZmZXI6IFdlYkdMUmVuZGVyVGFyZ2V0LCBvdXRwdXRCdWZmZXI6IFdlYkdMUmVuZGVyVGFyZ2V0KSB7XG5cdFx0Y29uc3Qgc2NlbmUgPSB0aGlzLnNjZW5lO1xuXHRcdGNvbnN0IGNhbWVyYSA9IHRoaXMuY2FtZXJhO1xuXHRcdGNvbnN0IHJlbmRlclRhcmdldEEgPSB0aGlzLnJlbmRlclRhcmdldEE7XG5cdFx0Y29uc3QgcmVuZGVyVGFyZ2V0QiA9IHRoaXMucmVuZGVyVGFyZ2V0Qjtcblx0XHRsZXQgbWF0ZXJpYWwgPSB0aGlzLmNvbnZvbHV0aW9uTWF0ZXJpYWw7XG5cdFx0bGV0IHVuaWZvcm1zID0gbWF0ZXJpYWwudW5pZm9ybXM7XG5cdFx0dW5pZm9ybXNbJ2RlcHRoQnVmZmVyJ10udmFsdWUgPSBpbnB1dEJ1ZmZlci5kZXB0aFRleHR1cmU7XG5cdFx0Y29uc3Qga2VybmVsID0gbWF0ZXJpYWwua2VybmVsO1xuXHRcdGxldCBsYXN0UlQgPSBpbnB1dEJ1ZmZlcjtcblx0XHRsZXQgZGVzdFJUO1xuXHRcdGxldCBpLCBsO1xuXHRcdC8vIEFwcGx5IHRoZSBtdWx0aS1wYXNzIGJsdXIuXG5cdFx0Zm9yIChpID0gMCwgbCA9IGtlcm5lbC5sZW5ndGggLSAxOyBpIDwgbDsgKytpKSB7XG5cdFx0XHQvLyBBbHRlcm5hdGUgYmV0d2VlbiB0YXJnZXRzLlxuXHRcdFx0ZGVzdFJUID0gKGkgJiAxKSA9PT0gMCA/IHJlbmRlclRhcmdldEEgOiByZW5kZXJUYXJnZXRCO1xuXHRcdFx0dW5pZm9ybXNbJ2tlcm5lbCddLnZhbHVlID0ga2VybmVsW2ldO1xuXHRcdFx0dW5pZm9ybXNbJ2lucHV0QnVmZmVyJ10udmFsdWUgPSBsYXN0UlQudGV4dHVyZTtcblx0XHRcdHJlbmRlcmVyLnNldFJlbmRlclRhcmdldChkZXN0UlQpO1xuXHRcdFx0cmVuZGVyZXIucmVuZGVyKHNjZW5lLCBjYW1lcmEpO1xuXHRcdFx0bGFzdFJUID0gZGVzdFJUO1xuXHRcdH1cblx0XHR1bmlmb3Jtc1sna2VybmVsJ10udmFsdWUgPSBrZXJuZWxbaV07XG5cdFx0dW5pZm9ybXNbJ2lucHV0QnVmZmVyJ10udmFsdWUgPSBsYXN0UlQudGV4dHVyZTtcblx0XHRyZW5kZXJlci5zZXRSZW5kZXJUYXJnZXQodGhpcy5yZW5kZXJUb1NjcmVlbiA/IG51bGwgOiBvdXRwdXRCdWZmZXIpO1xuXHRcdHJlbmRlcmVyLnJlbmRlcihzY2VuZSwgY2FtZXJhKTtcblx0fVxufVxuIl19
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import * as THREE from 'three';
|
|
2
|
-
import { shaderMaterial } from '../shader-material/shader-material';
|
|
3
|
-
export const CausticsMaterial = shaderMaterial({
|
|
4
|
-
cameraMatrixWorld: new THREE.Matrix4(),
|
|
5
|
-
cameraProjectionMatrixInv: new THREE.Matrix4(),
|
|
6
|
-
normalTexture: null,
|
|
7
|
-
depthTexture: null,
|
|
8
|
-
lightDir: new THREE.Vector3(0, 1, 0),
|
|
9
|
-
lightPlaneNormal: new THREE.Vector3(0, 1, 0),
|
|
10
|
-
lightPlaneConstant: 0,
|
|
11
|
-
near: 0.1,
|
|
12
|
-
far: 100,
|
|
13
|
-
modelMatrix: new THREE.Matrix4(),
|
|
14
|
-
worldRadius: 1 / 40,
|
|
15
|
-
ior: 1.1,
|
|
16
|
-
bounces: 0,
|
|
17
|
-
resolution: 1024,
|
|
18
|
-
size: 10,
|
|
19
|
-
intensity: 0.5,
|
|
20
|
-
},
|
|
21
|
-
/* glsl */ `
|
|
22
|
-
varying vec2 vUv;
|
|
23
|
-
void main() {
|
|
24
|
-
vUv = uv;
|
|
25
|
-
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
26
|
-
}`,
|
|
27
|
-
/* glsl */ `
|
|
28
|
-
uniform mat4 cameraMatrixWorld;
|
|
29
|
-
uniform mat4 cameraProjectionMatrixInv;
|
|
30
|
-
uniform vec3 lightDir;
|
|
31
|
-
uniform vec3 lightPlaneNormal;
|
|
32
|
-
uniform float lightPlaneConstant;
|
|
33
|
-
uniform float near;
|
|
34
|
-
uniform float far;
|
|
35
|
-
uniform float time;
|
|
36
|
-
uniform float worldRadius;
|
|
37
|
-
uniform float resolution;
|
|
38
|
-
uniform float size;
|
|
39
|
-
uniform float intensity;
|
|
40
|
-
uniform float ior;
|
|
41
|
-
precision highp isampler2D;
|
|
42
|
-
precision highp usampler2D;
|
|
43
|
-
uniform sampler2D normalTexture;
|
|
44
|
-
uniform sampler2D depthTexture;
|
|
45
|
-
uniform float bounces;
|
|
46
|
-
varying vec2 vUv;
|
|
47
|
-
vec3 WorldPosFromDepth(float depth, vec2 coord) {
|
|
48
|
-
float z = depth * 2.0 - 1.0;
|
|
49
|
-
vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);
|
|
50
|
-
vec4 viewSpacePosition = cameraProjectionMatrixInv * clipSpacePosition;
|
|
51
|
-
// Perspective division
|
|
52
|
-
viewSpacePosition /= viewSpacePosition.w;
|
|
53
|
-
vec4 worldSpacePosition = cameraMatrixWorld * viewSpacePosition;
|
|
54
|
-
return worldSpacePosition.xyz;
|
|
55
|
-
}
|
|
56
|
-
float sdPlane( vec3 p, vec3 n, float h ) {
|
|
57
|
-
// n must be normalized
|
|
58
|
-
return dot(p,n) + h;
|
|
59
|
-
}
|
|
60
|
-
float planeIntersect( vec3 ro, vec3 rd, vec4 p ) {
|
|
61
|
-
return -(dot(ro,p.xyz)+p.w)/dot(rd,p.xyz);
|
|
62
|
-
}
|
|
63
|
-
vec3 totalInternalReflection(vec3 ro, vec3 rd, vec3 pos, vec3 normal, float ior, out vec3 rayOrigin, out vec3 rayDirection) {
|
|
64
|
-
rayOrigin = ro;
|
|
65
|
-
rayDirection = rd;
|
|
66
|
-
rayDirection = refract(rayDirection, normal, 1.0 / ior);
|
|
67
|
-
rayOrigin = pos + rayDirection * 0.1;
|
|
68
|
-
return rayDirection;
|
|
69
|
-
}
|
|
70
|
-
void main() {
|
|
71
|
-
// Each sample consists of random offset in the x and y direction
|
|
72
|
-
float caustic = 0.0;
|
|
73
|
-
float causticTexelSize = (1.0 / resolution) * size * 2.0;
|
|
74
|
-
float texelsNeeded = worldRadius / causticTexelSize;
|
|
75
|
-
float sampleRadius = texelsNeeded / resolution;
|
|
76
|
-
float sum = 0.0;
|
|
77
|
-
if (texture2D(depthTexture, vUv).x == 1.0) {
|
|
78
|
-
gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
vec2 offset1 = vec2(-0.5, -0.5);//vec2(rand() - 0.5, rand() - 0.5);
|
|
82
|
-
vec2 offset2 = vec2(-0.5, 0.5);//vec2(rand() - 0.5, rand() - 0.5);
|
|
83
|
-
vec2 offset3 = vec2(0.5, 0.5);//vec2(rand() - 0.5, rand() - 0.5);
|
|
84
|
-
vec2 offset4 = vec2(0.5, -0.5);//vec2(rand() - 0.5, rand() - 0.5);
|
|
85
|
-
vec2 uv1 = vUv + offset1 * sampleRadius;
|
|
86
|
-
vec2 uv2 = vUv + offset2 * sampleRadius;
|
|
87
|
-
vec2 uv3 = vUv + offset3 * sampleRadius;
|
|
88
|
-
vec2 uv4 = vUv + offset4 * sampleRadius;
|
|
89
|
-
vec3 normal1 = texture2D(normalTexture, uv1, -10.0).rgb * 2.0 - 1.0;
|
|
90
|
-
vec3 normal2 = texture2D(normalTexture, uv2, -10.0).rgb * 2.0 - 1.0;
|
|
91
|
-
vec3 normal3 = texture2D(normalTexture, uv3, -10.0).rgb * 2.0 - 1.0;
|
|
92
|
-
vec3 normal4 = texture2D(normalTexture, uv4, -10.0).rgb * 2.0 - 1.0;
|
|
93
|
-
float depth1 = texture2D(depthTexture, uv1, -10.0).x;
|
|
94
|
-
float depth2 = texture2D(depthTexture, uv2, -10.0).x;
|
|
95
|
-
float depth3 = texture2D(depthTexture, uv3, -10.0).x;
|
|
96
|
-
float depth4 = texture2D(depthTexture, uv4, -10.0).x;
|
|
97
|
-
// Sanity check the depths
|
|
98
|
-
if (depth1 == 1.0 || depth2 == 1.0 || depth3 == 1.0 || depth4 == 1.0) {
|
|
99
|
-
gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
vec3 pos1 = WorldPosFromDepth(depth1, uv1);
|
|
103
|
-
vec3 pos2 = WorldPosFromDepth(depth2, uv2);
|
|
104
|
-
vec3 pos3 = WorldPosFromDepth(depth3, uv3);
|
|
105
|
-
vec3 pos4 = WorldPosFromDepth(depth4, uv4);
|
|
106
|
-
vec3 originPos1 = WorldPosFromDepth(0.0, uv1);
|
|
107
|
-
vec3 originPos2 = WorldPosFromDepth(0.0, uv2);
|
|
108
|
-
vec3 originPos3 = WorldPosFromDepth(0.0, uv3);
|
|
109
|
-
vec3 originPos4 = WorldPosFromDepth(0.0, uv4);
|
|
110
|
-
vec3 endPos1, endPos2, endPos3, endPos4;
|
|
111
|
-
vec3 endDir1, endDir2, endDir3, endDir4;
|
|
112
|
-
totalInternalReflection(originPos1, lightDir, pos1, normal1, ior, endPos1, endDir1);
|
|
113
|
-
totalInternalReflection(originPos2, lightDir, pos2, normal2, ior, endPos2, endDir2);
|
|
114
|
-
totalInternalReflection(originPos3, lightDir, pos3, normal3, ior, endPos3, endDir3);
|
|
115
|
-
totalInternalReflection(originPos4, lightDir, pos4, normal4, ior, endPos4, endDir4);
|
|
116
|
-
float lightPosArea = length(cross(originPos2 - originPos1, originPos3 - originPos1)) + length(cross(originPos3 - originPos1, originPos4 - originPos1));
|
|
117
|
-
float t1 = planeIntersect(endPos1, endDir1, vec4(lightPlaneNormal, lightPlaneConstant));
|
|
118
|
-
float t2 = planeIntersect(endPos2, endDir2, vec4(lightPlaneNormal, lightPlaneConstant));
|
|
119
|
-
float t3 = planeIntersect(endPos3, endDir3, vec4(lightPlaneNormal, lightPlaneConstant));
|
|
120
|
-
float t4 = planeIntersect(endPos4, endDir4, vec4(lightPlaneNormal, lightPlaneConstant));
|
|
121
|
-
vec3 finalPos1 = endPos1 + endDir1 * t1;
|
|
122
|
-
vec3 finalPos2 = endPos2 + endDir2 * t2;
|
|
123
|
-
vec3 finalPos3 = endPos3 + endDir3 * t3;
|
|
124
|
-
vec3 finalPos4 = endPos4 + endDir4 * t4;
|
|
125
|
-
float finalArea = length(cross(finalPos2 - finalPos1, finalPos3 - finalPos1)) + length(cross(finalPos3 - finalPos1, finalPos4 - finalPos1));
|
|
126
|
-
caustic += intensity * (lightPosArea / finalArea);
|
|
127
|
-
// Calculate the area of the triangle in light spaces
|
|
128
|
-
gl_FragColor = vec4(vec3(max(caustic, 0.0)), 1.0);
|
|
129
|
-
}`);
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F1c3RpY3MtbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc2hhZGVycy9zcmMvY2F1c3RpY3MvY2F1c3RpY3MtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXBFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FDN0M7SUFDQyxpQkFBaUIsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7SUFDdEMseUJBQXlCLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO0lBQzlDLGFBQWEsRUFBRSxJQUFJO0lBQ25CLFlBQVksRUFBRSxJQUFJO0lBQ2xCLFFBQVEsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEMsZ0JBQWdCLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLGtCQUFrQixFQUFFLENBQUM7SUFDckIsSUFBSSxFQUFFLEdBQUc7SUFDVCxHQUFHLEVBQUUsR0FBRztJQUNSLFdBQVcsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7SUFDaEMsV0FBVyxFQUFFLENBQUMsR0FBRyxFQUFFO0lBQ25CLEdBQUcsRUFBRSxHQUFHO0lBQ1IsT0FBTyxFQUFFLENBQUM7SUFDVixVQUFVLEVBQUUsSUFBSTtJQUNoQixJQUFJLEVBQUUsRUFBRTtJQUNSLFNBQVMsRUFBRSxHQUFHO0NBQ2Q7QUFDRCxVQUFVLENBQUM7Ozs7O0lBS1I7QUFDSCxVQUFVLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQXNHUixDQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBzaGFkZXJNYXRlcmlhbCB9IGZyb20gJy4uL3NoYWRlci1tYXRlcmlhbC9zaGFkZXItbWF0ZXJpYWwnO1xuXG5leHBvcnQgY29uc3QgQ2F1c3RpY3NNYXRlcmlhbCA9IHNoYWRlck1hdGVyaWFsKFxuXHR7XG5cdFx0Y2FtZXJhTWF0cml4V29ybGQ6IG5ldyBUSFJFRS5NYXRyaXg0KCksXG5cdFx0Y2FtZXJhUHJvamVjdGlvbk1hdHJpeEludjogbmV3IFRIUkVFLk1hdHJpeDQoKSxcblx0XHRub3JtYWxUZXh0dXJlOiBudWxsLFxuXHRcdGRlcHRoVGV4dHVyZTogbnVsbCxcblx0XHRsaWdodERpcjogbmV3IFRIUkVFLlZlY3RvcjMoMCwgMSwgMCksXG5cdFx0bGlnaHRQbGFuZU5vcm1hbDogbmV3IFRIUkVFLlZlY3RvcjMoMCwgMSwgMCksXG5cdFx0bGlnaHRQbGFuZUNvbnN0YW50OiAwLFxuXHRcdG5lYXI6IDAuMSxcblx0XHRmYXI6IDEwMCxcblx0XHRtb2RlbE1hdHJpeDogbmV3IFRIUkVFLk1hdHJpeDQoKSxcblx0XHR3b3JsZFJhZGl1czogMSAvIDQwLFxuXHRcdGlvcjogMS4xLFxuXHRcdGJvdW5jZXM6IDAsXG5cdFx0cmVzb2x1dGlvbjogMTAyNCxcblx0XHRzaXplOiAxMCxcblx0XHRpbnRlbnNpdHk6IDAuNSxcblx0fSxcblx0LyogZ2xzbCAqLyBgXG4gIHZhcnlpbmcgdmVjMiB2VXY7XG4gIHZvaWQgbWFpbigpIHtcbiAgICAgIHZVdiA9IHV2O1xuICAgICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbW9kZWxWaWV3TWF0cml4ICogdmVjNChwb3NpdGlvbiwgMS4wKTtcbiAgfWAsXG5cdC8qIGdsc2wgKi8gYFxuICB1bmlmb3JtIG1hdDQgY2FtZXJhTWF0cml4V29ybGQ7XG4gIHVuaWZvcm0gbWF0NCBjYW1lcmFQcm9qZWN0aW9uTWF0cml4SW52O1xuICB1bmlmb3JtIHZlYzMgbGlnaHREaXI7XG4gIHVuaWZvcm0gdmVjMyBsaWdodFBsYW5lTm9ybWFsO1xuICB1bmlmb3JtIGZsb2F0IGxpZ2h0UGxhbmVDb25zdGFudDtcbiAgdW5pZm9ybSBmbG9hdCBuZWFyO1xuICB1bmlmb3JtIGZsb2F0IGZhcjtcbiAgdW5pZm9ybSBmbG9hdCB0aW1lO1xuICB1bmlmb3JtIGZsb2F0IHdvcmxkUmFkaXVzO1xuICB1bmlmb3JtIGZsb2F0IHJlc29sdXRpb247XG4gIHVuaWZvcm0gZmxvYXQgc2l6ZTtcbiAgdW5pZm9ybSBmbG9hdCBpbnRlbnNpdHk7XG4gIHVuaWZvcm0gZmxvYXQgaW9yO1xuICBwcmVjaXNpb24gaGlnaHAgaXNhbXBsZXIyRDtcbiAgcHJlY2lzaW9uIGhpZ2hwIHVzYW1wbGVyMkQ7XG4gIHVuaWZvcm0gc2FtcGxlcjJEIG5vcm1hbFRleHR1cmU7XG4gIHVuaWZvcm0gc2FtcGxlcjJEIGRlcHRoVGV4dHVyZTtcbiAgdW5pZm9ybSBmbG9hdCBib3VuY2VzO1xuICB2YXJ5aW5nIHZlYzIgdlV2O1xuICB2ZWMzIFdvcmxkUG9zRnJvbURlcHRoKGZsb2F0IGRlcHRoLCB2ZWMyIGNvb3JkKSB7XG4gICAgZmxvYXQgeiA9IGRlcHRoICogMi4wIC0gMS4wO1xuICAgIHZlYzQgY2xpcFNwYWNlUG9zaXRpb24gPSB2ZWM0KGNvb3JkICogMi4wIC0gMS4wLCB6LCAxLjApO1xuICAgIHZlYzQgdmlld1NwYWNlUG9zaXRpb24gPSBjYW1lcmFQcm9qZWN0aW9uTWF0cml4SW52ICogY2xpcFNwYWNlUG9zaXRpb247XG4gICAgLy8gUGVyc3BlY3RpdmUgZGl2aXNpb25cbiAgICB2aWV3U3BhY2VQb3NpdGlvbiAvPSB2aWV3U3BhY2VQb3NpdGlvbi53O1xuICAgIHZlYzQgd29ybGRTcGFjZVBvc2l0aW9uID0gY2FtZXJhTWF0cml4V29ybGQgKiB2aWV3U3BhY2VQb3NpdGlvbjtcbiAgICByZXR1cm4gd29ybGRTcGFjZVBvc2l0aW9uLnh5ejtcbiAgfVxuICBmbG9hdCBzZFBsYW5lKCB2ZWMzIHAsIHZlYzMgbiwgZmxvYXQgaCApIHtcbiAgICAvLyBuIG11c3QgYmUgbm9ybWFsaXplZFxuICAgIHJldHVybiBkb3QocCxuKSArIGg7XG4gIH1cbiAgZmxvYXQgcGxhbmVJbnRlcnNlY3QoIHZlYzMgcm8sIHZlYzMgcmQsIHZlYzQgcCApIHtcbiAgICByZXR1cm4gLShkb3Qocm8scC54eXopK3AudykvZG90KHJkLHAueHl6KTtcbiAgfVxuICB2ZWMzIHRvdGFsSW50ZXJuYWxSZWZsZWN0aW9uKHZlYzMgcm8sIHZlYzMgcmQsIHZlYzMgcG9zLCB2ZWMzIG5vcm1hbCwgZmxvYXQgaW9yLCBvdXQgdmVjMyByYXlPcmlnaW4sIG91dCB2ZWMzIHJheURpcmVjdGlvbikge1xuICAgIHJheU9yaWdpbiA9IHJvO1xuICAgIHJheURpcmVjdGlvbiA9IHJkO1xuICAgIHJheURpcmVjdGlvbiA9IHJlZnJhY3QocmF5RGlyZWN0aW9uLCBub3JtYWwsIDEuMCAvIGlvcik7XG4gICAgcmF5T3JpZ2luID0gcG9zICsgcmF5RGlyZWN0aW9uICogMC4xO1xuICAgIHJldHVybiByYXlEaXJlY3Rpb247XG4gIH1cbiAgdm9pZCBtYWluKCkge1xuICAgIC8vIEVhY2ggc2FtcGxlIGNvbnNpc3RzIG9mIHJhbmRvbSBvZmZzZXQgaW4gdGhlIHggYW5kIHkgZGlyZWN0aW9uXG4gICAgZmxvYXQgY2F1c3RpYyA9IDAuMDtcbiAgICBmbG9hdCBjYXVzdGljVGV4ZWxTaXplID0gKDEuMCAvIHJlc29sdXRpb24pICogc2l6ZSAqIDIuMDtcbiAgICBmbG9hdCB0ZXhlbHNOZWVkZWQgPSB3b3JsZFJhZGl1cyAvIGNhdXN0aWNUZXhlbFNpemU7XG4gICAgZmxvYXQgc2FtcGxlUmFkaXVzID0gdGV4ZWxzTmVlZGVkIC8gcmVzb2x1dGlvbjtcbiAgICBmbG9hdCBzdW0gPSAwLjA7XG4gICAgaWYgKHRleHR1cmUyRChkZXB0aFRleHR1cmUsIHZVdikueCA9PSAxLjApIHtcbiAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmVjMiBvZmZzZXQxID0gdmVjMigtMC41LCAtMC41KTsvL3ZlYzIocmFuZCgpIC0gMC41LCByYW5kKCkgLSAwLjUpO1xuICAgIHZlYzIgb2Zmc2V0MiA9IHZlYzIoLTAuNSwgMC41KTsvL3ZlYzIocmFuZCgpIC0gMC41LCByYW5kKCkgLSAwLjUpO1xuICAgIHZlYzIgb2Zmc2V0MyA9IHZlYzIoMC41LCAwLjUpOy8vdmVjMihyYW5kKCkgLSAwLjUsIHJhbmQoKSAtIDAuNSk7XG4gICAgdmVjMiBvZmZzZXQ0ID0gdmVjMigwLjUsIC0wLjUpOy8vdmVjMihyYW5kKCkgLSAwLjUsIHJhbmQoKSAtIDAuNSk7XG4gICAgdmVjMiB1djEgPSB2VXYgKyBvZmZzZXQxICogc2FtcGxlUmFkaXVzO1xuICAgIHZlYzIgdXYyID0gdlV2ICsgb2Zmc2V0MiAqIHNhbXBsZVJhZGl1cztcbiAgICB2ZWMyIHV2MyA9IHZVdiArIG9mZnNldDMgKiBzYW1wbGVSYWRpdXM7XG4gICAgdmVjMiB1djQgPSB2VXYgKyBvZmZzZXQ0ICogc2FtcGxlUmFkaXVzO1xuICAgIHZlYzMgbm9ybWFsMSA9IHRleHR1cmUyRChub3JtYWxUZXh0dXJlLCB1djEsIC0xMC4wKS5yZ2IgKiAyLjAgLSAxLjA7XG4gICAgdmVjMyBub3JtYWwyID0gdGV4dHVyZTJEKG5vcm1hbFRleHR1cmUsIHV2MiwgLTEwLjApLnJnYiAqIDIuMCAtIDEuMDtcbiAgICB2ZWMzIG5vcm1hbDMgPSB0ZXh0dXJlMkQobm9ybWFsVGV4dHVyZSwgdXYzLCAtMTAuMCkucmdiICogMi4wIC0gMS4wO1xuICAgIHZlYzMgbm9ybWFsNCA9IHRleHR1cmUyRChub3JtYWxUZXh0dXJlLCB1djQsIC0xMC4wKS5yZ2IgKiAyLjAgLSAxLjA7XG4gICAgZmxvYXQgZGVwdGgxID0gdGV4dHVyZTJEKGRlcHRoVGV4dHVyZSwgdXYxLCAtMTAuMCkueDtcbiAgICBmbG9hdCBkZXB0aDIgPSB0ZXh0dXJlMkQoZGVwdGhUZXh0dXJlLCB1djIsIC0xMC4wKS54O1xuICAgIGZsb2F0IGRlcHRoMyA9IHRleHR1cmUyRChkZXB0aFRleHR1cmUsIHV2MywgLTEwLjApLng7XG4gICAgZmxvYXQgZGVwdGg0ID0gdGV4dHVyZTJEKGRlcHRoVGV4dHVyZSwgdXY0LCAtMTAuMCkueDtcbiAgICAvLyBTYW5pdHkgY2hlY2sgdGhlIGRlcHRoc1xuICAgIGlmIChkZXB0aDEgPT0gMS4wIHx8IGRlcHRoMiA9PSAxLjAgfHwgZGVwdGgzID09IDEuMCB8fCBkZXB0aDQgPT0gMS4wKSB7XG4gICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZlYzMgcG9zMSA9IFdvcmxkUG9zRnJvbURlcHRoKGRlcHRoMSwgdXYxKTtcbiAgICB2ZWMzIHBvczIgPSBXb3JsZFBvc0Zyb21EZXB0aChkZXB0aDIsIHV2Mik7XG4gICAgdmVjMyBwb3MzID0gV29ybGRQb3NGcm9tRGVwdGgoZGVwdGgzLCB1djMpO1xuICAgIHZlYzMgcG9zNCA9IFdvcmxkUG9zRnJvbURlcHRoKGRlcHRoNCwgdXY0KTtcbiAgICB2ZWMzIG9yaWdpblBvczEgPSBXb3JsZFBvc0Zyb21EZXB0aCgwLjAsIHV2MSk7XG4gICAgdmVjMyBvcmlnaW5Qb3MyID0gV29ybGRQb3NGcm9tRGVwdGgoMC4wLCB1djIpO1xuICAgIHZlYzMgb3JpZ2luUG9zMyA9IFdvcmxkUG9zRnJvbURlcHRoKDAuMCwgdXYzKTtcbiAgICB2ZWMzIG9yaWdpblBvczQgPSBXb3JsZFBvc0Zyb21EZXB0aCgwLjAsIHV2NCk7XG4gICAgdmVjMyBlbmRQb3MxLCBlbmRQb3MyLCBlbmRQb3MzLCBlbmRQb3M0O1xuICAgIHZlYzMgZW5kRGlyMSwgZW5kRGlyMiwgZW5kRGlyMywgZW5kRGlyNDtcbiAgICB0b3RhbEludGVybmFsUmVmbGVjdGlvbihvcmlnaW5Qb3MxLCBsaWdodERpciwgcG9zMSwgbm9ybWFsMSwgaW9yLCBlbmRQb3MxLCBlbmREaXIxKTtcbiAgICB0b3RhbEludGVybmFsUmVmbGVjdGlvbihvcmlnaW5Qb3MyLCBsaWdodERpciwgcG9zMiwgbm9ybWFsMiwgaW9yLCBlbmRQb3MyLCBlbmREaXIyKTtcbiAgICB0b3RhbEludGVybmFsUmVmbGVjdGlvbihvcmlnaW5Qb3MzLCBsaWdodERpciwgcG9zMywgbm9ybWFsMywgaW9yLCBlbmRQb3MzLCBlbmREaXIzKTtcbiAgICB0b3RhbEludGVybmFsUmVmbGVjdGlvbihvcmlnaW5Qb3M0LCBsaWdodERpciwgcG9zNCwgbm9ybWFsNCwgaW9yLCBlbmRQb3M0LCBlbmREaXI0KTtcbiAgICBmbG9hdCBsaWdodFBvc0FyZWEgPSBsZW5ndGgoY3Jvc3Mob3JpZ2luUG9zMiAtIG9yaWdpblBvczEsIG9yaWdpblBvczMgLSBvcmlnaW5Qb3MxKSkgKyBsZW5ndGgoY3Jvc3Mob3JpZ2luUG9zMyAtIG9yaWdpblBvczEsIG9yaWdpblBvczQgLSBvcmlnaW5Qb3MxKSk7XG4gICAgZmxvYXQgdDEgPSBwbGFuZUludGVyc2VjdChlbmRQb3MxLCBlbmREaXIxLCB2ZWM0KGxpZ2h0UGxhbmVOb3JtYWwsIGxpZ2h0UGxhbmVDb25zdGFudCkpO1xuICAgIGZsb2F0IHQyID0gcGxhbmVJbnRlcnNlY3QoZW5kUG9zMiwgZW5kRGlyMiwgdmVjNChsaWdodFBsYW5lTm9ybWFsLCBsaWdodFBsYW5lQ29uc3RhbnQpKTtcbiAgICBmbG9hdCB0MyA9IHBsYW5lSW50ZXJzZWN0KGVuZFBvczMsIGVuZERpcjMsIHZlYzQobGlnaHRQbGFuZU5vcm1hbCwgbGlnaHRQbGFuZUNvbnN0YW50KSk7XG4gICAgZmxvYXQgdDQgPSBwbGFuZUludGVyc2VjdChlbmRQb3M0LCBlbmREaXI0LCB2ZWM0KGxpZ2h0UGxhbmVOb3JtYWwsIGxpZ2h0UGxhbmVDb25zdGFudCkpO1xuICAgIHZlYzMgZmluYWxQb3MxID0gZW5kUG9zMSArIGVuZERpcjEgKiB0MTtcbiAgICB2ZWMzIGZpbmFsUG9zMiA9IGVuZFBvczIgKyBlbmREaXIyICogdDI7XG4gICAgdmVjMyBmaW5hbFBvczMgPSBlbmRQb3MzICsgZW5kRGlyMyAqIHQzO1xuICAgIHZlYzMgZmluYWxQb3M0ID0gZW5kUG9zNCArIGVuZERpcjQgKiB0NDtcbiAgICBmbG9hdCBmaW5hbEFyZWEgPSBsZW5ndGgoY3Jvc3MoZmluYWxQb3MyIC0gZmluYWxQb3MxLCBmaW5hbFBvczMgLSBmaW5hbFBvczEpKSArIGxlbmd0aChjcm9zcyhmaW5hbFBvczMgLSBmaW5hbFBvczEsIGZpbmFsUG9zNCAtIGZpbmFsUG9zMSkpO1xuICAgIGNhdXN0aWMgKz0gaW50ZW5zaXR5ICogKGxpZ2h0UG9zQXJlYSAvIGZpbmFsQXJlYSk7XG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBhcmVhIG9mIHRoZSB0cmlhbmdsZSBpbiBsaWdodCBzcGFjZXNcbiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHZlYzMobWF4KGNhdXN0aWMsIDAuMCkpLCAxLjApO1xuICB9YCxcbik7XG4iXX0=
|
|
@@ -1,31 +0,0 @@
|
|
|
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
|
-
}, `varying vec3 vWorldPosition;
|
|
10
|
-
void main() {
|
|
11
|
-
gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position, 1.);
|
|
12
|
-
vec4 worldPosition = modelMatrix * vec4(position, 1.);
|
|
13
|
-
vWorldPosition = worldPosition.xyz;
|
|
14
|
-
}`, `varying vec3 vWorldPosition;
|
|
15
|
-
uniform vec3 color;
|
|
16
|
-
uniform sampler2D causticsTexture;
|
|
17
|
-
uniform sampler2D causticsTextureB;
|
|
18
|
-
uniform mat4 lightProjMatrix;
|
|
19
|
-
uniform mat4 lightViewMatrix;
|
|
20
|
-
void main() {
|
|
21
|
-
// Apply caustics
|
|
22
|
-
vec4 lightSpacePos = lightProjMatrix * lightViewMatrix * vec4(vWorldPosition, 1.0);
|
|
23
|
-
lightSpacePos.xyz /= lightSpacePos.w;
|
|
24
|
-
lightSpacePos.xyz = lightSpacePos.xyz * 0.5 + 0.5;
|
|
25
|
-
vec3 front = texture2D(causticsTexture, lightSpacePos.xy).rgb;
|
|
26
|
-
vec3 back = texture2D(causticsTextureB, lightSpacePos.xy).rgb;
|
|
27
|
-
gl_FragColor = vec4((front + back) * color, 1.0);
|
|
28
|
-
#include <tonemapping_fragment>
|
|
29
|
-
#include <${parseInt(THREE.REVISION.replace(/\D+/g, '')) >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
|
|
30
|
-
}`);
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F1c3RpY3MtcHJvamVjdGlvbi1tYXRlcmlhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9zaGFkZXJzL3NyYy9jYXVzdGljcy9jYXVzdGljcy1wcm9qZWN0aW9uLW1hdGVyaWFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVwRSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxjQUFjLENBQ3ZEO0lBQ0MsZUFBZSxFQUFFLElBQUk7SUFDckIsZ0JBQWdCLEVBQUUsSUFBSTtJQUN0QixLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO0lBQ3hCLGVBQWUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7SUFDcEMsZUFBZSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtDQUNwQyxFQUNEOzs7OztLQUtJLEVBQ0o7Ozs7Ozs7Ozs7Ozs7OztnQkFlZSxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsb0JBQW9CO0tBQzdHLENBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IHNoYWRlck1hdGVyaWFsIH0gZnJvbSAnLi4vc2hhZGVyLW1hdGVyaWFsL3NoYWRlci1tYXRlcmlhbCc7XG5cbmV4cG9ydCBjb25zdCBDYXVzdGljc1Byb2plY3Rpb25NYXRlcmlhbCA9IHNoYWRlck1hdGVyaWFsKFxuXHR7XG5cdFx0Y2F1c3RpY3NUZXh0dXJlOiBudWxsLFxuXHRcdGNhdXN0aWNzVGV4dHVyZUI6IG51bGwsXG5cdFx0Y29sb3I6IG5ldyBUSFJFRS5Db2xvcigpLFxuXHRcdGxpZ2h0UHJvak1hdHJpeDogbmV3IFRIUkVFLk1hdHJpeDQoKSxcblx0XHRsaWdodFZpZXdNYXRyaXg6IG5ldyBUSFJFRS5NYXRyaXg0KCksXG5cdH0sXG5cdGB2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XG4gICB2b2lkIG1haW4oKSB7XG4gICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIHZpZXdNYXRyaXggKiBtb2RlbE1hdHJpeCAqIHZlYzQocG9zaXRpb24sIDEuKTtcbiAgICAgdmVjNCB3b3JsZFBvc2l0aW9uID0gbW9kZWxNYXRyaXggKiB2ZWM0KHBvc2l0aW9uLCAxLik7XG4gICAgIHZXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbi54eXo7XG4gICB9YCxcblx0YHZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbiAgdW5pZm9ybSB2ZWMzIGNvbG9yO1xuICB1bmlmb3JtIHNhbXBsZXIyRCBjYXVzdGljc1RleHR1cmU7XG4gIHVuaWZvcm0gc2FtcGxlcjJEIGNhdXN0aWNzVGV4dHVyZUI7XG4gIHVuaWZvcm0gbWF0NCBsaWdodFByb2pNYXRyaXg7XG4gIHVuaWZvcm0gbWF0NCBsaWdodFZpZXdNYXRyaXg7XG4gICB2b2lkIG1haW4oKSB7XG4gICAgLy8gQXBwbHkgY2F1c3RpY3NcbiAgICB2ZWM0IGxpZ2h0U3BhY2VQb3MgPSBsaWdodFByb2pNYXRyaXggKiBsaWdodFZpZXdNYXRyaXggKiB2ZWM0KHZXb3JsZFBvc2l0aW9uLCAxLjApO1xuICAgIGxpZ2h0U3BhY2VQb3MueHl6IC89IGxpZ2h0U3BhY2VQb3MudztcbiAgICBsaWdodFNwYWNlUG9zLnh5eiA9IGxpZ2h0U3BhY2VQb3MueHl6ICogMC41ICsgMC41O1xuICAgIHZlYzMgZnJvbnQgPSB0ZXh0dXJlMkQoY2F1c3RpY3NUZXh0dXJlLCBsaWdodFNwYWNlUG9zLnh5KS5yZ2I7XG4gICAgdmVjMyBiYWNrID0gdGV4dHVyZTJEKGNhdXN0aWNzVGV4dHVyZUIsIGxpZ2h0U3BhY2VQb3MueHkpLnJnYjtcbiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KChmcm9udCArIGJhY2spICogY29sb3IsIDEuMCk7XG4gICAgI2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuICAgICNpbmNsdWRlIDwke3BhcnNlSW50KFRIUkVFLlJFVklTSU9OLnJlcGxhY2UoL1xcRCsvZywgJycpKSA+PSAxNTQgPyAnY29sb3JzcGFjZV9mcmFnbWVudCcgOiAnZW5jb2RpbmdzX2ZyYWdtZW50J30+XG4gICB9YCxcbik7XG4iXX0=
|
|
@@ -1,94 +0,0 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udm9sdXRpb24tbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc2hhZGVycy9zcmMvY29udm9sdXRpb24tbWF0ZXJpYWwvY29udm9sdXRpb24tbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVyRSxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsY0FBYztJQUV0RCxZQUFZLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRTtRQUNwQyxLQUFLLENBQUM7WUFDTCxRQUFRLEVBQUU7Z0JBQ1QsV0FBVyxFQUFFLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDOUIsV0FBVyxFQUFFLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDOUIsVUFBVSxFQUFFLElBQUksT0FBTyxDQUFDLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ3RDLFNBQVMsRUFBRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNyQyxhQUFhLEVBQUUsSUFBSSxPQUFPLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDekMsTUFBTSxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDeEIsS0FBSyxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDdkIsVUFBVSxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDNUIsU0FBUyxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDM0IsaUJBQWlCLEVBQUUsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDO2dCQUNuQyxpQkFBaUIsRUFBRSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQ25DLFVBQVUsRUFBRSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQzVCLG9CQUFvQixFQUFFLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQzthQUN2QztZQUNELGNBQWMsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VUFtQ1Q7WUFDUCxZQUFZLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQXFCUDtZQUNQLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFNBQVMsRUFBRSxLQUFLO1NBQ2hCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFlBQVksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxZQUFZLENBQUMsQ0FBUyxFQUFFLENBQVM7UUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBQ0QsYUFBYSxDQUFDLFVBQW1CO1FBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwRCxDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb0JsZW5kaW5nLCBTaGFkZXJNYXRlcmlhbCwgVW5pZm9ybSwgVmVjdG9yMiB9IGZyb20gJ3RocmVlJztcblxuZXhwb3J0IGNsYXNzIENvbnZvbHV0aW9uTWF0ZXJpYWwgZXh0ZW5kcyBTaGFkZXJNYXRlcmlhbCB7XG5cdHJlYWRvbmx5IGtlcm5lbDogRmxvYXQzMkFycmF5O1xuXHRjb25zdHJ1Y3Rvcih0ZXhlbFNpemUgPSBuZXcgVmVjdG9yMigpKSB7XG5cdFx0c3VwZXIoe1xuXHRcdFx0dW5pZm9ybXM6IHtcblx0XHRcdFx0aW5wdXRCdWZmZXI6IG5ldyBVbmlmb3JtKG51bGwpLFxuXHRcdFx0XHRkZXB0aEJ1ZmZlcjogbmV3IFVuaWZvcm0obnVsbCksXG5cdFx0XHRcdHJlc29sdXRpb246IG5ldyBVbmlmb3JtKG5ldyBWZWN0b3IyKCkpLFxuXHRcdFx0XHR0ZXhlbFNpemU6IG5ldyBVbmlmb3JtKG5ldyBWZWN0b3IyKCkpLFxuXHRcdFx0XHRoYWxmVGV4ZWxTaXplOiBuZXcgVW5pZm9ybShuZXcgVmVjdG9yMigpKSxcblx0XHRcdFx0a2VybmVsOiBuZXcgVW5pZm9ybSgwLjApLFxuXHRcdFx0XHRzY2FsZTogbmV3IFVuaWZvcm0oMS4wKSxcblx0XHRcdFx0Y2FtZXJhTmVhcjogbmV3IFVuaWZvcm0oMC4wKSxcblx0XHRcdFx0Y2FtZXJhRmFyOiBuZXcgVW5pZm9ybSgxLjApLFxuXHRcdFx0XHRtaW5EZXB0aFRocmVzaG9sZDogbmV3IFVuaWZvcm0oMC4wKSxcblx0XHRcdFx0bWF4RGVwdGhUaHJlc2hvbGQ6IG5ldyBVbmlmb3JtKDEuMCksXG5cdFx0XHRcdGRlcHRoU2NhbGU6IG5ldyBVbmlmb3JtKDAuMCksXG5cdFx0XHRcdGRlcHRoVG9CbHVyUmF0aW9CaWFzOiBuZXcgVW5pZm9ybSgwLjI1KSxcblx0XHRcdH0sXG5cdFx0XHRmcmFnbWVudFNoYWRlcjogYCNpbmNsdWRlIDxjb21tb24+XG4gICAgICAgICNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgaW5wdXRCdWZmZXI7XG4gICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIGRlcHRoQnVmZmVyO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IGNhbWVyYU5lYXI7XG4gICAgICAgIHVuaWZvcm0gZmxvYXQgY2FtZXJhRmFyO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IG1pbkRlcHRoVGhyZXNob2xkO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IG1heERlcHRoVGhyZXNob2xkO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IGRlcHRoU2NhbGU7XG4gICAgICAgIHVuaWZvcm0gZmxvYXQgZGVwdGhUb0JsdXJSYXRpb0JpYXM7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXY7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXYwO1xuICAgICAgICB2YXJ5aW5nIHZlYzIgdlV2MTtcbiAgICAgICAgdmFyeWluZyB2ZWMyIHZVdjI7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXYzO1xuXG4gICAgICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgICBmbG9hdCBkZXB0aEZhY3RvciA9IDAuMDtcblxuICAgICAgICAgICNpZmRlZiBVU0VfREVQVEhcbiAgICAgICAgICAgIHZlYzQgZGVwdGggPSB0ZXh0dXJlMkQoZGVwdGhCdWZmZXIsIHZVdik7XG4gICAgICAgICAgICBkZXB0aEZhY3RvciA9IHNtb290aHN0ZXAobWluRGVwdGhUaHJlc2hvbGQsIG1heERlcHRoVGhyZXNob2xkLCAxLjAtKGRlcHRoLnIgKiBkZXB0aC5hKSk7XG4gICAgICAgICAgICBkZXB0aEZhY3RvciAqPSBkZXB0aFNjYWxlO1xuICAgICAgICAgICAgZGVwdGhGYWN0b3IgPSBtYXgoMC4wLCBtaW4oMS4wLCBkZXB0aEZhY3RvciArIDAuMjUpKTtcbiAgICAgICAgICAjZW5kaWZcblxuICAgICAgICAgIHZlYzQgc3VtID0gdGV4dHVyZTJEKGlucHV0QnVmZmVyLCBtaXgodlV2MCwgdlV2LCBkZXB0aEZhY3RvcikpO1xuICAgICAgICAgIHN1bSArPSB0ZXh0dXJlMkQoaW5wdXRCdWZmZXIsIG1peCh2VXYxLCB2VXYsIGRlcHRoRmFjdG9yKSk7XG4gICAgICAgICAgc3VtICs9IHRleHR1cmUyRChpbnB1dEJ1ZmZlciwgbWl4KHZVdjIsIHZVdiwgZGVwdGhGYWN0b3IpKTtcbiAgICAgICAgICBzdW0gKz0gdGV4dHVyZTJEKGlucHV0QnVmZmVyLCBtaXgodlV2MywgdlV2LCBkZXB0aEZhY3RvcikpO1xuICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHN1bSAqIDAuMjUgO1xuXG4gICAgICAgICAgI2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD5cbiAgICAgICAgICAjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG4gICAgICAgICAgI2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cbiAgICAgICAgfWAsXG5cdFx0XHR2ZXJ0ZXhTaGFkZXI6IGB1bmlmb3JtIHZlYzIgdGV4ZWxTaXplO1xuICAgICAgICB1bmlmb3JtIHZlYzIgaGFsZlRleGVsU2l6ZTtcbiAgICAgICAgdW5pZm9ybSBmbG9hdCBrZXJuZWw7XG4gICAgICAgIHVuaWZvcm0gZmxvYXQgc2NhbGU7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXY7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXYwO1xuICAgICAgICB2YXJ5aW5nIHZlYzIgdlV2MTtcbiAgICAgICAgdmFyeWluZyB2ZWMyIHZVdjI7XG4gICAgICAgIHZhcnlpbmcgdmVjMiB2VXYzO1xuXG4gICAgICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgICB2ZWMyIHV2ID0gcG9zaXRpb24ueHkgKiAwLjUgKyAwLjU7XG4gICAgICAgICAgdlV2ID0gdXY7XG5cbiAgICAgICAgICB2ZWMyIGRVdiA9ICh0ZXhlbFNpemUgKiB2ZWMyKGtlcm5lbCkgKyBoYWxmVGV4ZWxTaXplKSAqIHNjYWxlO1xuICAgICAgICAgIHZVdjAgPSB2ZWMyKHV2LnggLSBkVXYueCwgdXYueSArIGRVdi55KTtcbiAgICAgICAgICB2VXYxID0gdmVjMih1di54ICsgZFV2LngsIHV2LnkgKyBkVXYueSk7XG4gICAgICAgICAgdlV2MiA9IHZlYzIodXYueCArIGRVdi54LCB1di55IC0gZFV2LnkpO1xuICAgICAgICAgIHZVdjMgPSB2ZWMyKHV2LnggLSBkVXYueCwgdXYueSAtIGRVdi55KTtcblxuICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbi54eSwgMS4wLCAxLjApO1xuICAgICAgICB9YCxcblx0XHRcdGJsZW5kaW5nOiBOb0JsZW5kaW5nLFxuXHRcdFx0ZGVwdGhXcml0ZTogZmFsc2UsXG5cdFx0XHRkZXB0aFRlc3Q6IGZhbHNlLFxuXHRcdH0pO1xuXG5cdFx0dGhpcy50b25lTWFwcGVkID0gZmFsc2U7XG5cdFx0dGhpcy5zZXRUZXhlbFNpemUodGV4ZWxTaXplLngsIHRleGVsU2l6ZS55KTtcblx0XHR0aGlzLmtlcm5lbCA9IG5ldyBGbG9hdDMyQXJyYXkoWzAuMCwgMS4wLCAyLjAsIDIuMCwgMy4wXSk7XG5cdH1cblxuXHRzZXRUZXhlbFNpemUoeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcblx0XHR0aGlzLnVuaWZvcm1zWyd0ZXhlbFNpemUnXS52YWx1ZS5zZXQoeCwgeSk7XG5cdFx0dGhpcy51bmlmb3Jtc1snaGFsZlRleGVsU2l6ZSddLnZhbHVlLnNldCh4LCB5KS5tdWx0aXBseVNjYWxhcigwLjUpO1xuXHR9XG5cdHNldFJlc29sdXRpb24ocmVzb2x1dGlvbjogVmVjdG9yMikge1xuXHRcdHRoaXMudW5pZm9ybXNbJ3Jlc29sdXRpb24nXS52YWx1ZS5jb3B5KHJlc29sdXRpb24pO1xuXHR9XG59XG4iXX0=
|
|
@@ -1,3 +0,0 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY2FyZC1tYXRlcmlhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9zaGFkZXJzL3NyYy9kaXNjYXJkLW1hdGVyaWFsL2Rpc2NhcmQtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXBFLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxjQUFjLENBQzVDLEVBQUUsRUFDRixpQkFBaUIsRUFDakIsb0VBQW9FLENBQ3BFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaGFkZXJNYXRlcmlhbCB9IGZyb20gJy4uL3NoYWRlci1tYXRlcmlhbC9zaGFkZXItbWF0ZXJpYWwnO1xuXG5leHBvcnQgY29uc3QgRGlzY2FyZE1hdGVyaWFsID0gc2hhZGVyTWF0ZXJpYWwoXG5cdHt9LFxuXHQndm9pZCBtYWluKCkgeyB9Jyxcblx0J3ZvaWQgbWFpbigpIHsgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApOyBkaXNjYXJkOyAgfScsXG4pO1xuIl19
|