angular-three-soba 2.0.0-beta.7 → 2.0.0-beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/abstractions/billboard/billboard.d.ts +11 -7
- package/abstractions/detailed/detailed.d.ts +26 -0
- package/abstractions/edges/edges.d.ts +23 -11
- package/abstractions/grid/grid.d.ts +41 -50
- package/abstractions/index.d.ts +1 -7
- package/abstractions/text/text.d.ts +10 -4
- package/abstractions/text-3d/text-3d.d.ts +47 -40
- package/cameras/camera/camera-content.d.ts +1 -1
- package/cameras/camera/camera.d.ts +16 -13
- package/cameras/cube-camera/cube-camera.d.ts +50 -23
- package/cameras/index.d.ts +0 -1
- package/cameras/orthographic-camera/orthographic-camera.d.ts +29 -18
- package/cameras/perspective-camera/perspective-camera.d.ts +10 -1
- package/controls/orbit-controls/orbit-controls.d.ts +30 -13
- package/esm2022/abstractions/billboard/billboard.mjs +36 -33
- package/esm2022/abstractions/detailed/detailed.mjs +64 -0
- package/esm2022/abstractions/edges/edges.mjs +58 -63
- package/esm2022/abstractions/grid/grid.mjs +140 -110
- package/esm2022/abstractions/index.mjs +2 -8
- package/esm2022/abstractions/text/text.mjs +123 -122
- package/esm2022/abstractions/text-3d/text-3d.mjs +119 -121
- package/esm2022/cameras/camera/camera-content.mjs +5 -6
- package/esm2022/cameras/camera/camera.mjs +48 -42
- package/esm2022/cameras/cube-camera/cube-camera.mjs +129 -99
- package/esm2022/cameras/index.mjs +1 -2
- package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +78 -75
- package/esm2022/cameras/perspective-camera/perspective-camera.mjs +25 -26
- package/esm2022/controls/orbit-controls/orbit-controls.mjs +94 -90
- package/esm2022/loaders/gltf-loader/gltf-loader.mjs +3 -6
- package/esm2022/loaders/loader/loader.mjs +92 -87
- package/esm2022/loaders/progress/progress.mjs +1 -1
- package/esm2022/loaders/texture-loader/texture-loader.mjs +4 -4
- package/esm2022/materials/index.mjs +2 -1
- package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +60 -51
- package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +239 -255
- package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +99 -97
- package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +167 -146
- package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +44 -42
- package/esm2022/materials/point-material/point-material.mjs +46 -0
- package/esm2022/misc/animations/animations.mjs +20 -16
- package/esm2022/misc/bake-shadows/bake-shadows.mjs +13 -13
- package/esm2022/misc/caustics/caustics.mjs +387 -0
- package/esm2022/misc/decal/decal.mjs +187 -0
- package/esm2022/misc/depth-buffer/depth-buffer.mjs +33 -35
- package/esm2022/misc/example/example.mjs +160 -0
- package/esm2022/misc/fbo/fbo.mjs +35 -35
- package/esm2022/misc/html/html-wrapper.mjs +478 -0
- package/esm2022/misc/html/html.mjs +304 -0
- package/esm2022/misc/index.mjs +10 -1
- package/esm2022/misc/sampler/sampler.mjs +142 -0
- package/esm2022/misc/shadow/shadow.mjs +111 -0
- package/esm2022/misc/stats-gl/stats-gl.mjs +61 -0
- package/esm2022/misc/trail/trail.mjs +209 -0
- package/esm2022/misc/trail-texture/inject-trail-texture.mjs +17 -0
- package/esm2022/misc/trail-texture/trail-texture.mjs +106 -0
- package/esm2022/modifiers/angular-three-soba-modifiers.mjs +5 -0
- package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +64 -0
- package/esm2022/modifiers/index.mjs +2 -0
- package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +44 -0
- package/esm2022/performances/adaptive-events/adaptive-events.mjs +27 -0
- package/esm2022/performances/angular-three-soba-performances.mjs +5 -0
- package/esm2022/performances/index.mjs +6 -0
- package/esm2022/performances/points/points-input.mjs +64 -0
- package/esm2022/performances/points/points.mjs +329 -0
- package/esm2022/performances/points/position-point.mjs +54 -0
- package/esm2022/performances/segments/segment-object.mjs +9 -0
- package/esm2022/performances/segments/segments.mjs +182 -0
- package/esm2022/shaders/blur-pass/blur-pass.mjs +1 -1
- package/esm2022/shaders/caustics/caustics-material.mjs +130 -0
- package/esm2022/shaders/caustics/caustics-projection-material.mjs +31 -0
- package/esm2022/shaders/convolution-material/convolution-material.mjs +1 -1
- package/esm2022/shaders/discard-material/discard-material.mjs +1 -1
- package/esm2022/shaders/grid-material/grid-material.mjs +29 -14
- package/esm2022/shaders/index.mjs +5 -3
- package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +42 -41
- package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +1 -1
- package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +2 -2
- package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +4 -4
- package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +1 -1
- package/esm2022/shaders/shader-material/shader-material.mjs +1 -1
- package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +17 -25
- package/esm2022/shaders/sparkles-material/sparkles-material.mjs +32 -46
- package/esm2022/shaders/spot-light-material/spot-light-material.mjs +7 -7
- package/esm2022/shaders/star-field-material/star-field-material.mjs +3 -2
- package/esm2022/shaders/wireframe-material/wireframe-material.mjs +247 -0
- package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +160 -176
- package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +1 -1
- package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +126 -128
- package/esm2022/staging/backdrop/backdrop.mjs +77 -0
- package/esm2022/staging/bb-anchor/bb-anchor.mjs +70 -0
- package/esm2022/staging/bounds/bounds.mjs +144 -143
- package/esm2022/staging/camera-shake/camera-shake.mjs +86 -80
- package/esm2022/staging/center/center.mjs +106 -91
- package/esm2022/staging/cloud/cloud.mjs +118 -124
- package/esm2022/staging/contact-shadows/contact-shadows.mjs +131 -134
- package/esm2022/staging/environment/assets.mjs +12 -12
- package/esm2022/staging/environment/environment-cube.mjs +28 -30
- package/esm2022/staging/environment/environment-ground.mjs +18 -20
- package/esm2022/staging/environment/environment-input.mjs +97 -84
- package/esm2022/staging/environment/environment-map.mjs +33 -33
- package/esm2022/staging/environment/environment-portal.mjs +75 -97
- package/esm2022/staging/environment/environment.mjs +34 -51
- package/esm2022/staging/environment/utils.mjs +35 -14
- package/esm2022/staging/float/float.mjs +70 -58
- package/esm2022/staging/index.mjs +7 -3
- package/esm2022/staging/matcap-texture/matcap-texture.mjs +64 -0
- package/esm2022/staging/normal-texture/normal-texture.mjs +53 -0
- package/esm2022/staging/sky/sky.mjs +85 -80
- package/esm2022/staging/sparkles/sparkles.mjs +108 -105
- package/esm2022/staging/spot-light/shadow-mesh-input.mjs +63 -0
- package/esm2022/staging/spot-light/shadow-mesh.mjs +266 -0
- package/esm2022/staging/spot-light/spot-light-input.mjs +67 -58
- package/esm2022/staging/spot-light/spot-light.mjs +51 -64
- package/esm2022/staging/spot-light/volumetric-mesh.mjs +61 -78
- package/esm2022/staging/stage/stage.mjs +304 -290
- package/esm2022/staging/stars/stars.mjs +101 -102
- package/esm2022/staging/wireframe/wireframe-input.mjs +191 -0
- package/esm2022/staging/wireframe/wireframe.mjs +224 -0
- package/esm2022/utils/angular-three-soba-utils.mjs +5 -0
- package/esm2022/utils/content/content.mjs +15 -0
- package/esm2022/utils/index.mjs +2 -0
- package/fesm2022/angular-three-soba-abstractions.mjs +505 -2087
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +302 -259
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +93 -88
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +94 -90
- package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-materials.mjs +655 -590
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +2198 -89
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-modifiers.mjs +71 -0
- package/fesm2022/angular-three-soba-modifiers.mjs.map +1 -0
- package/fesm2022/angular-three-soba-performances.mjs +697 -0
- package/fesm2022/angular-three-soba-performances.mjs.map +1 -0
- package/fesm2022/angular-three-soba-shaders.mjs +501 -264
- package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +2870 -2555
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2022/angular-three-soba-utils.mjs +22 -0
- package/fesm2022/angular-three-soba-utils.mjs.map +1 -0
- package/loaders/gltf-loader/gltf-loader.d.ts +4 -3
- package/loaders/loader/loader.d.ts +19 -17
- package/loaders/progress/progress.d.ts +1 -1
- package/loaders/texture-loader/texture-loader.d.ts +2 -2
- package/materials/index.d.ts +1 -0
- package/materials/mesh-distort-material/mesh-distort-material.d.ts +25 -15
- package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +74 -56
- package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +33 -21
- package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +55 -39
- package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +19 -10
- package/materials/point-material/point-material.d.ts +24 -0
- package/metadata.json +1 -0
- package/misc/animations/animations.d.ts +6 -4
- package/misc/caustics/caustics.d.ts +87 -0
- package/misc/decal/decal.d.ts +49 -0
- package/misc/depth-buffer/depth-buffer.d.ts +2 -2
- package/misc/example/example.d.ts +81 -0
- package/misc/fbo/fbo.d.ts +2 -2
- package/misc/html/html-wrapper.d.ts +559 -0
- package/misc/html/html.d.ts +214 -0
- package/misc/index.d.ts +9 -0
- package/misc/sampler/sampler.d.ts +67 -0
- package/misc/shadow/shadow.d.ts +37 -0
- package/misc/stats-gl/stats-gl.d.ts +24 -0
- package/misc/trail/trail.d.ts +57 -0
- package/misc/trail-texture/inject-trail-texture.d.ts +9 -0
- package/misc/trail-texture/trail-texture.d.ts +50 -0
- package/modifiers/README.md +3 -0
- package/modifiers/curve-modifier/curve-modifier.d.ts +23 -0
- package/modifiers/index.d.ts +1 -0
- package/package.json +30 -22
- package/performances/README.md +3 -0
- package/performances/adaptive-dpr/adaptive-dpr.d.ts +14 -0
- package/{performance/adaptive → performances/adaptive-events}/adaptive-events.d.ts +3 -0
- package/performances/index.d.ts +5 -0
- package/performances/points/points-input.d.ts +32 -0
- package/performances/points/points.d.ts +92 -0
- package/{performance/instances/position-mesh.d.ts → performances/points/position-point.d.ts} +4 -3
- package/performances/segments/segment-object.d.ts +7 -0
- package/performances/segments/segments.d.ts +124 -0
- package/shaders/grid-material/grid-material.d.ts +33 -0
- package/shaders/index.d.ts +4 -2
- package/shaders/mesh-distort-material/mesh-distort-material.d.ts +146 -1
- package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +1 -1
- package/shaders/shader-material/shader-material.d.ts +2 -2
- package/shaders/soft-shadow-material/soft-shadow-material.d.ts +10 -1
- package/shaders/sparkles-material/sparkles-material.d.ts +15 -1
- package/shaders/spot-light-material/spot-light-material.d.ts +11 -2
- package/shaders/star-field-material/star-field-material.d.ts +11 -1
- package/shaders/wireframe-material/wireframe-material.d.ts +58 -0
- package/staging/accumulative-shadows/accumulative-shadows.d.ts +89 -39
- package/staging/accumulative-shadows/randomized-lights.d.ts +40 -27
- package/staging/backdrop/backdrop.d.ts +30 -0
- package/staging/bb-anchor/bb-anchor.d.ts +27 -0
- package/staging/bounds/bounds.d.ts +100 -24
- package/staging/camera-shake/camera-shake.d.ts +30 -19
- package/staging/center/center.d.ts +43 -35
- package/staging/cloud/cloud.d.ts +26 -23
- package/staging/contact-shadows/contact-shadows.d.ts +41 -28
- package/staging/environment/assets.d.ts +9 -9
- package/staging/environment/environment-cube.d.ts +9 -5
- package/staging/environment/environment-ground.d.ts +7 -7
- package/staging/environment/environment-input.d.ts +36 -36
- package/staging/environment/environment-map.d.ts +10 -5
- package/staging/environment/environment-portal.d.ts +10 -5
- package/staging/environment/environment.d.ts +0 -4
- package/staging/environment/utils.d.ts +2 -2
- package/staging/float/float.d.ts +14 -10
- package/staging/index.d.ts +6 -2
- package/staging/matcap-texture/matcap-texture.d.ts +13 -0
- package/staging/normal-texture/normal-texture.d.ts +16 -0
- package/staging/sky/sky.d.ts +28 -21
- package/staging/sparkles/sparkles.d.ts +35 -21
- package/staging/spot-light/shadow-mesh-input.d.ts +29 -0
- package/staging/spot-light/shadow-mesh.d.ts +37 -0
- package/staging/spot-light/spot-light-input.d.ts +25 -25
- package/staging/spot-light/spot-light.d.ts +31 -15
- package/staging/spot-light/volumetric-mesh.d.ts +15 -9
- package/staging/stage/stage.d.ts +88 -63
- package/staging/stars/stars.d.ts +27 -16
- package/staging/wireframe/wireframe-input.d.ts +65 -0
- package/staging/wireframe/wireframe.d.ts +28 -0
- package/utils/README.md +3 -0
- package/utils/content/content.d.ts +8 -0
- package/utils/index.d.ts +1 -0
- package/web-types.json +1 -0
- package/abstractions/catmull-rom-line/catmull-rom-line.d.ts +0 -25
- package/abstractions/cubic-bezier-line/cubic-bezier-line.d.ts +0 -25
- package/abstractions/gizmo-helper/gizmo-helper.d.ts +0 -34
- package/abstractions/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -12
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -30
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +0 -32
- package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -14
- package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -47
- package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -40
- package/abstractions/line/line-input.d.ts +0 -42
- package/abstractions/line/line.d.ts +0 -35
- package/abstractions/quadratic-bezier-line/quadratic-bezier-line.d.ts +0 -23
- package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +0 -131
- package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +0 -113
- package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +0 -210
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -95
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -155
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -62
- package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -80
- package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -206
- package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -273
- package/esm2022/abstractions/line/line-input.mjs +0 -113
- package/esm2022/abstractions/line/line.mjs +0 -165
- package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -128
- package/esm2022/performance/adaptive/adaptive-dpr.mjs +0 -46
- package/esm2022/performance/adaptive/adaptive-events.mjs +0 -31
- package/esm2022/performance/angular-three-soba-performance.mjs +0 -5
- package/esm2022/performance/detailed/detailed.mjs +0 -61
- package/esm2022/performance/index.mjs +0 -7
- package/esm2022/performance/instances/instance.mjs +0 -48
- package/esm2022/performance/instances/instances.mjs +0 -189
- package/esm2022/performance/instances/position-mesh.mjs +0 -52
- package/esm2022/performance/stats/stats.mjs +0 -79
- package/esm2022/shaders/caustics-material/caustics-material.mjs +0 -128
- package/esm2022/shaders/caustics-material/caustics-projection-material.mjs +0 -33
- package/esm2022/staging/caustics/caustisc.mjs +0 -384
- package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +0 -57
- package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +0 -258
- package/fesm2022/angular-three-soba-performance.mjs +0 -487
- package/fesm2022/angular-three-soba-performance.mjs.map +0 -1
- package/performance/README.md +0 -3
- package/performance/adaptive/adaptive-dpr.d.ts +0 -8
- package/performance/detailed/detailed.d.ts +0 -20
- package/performance/index.d.ts +0 -6
- package/performance/instances/instance.d.ts +0 -9
- package/performance/instances/instances.d.ts +0 -35
- package/performance/stats/stats.d.ts +0 -18
- package/plugin/generators.json +0 -19
- package/plugin/libs/plugin/README.md +0 -11
- package/plugin/package.json +0 -9
- package/plugin/src/generators/init/compat.d.ts +0 -2
- package/plugin/src/generators/init/compat.js +0 -6
- package/plugin/src/generators/init/compat.js.map +0 -1
- package/plugin/src/generators/init/init.d.ts +0 -7
- package/plugin/src/generators/init/init.js +0 -28
- package/plugin/src/generators/init/init.js.map +0 -1
- package/plugin/src/generators/init/schema.json +0 -6
- package/plugin/src/index.d.ts +0 -1
- package/plugin/src/index.js +0 -6
- package/plugin/src/index.js.map +0 -1
- package/staging/caustics/caustisc.d.ts +0 -70
- package/staging/spot-light/spot-light-shadow-mesh-input.d.ts +0 -29
- package/staging/spot-light/spot-light-shadow-mesh.d.ts +0 -38
- /package/shaders/{caustics-material → caustics}/caustics-material.d.ts +0 -0
- /package/shaders/{caustics-material → caustics}/caustics-projection-material.d.ts +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import * as THREE from 'three';
|
|
2
|
-
import { ShaderMaterial, Uniform, Vector2, NoBlending, WebGLRenderTarget, LinearFilter, HalfFloatType, Scene, PerspectiveCamera, BufferGeometry, BufferAttribute, Mesh, MeshStandardMaterial
|
|
3
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
+
import { ShaderMaterial, Uniform, Vector2, NoBlending, WebGLRenderTarget, LinearFilter, HalfFloatType, Scene, PerspectiveCamera, BufferGeometry, BufferAttribute, Mesh, MeshStandardMaterial } from 'three';
|
|
3
|
+
import { InjectionToken, inject, runInInjectionContext, computed, effect } from '@angular/core';
|
|
4
4
|
import { MeshBVHUniformStruct, shaderStructs, shaderIntersectFunction } from 'three-mesh-bvh';
|
|
5
|
+
import { assertInjectionContext } from 'angular-three';
|
|
5
6
|
|
|
6
7
|
class ConvolutionMaterial extends ShaderMaterial {
|
|
7
8
|
constructor(texelSize = new Vector2()) {
|
|
@@ -206,113 +207,115 @@ const CausticsMaterial = shaderMaterial({
|
|
|
206
207
|
size: 10,
|
|
207
208
|
intensity: 0.5,
|
|
208
209
|
},
|
|
209
|
-
/* glsl */ `
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
uniform
|
|
217
|
-
uniform
|
|
218
|
-
uniform
|
|
219
|
-
uniform
|
|
220
|
-
uniform float
|
|
221
|
-
uniform float
|
|
222
|
-
uniform float
|
|
223
|
-
uniform float
|
|
224
|
-
uniform float
|
|
225
|
-
uniform float
|
|
226
|
-
uniform float
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
uniform
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
// n must be normalized
|
|
244
|
-
return dot(p,n) + h;
|
|
245
|
-
}
|
|
246
|
-
float planeIntersect( vec3 ro, vec3 rd, vec4 p ) {
|
|
247
|
-
return -(dot(ro,p.xyz)+p.w)/dot(rd,p.xyz);
|
|
248
|
-
}
|
|
249
|
-
vec3 totalInternalReflection(vec3 ro, vec3 rd, vec3 pos, vec3 normal, float ior, out vec3 rayOrigin, out vec3 rayDirection) {
|
|
250
|
-
rayOrigin = ro;
|
|
251
|
-
rayDirection = rd;
|
|
252
|
-
rayDirection = refract(rayDirection, normal, 1.0 / ior);
|
|
253
|
-
rayOrigin = pos + rayDirection * 0.1;
|
|
254
|
-
return rayDirection;
|
|
255
|
-
}
|
|
256
|
-
void main() {
|
|
257
|
-
// Each sample consists of random offset in the x and y direction
|
|
258
|
-
float caustic = 0.0;
|
|
259
|
-
float causticTexelSize = (1.0 / resolution) * size * 2.0;
|
|
260
|
-
float texelsNeeded = worldRadius / causticTexelSize;
|
|
261
|
-
float sampleRadius = texelsNeeded / resolution;
|
|
262
|
-
float sum = 0.0;
|
|
263
|
-
if (texture2D(depthTexture, vUv).x == 1.0) {
|
|
264
|
-
gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
|
|
265
|
-
return;
|
|
210
|
+
/* glsl */ `
|
|
211
|
+
varying vec2 vUv;
|
|
212
|
+
void main() {
|
|
213
|
+
vUv = uv;
|
|
214
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
215
|
+
}`,
|
|
216
|
+
/* glsl */ `
|
|
217
|
+
uniform mat4 cameraMatrixWorld;
|
|
218
|
+
uniform mat4 cameraProjectionMatrixInv;
|
|
219
|
+
uniform vec3 lightDir;
|
|
220
|
+
uniform vec3 lightPlaneNormal;
|
|
221
|
+
uniform float lightPlaneConstant;
|
|
222
|
+
uniform float near;
|
|
223
|
+
uniform float far;
|
|
224
|
+
uniform float time;
|
|
225
|
+
uniform float worldRadius;
|
|
226
|
+
uniform float resolution;
|
|
227
|
+
uniform float size;
|
|
228
|
+
uniform float intensity;
|
|
229
|
+
uniform float ior;
|
|
230
|
+
precision highp isampler2D;
|
|
231
|
+
precision highp usampler2D;
|
|
232
|
+
uniform sampler2D normalTexture;
|
|
233
|
+
uniform sampler2D depthTexture;
|
|
234
|
+
uniform float bounces;
|
|
235
|
+
varying vec2 vUv;
|
|
236
|
+
vec3 WorldPosFromDepth(float depth, vec2 coord) {
|
|
237
|
+
float z = depth * 2.0 - 1.0;
|
|
238
|
+
vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);
|
|
239
|
+
vec4 viewSpacePosition = cameraProjectionMatrixInv * clipSpacePosition;
|
|
240
|
+
// Perspective division
|
|
241
|
+
viewSpacePosition /= viewSpacePosition.w;
|
|
242
|
+
vec4 worldSpacePosition = cameraMatrixWorld * viewSpacePosition;
|
|
243
|
+
return worldSpacePosition.xyz;
|
|
266
244
|
}
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
vec2 offset4 = vec2(0.5, -0.5);//vec2(rand() - 0.5, rand() - 0.5);
|
|
271
|
-
vec2 uv1 = vUv + offset1 * sampleRadius;
|
|
272
|
-
vec2 uv2 = vUv + offset2 * sampleRadius;
|
|
273
|
-
vec2 uv3 = vUv + offset3 * sampleRadius;
|
|
274
|
-
vec2 uv4 = vUv + offset4 * sampleRadius;
|
|
275
|
-
vec3 normal1 = texture2D(normalTexture, uv1, -10.0).rgb * 2.0 - 1.0;
|
|
276
|
-
vec3 normal2 = texture2D(normalTexture, uv2, -10.0).rgb * 2.0 - 1.0;
|
|
277
|
-
vec3 normal3 = texture2D(normalTexture, uv3, -10.0).rgb * 2.0 - 1.0;
|
|
278
|
-
vec3 normal4 = texture2D(normalTexture, uv4, -10.0).rgb * 2.0 - 1.0;
|
|
279
|
-
float depth1 = texture2D(depthTexture, uv1, -10.0).x;
|
|
280
|
-
float depth2 = texture2D(depthTexture, uv2, -10.0).x;
|
|
281
|
-
float depth3 = texture2D(depthTexture, uv3, -10.0).x;
|
|
282
|
-
float depth4 = texture2D(depthTexture, uv4, -10.0).x;
|
|
283
|
-
// Sanity check the depths
|
|
284
|
-
if (depth1 == 1.0 || depth2 == 1.0 || depth3 == 1.0 || depth4 == 1.0) {
|
|
285
|
-
gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
|
|
286
|
-
return;
|
|
245
|
+
float sdPlane( vec3 p, vec3 n, float h ) {
|
|
246
|
+
// n must be normalized
|
|
247
|
+
return dot(p,n) + h;
|
|
287
248
|
}
|
|
288
|
-
vec3
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
vec3
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
249
|
+
float planeIntersect( vec3 ro, vec3 rd, vec4 p ) {
|
|
250
|
+
return -(dot(ro,p.xyz)+p.w)/dot(rd,p.xyz);
|
|
251
|
+
}
|
|
252
|
+
vec3 totalInternalReflection(vec3 ro, vec3 rd, vec3 pos, vec3 normal, float ior, out vec3 rayOrigin, out vec3 rayDirection) {
|
|
253
|
+
rayOrigin = ro;
|
|
254
|
+
rayDirection = rd;
|
|
255
|
+
rayDirection = refract(rayDirection, normal, 1.0 / ior);
|
|
256
|
+
rayOrigin = pos + rayDirection * 0.1;
|
|
257
|
+
return rayDirection;
|
|
258
|
+
}
|
|
259
|
+
void main() {
|
|
260
|
+
// Each sample consists of random offset in the x and y direction
|
|
261
|
+
float caustic = 0.0;
|
|
262
|
+
float causticTexelSize = (1.0 / resolution) * size * 2.0;
|
|
263
|
+
float texelsNeeded = worldRadius / causticTexelSize;
|
|
264
|
+
float sampleRadius = texelsNeeded / resolution;
|
|
265
|
+
float sum = 0.0;
|
|
266
|
+
if (texture2D(depthTexture, vUv).x == 1.0) {
|
|
267
|
+
gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
vec2 offset1 = vec2(-0.5, -0.5);//vec2(rand() - 0.5, rand() - 0.5);
|
|
271
|
+
vec2 offset2 = vec2(-0.5, 0.5);//vec2(rand() - 0.5, rand() - 0.5);
|
|
272
|
+
vec2 offset3 = vec2(0.5, 0.5);//vec2(rand() - 0.5, rand() - 0.5);
|
|
273
|
+
vec2 offset4 = vec2(0.5, -0.5);//vec2(rand() - 0.5, rand() - 0.5);
|
|
274
|
+
vec2 uv1 = vUv + offset1 * sampleRadius;
|
|
275
|
+
vec2 uv2 = vUv + offset2 * sampleRadius;
|
|
276
|
+
vec2 uv3 = vUv + offset3 * sampleRadius;
|
|
277
|
+
vec2 uv4 = vUv + offset4 * sampleRadius;
|
|
278
|
+
vec3 normal1 = texture2D(normalTexture, uv1, -10.0).rgb * 2.0 - 1.0;
|
|
279
|
+
vec3 normal2 = texture2D(normalTexture, uv2, -10.0).rgb * 2.0 - 1.0;
|
|
280
|
+
vec3 normal3 = texture2D(normalTexture, uv3, -10.0).rgb * 2.0 - 1.0;
|
|
281
|
+
vec3 normal4 = texture2D(normalTexture, uv4, -10.0).rgb * 2.0 - 1.0;
|
|
282
|
+
float depth1 = texture2D(depthTexture, uv1, -10.0).x;
|
|
283
|
+
float depth2 = texture2D(depthTexture, uv2, -10.0).x;
|
|
284
|
+
float depth3 = texture2D(depthTexture, uv3, -10.0).x;
|
|
285
|
+
float depth4 = texture2D(depthTexture, uv4, -10.0).x;
|
|
286
|
+
// Sanity check the depths
|
|
287
|
+
if (depth1 == 1.0 || depth2 == 1.0 || depth3 == 1.0 || depth4 == 1.0) {
|
|
288
|
+
gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
vec3 pos1 = WorldPosFromDepth(depth1, uv1);
|
|
292
|
+
vec3 pos2 = WorldPosFromDepth(depth2, uv2);
|
|
293
|
+
vec3 pos3 = WorldPosFromDepth(depth3, uv3);
|
|
294
|
+
vec3 pos4 = WorldPosFromDepth(depth4, uv4);
|
|
295
|
+
vec3 originPos1 = WorldPosFromDepth(0.0, uv1);
|
|
296
|
+
vec3 originPos2 = WorldPosFromDepth(0.0, uv2);
|
|
297
|
+
vec3 originPos3 = WorldPosFromDepth(0.0, uv3);
|
|
298
|
+
vec3 originPos4 = WorldPosFromDepth(0.0, uv4);
|
|
299
|
+
vec3 endPos1, endPos2, endPos3, endPos4;
|
|
300
|
+
vec3 endDir1, endDir2, endDir3, endDir4;
|
|
301
|
+
totalInternalReflection(originPos1, lightDir, pos1, normal1, ior, endPos1, endDir1);
|
|
302
|
+
totalInternalReflection(originPos2, lightDir, pos2, normal2, ior, endPos2, endDir2);
|
|
303
|
+
totalInternalReflection(originPos3, lightDir, pos3, normal3, ior, endPos3, endDir3);
|
|
304
|
+
totalInternalReflection(originPos4, lightDir, pos4, normal4, ior, endPos4, endDir4);
|
|
305
|
+
float lightPosArea = length(cross(originPos2 - originPos1, originPos3 - originPos1)) + length(cross(originPos3 - originPos1, originPos4 - originPos1));
|
|
306
|
+
float t1 = planeIntersect(endPos1, endDir1, vec4(lightPlaneNormal, lightPlaneConstant));
|
|
307
|
+
float t2 = planeIntersect(endPos2, endDir2, vec4(lightPlaneNormal, lightPlaneConstant));
|
|
308
|
+
float t3 = planeIntersect(endPos3, endDir3, vec4(lightPlaneNormal, lightPlaneConstant));
|
|
309
|
+
float t4 = planeIntersect(endPos4, endDir4, vec4(lightPlaneNormal, lightPlaneConstant));
|
|
310
|
+
vec3 finalPos1 = endPos1 + endDir1 * t1;
|
|
311
|
+
vec3 finalPos2 = endPos2 + endDir2 * t2;
|
|
312
|
+
vec3 finalPos3 = endPos3 + endDir3 * t3;
|
|
313
|
+
vec3 finalPos4 = endPos4 + endDir4 * t4;
|
|
314
|
+
float finalArea = length(cross(finalPos2 - finalPos1, finalPos3 - finalPos1)) + length(cross(finalPos3 - finalPos1, finalPos4 - finalPos1));
|
|
315
|
+
caustic += intensity * (lightPosArea / finalArea);
|
|
316
|
+
// Calculate the area of the triangle in light spaces
|
|
317
|
+
gl_FragColor = vec4(vec3(max(caustic, 0.0)), 1.0);
|
|
318
|
+
}`);
|
|
316
319
|
|
|
317
320
|
const CausticsProjectionMaterial = shaderMaterial({
|
|
318
321
|
causticsTexture: null,
|
|
@@ -320,30 +323,28 @@ const CausticsProjectionMaterial = shaderMaterial({
|
|
|
320
323
|
color: new THREE.Color(),
|
|
321
324
|
lightProjMatrix: new THREE.Matrix4(),
|
|
322
325
|
lightViewMatrix: new THREE.Matrix4(),
|
|
323
|
-
},
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
uniform
|
|
332
|
-
uniform
|
|
333
|
-
uniform
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
#include <encodings_fragment>
|
|
346
|
-
}`);
|
|
326
|
+
}, `varying vec3 vWorldPosition;
|
|
327
|
+
void main() {
|
|
328
|
+
gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position, 1.);
|
|
329
|
+
vec4 worldPosition = modelMatrix * vec4(position, 1.);
|
|
330
|
+
vWorldPosition = worldPosition.xyz;
|
|
331
|
+
}`, `varying vec3 vWorldPosition;
|
|
332
|
+
uniform vec3 color;
|
|
333
|
+
uniform sampler2D causticsTexture;
|
|
334
|
+
uniform sampler2D causticsTextureB;
|
|
335
|
+
uniform mat4 lightProjMatrix;
|
|
336
|
+
uniform mat4 lightViewMatrix;
|
|
337
|
+
void main() {
|
|
338
|
+
// Apply caustics
|
|
339
|
+
vec4 lightSpacePos = lightProjMatrix * lightViewMatrix * vec4(vWorldPosition, 1.0);
|
|
340
|
+
lightSpacePos.xyz /= lightSpacePos.w;
|
|
341
|
+
lightSpacePos.xyz = lightSpacePos.xyz * 0.5 + 0.5;
|
|
342
|
+
vec3 front = texture2D(causticsTexture, lightSpacePos.xy).rgb;
|
|
343
|
+
vec3 back = texture2D(causticsTextureB, lightSpacePos.xy).rgb;
|
|
344
|
+
gl_FragColor = vec4((front + back) * color, 1.0);
|
|
345
|
+
#include <tonemapping_fragment>
|
|
346
|
+
#include <${parseInt(THREE.REVISION.replace(/\D+/g, '')) >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
|
|
347
|
+
}`);
|
|
347
348
|
|
|
348
349
|
const DiscardMaterial = shaderMaterial({}, 'void main() { }', 'void main() { gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); discard; }');
|
|
349
350
|
|
|
@@ -358,23 +359,37 @@ const GridMaterial = shaderMaterial({
|
|
|
358
359
|
sectionColor: new THREE.Color(),
|
|
359
360
|
infiniteGrid: false,
|
|
360
361
|
followCamera: false,
|
|
362
|
+
worldCamProjPosition: new THREE.Vector3(),
|
|
363
|
+
worldPlanePosition: new THREE.Vector3(),
|
|
361
364
|
},
|
|
362
365
|
/* glsl */ `
|
|
363
|
-
varying vec3
|
|
366
|
+
varying vec3 localPosition;
|
|
367
|
+
varying vec4 worldPosition;
|
|
368
|
+
|
|
369
|
+
uniform vec3 worldCamProjPosition;
|
|
370
|
+
uniform vec3 worldPlanePosition;
|
|
364
371
|
uniform float fadeDistance;
|
|
365
372
|
uniform bool infiniteGrid;
|
|
366
373
|
uniform bool followCamera;
|
|
367
374
|
|
|
368
375
|
void main() {
|
|
369
|
-
|
|
370
|
-
if (infiniteGrid)
|
|
371
|
-
if (followCamera) worldPosition.xz +=cameraPosition.xz;
|
|
376
|
+
localPosition = position.xzy;
|
|
377
|
+
if (infiniteGrid) localPosition *= 1.0 + fadeDistance;
|
|
372
378
|
|
|
373
|
-
|
|
379
|
+
worldPosition = modelMatrix * vec4(localPosition, 1.0);
|
|
380
|
+
if (followCamera) {
|
|
381
|
+
worldPosition.xyz += (worldCamProjPosition - worldPlanePosition);
|
|
382
|
+
localPosition = (inverse(modelMatrix) * worldPosition).xyz;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
gl_Position = projectionMatrix * viewMatrix * worldPosition;
|
|
374
386
|
}
|
|
375
387
|
`,
|
|
376
388
|
/* glsl */ `
|
|
377
|
-
varying vec3
|
|
389
|
+
varying vec3 localPosition;
|
|
390
|
+
varying vec4 worldPosition;
|
|
391
|
+
|
|
392
|
+
uniform vec3 worldCamProjPosition;
|
|
378
393
|
uniform float cellSize;
|
|
379
394
|
uniform float sectionSize;
|
|
380
395
|
uniform vec3 cellColor;
|
|
@@ -385,80 +400,82 @@ const GridMaterial = shaderMaterial({
|
|
|
385
400
|
uniform float sectionThickness;
|
|
386
401
|
|
|
387
402
|
float getGrid(float size, float thickness) {
|
|
388
|
-
vec2 r =
|
|
403
|
+
vec2 r = localPosition.xz / size;
|
|
389
404
|
vec2 grid = abs(fract(r - 0.5) - 0.5) / fwidth(r);
|
|
390
|
-
float line = min(grid.x, grid.y) + 1. - thickness;
|
|
391
|
-
return 1.0 - min(line, 1.);
|
|
405
|
+
float line = min(grid.x, grid.y) + 1.0 - thickness;
|
|
406
|
+
return 1.0 - min(line, 1.0);
|
|
392
407
|
}
|
|
393
408
|
|
|
394
409
|
void main() {
|
|
395
410
|
float g1 = getGrid(cellSize, cellThickness);
|
|
396
411
|
float g2 = getGrid(sectionSize, sectionThickness);
|
|
397
412
|
|
|
398
|
-
float
|
|
399
|
-
|
|
413
|
+
float dist = distance(worldCamProjPosition, worldPosition.xyz);
|
|
414
|
+
float d = 1.0 - min(dist / fadeDistance, 1.0);
|
|
415
|
+
vec3 color = mix(cellColor, sectionColor, min(1.0, sectionThickness * g2));
|
|
400
416
|
|
|
401
|
-
gl_FragColor = vec4(color, (g1 + g2) * pow(d,fadeStrength));
|
|
417
|
+
gl_FragColor = vec4(color, (g1 + g2) * pow(d, fadeStrength));
|
|
402
418
|
gl_FragColor.a = mix(0.75 * gl_FragColor.a, gl_FragColor.a, g2);
|
|
403
419
|
if (gl_FragColor.a <= 0.0) discard;
|
|
404
420
|
|
|
405
421
|
#include <tonemapping_fragment>
|
|
406
|
-
#include
|
|
422
|
+
#include <${parseInt(THREE.REVISION.replace(/\D+/g, '')) >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
|
|
407
423
|
}
|
|
408
424
|
`);
|
|
409
425
|
|
|
410
426
|
const NGTS_DISTORT_MATERIAL_SHADER = new InjectionToken('DistortMaterialShader');
|
|
411
|
-
function
|
|
412
|
-
return
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
427
|
+
function injectNgtsMeshDistortMaterial() {
|
|
428
|
+
return inject(NGTS_DISTORT_MATERIAL_SHADER);
|
|
429
|
+
}
|
|
430
|
+
function createMeshDistortMaterial(distortShader) {
|
|
431
|
+
return class extends THREE.MeshPhysicalMaterial {
|
|
432
|
+
constructor(parameters = {}) {
|
|
433
|
+
super(parameters);
|
|
434
|
+
this.setValues(parameters);
|
|
435
|
+
this._time = { value: 0 };
|
|
436
|
+
this._distort = { value: 0.4 };
|
|
437
|
+
this._radius = { value: 1 };
|
|
438
|
+
}
|
|
439
|
+
onBeforeCompile(shader) {
|
|
440
|
+
shader.uniforms['time'] = this._time;
|
|
441
|
+
shader.uniforms['radius'] = this._radius;
|
|
442
|
+
shader.uniforms['distort'] = this._distort;
|
|
443
|
+
shader.vertexShader = `
|
|
428
444
|
uniform float time;
|
|
429
445
|
uniform float radius;
|
|
430
446
|
uniform float distort;
|
|
431
447
|
${distortShader}
|
|
432
448
|
${shader.vertexShader}
|
|
433
449
|
`;
|
|
434
|
-
|
|
450
|
+
shader.vertexShader = shader.vertexShader.replace('#include <begin_vertex>', `
|
|
435
451
|
float updateTime = time / 50.0;
|
|
436
452
|
float noise = snoise(vec3(position / 2.0 + updateTime * 5.0));
|
|
437
453
|
vec3 transformed = vec3(position * (noise * pow(distort, 2.0) + radius));
|
|
438
454
|
`);
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
};
|
|
459
|
-
},
|
|
455
|
+
}
|
|
456
|
+
get time() {
|
|
457
|
+
return this._time.value;
|
|
458
|
+
}
|
|
459
|
+
set time(v) {
|
|
460
|
+
this._time.value = v;
|
|
461
|
+
}
|
|
462
|
+
get distort() {
|
|
463
|
+
return this._distort.value;
|
|
464
|
+
}
|
|
465
|
+
set distort(v) {
|
|
466
|
+
this._distort.value = v;
|
|
467
|
+
}
|
|
468
|
+
get radius() {
|
|
469
|
+
return this._radius.value;
|
|
470
|
+
}
|
|
471
|
+
set radius(v) {
|
|
472
|
+
this._radius.value = v;
|
|
473
|
+
}
|
|
460
474
|
};
|
|
461
475
|
}
|
|
476
|
+
function provideNgtsMeshDistortMaterialShader(distortShader) {
|
|
477
|
+
return { provide: NGTS_DISTORT_MATERIAL_SHADER, useFactory: () => createMeshDistortMaterial(distortShader) };
|
|
478
|
+
}
|
|
462
479
|
|
|
463
480
|
class MeshReflectorMaterial extends MeshStandardMaterial {
|
|
464
481
|
constructor(parameters = {}) {
|
|
@@ -845,7 +862,7 @@ const MeshRefractionMaterial = shaderMaterial({
|
|
|
845
862
|
float nFresnel = fresnelFunc(viewDirection, normal) * fresnel;
|
|
846
863
|
gl_FragColor = vec4(mix(finalColor, vec3(1.0), nFresnel), 1.0);
|
|
847
864
|
#include <tonemapping_fragment>
|
|
848
|
-
#include
|
|
865
|
+
#include <${parseInt(THREE.REVISION.replace(/\D+/g, '')) >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
|
|
849
866
|
}`);
|
|
850
867
|
|
|
851
868
|
class MeshTransmissionMaterial extends THREE.MeshPhysicalMaterial {
|
|
@@ -864,7 +881,7 @@ class MeshTransmissionMaterial extends THREE.MeshPhysicalMaterial {
|
|
|
864
881
|
thicknessMap: { value: null },
|
|
865
882
|
attenuationDistance: { value: Infinity },
|
|
866
883
|
attenuationColor: { value: new THREE.Color('white') },
|
|
867
|
-
|
|
884
|
+
anisotropicBlur: { value: 0.1 },
|
|
868
885
|
time: { value: 0 },
|
|
869
886
|
distortion: { value: 0.0 },
|
|
870
887
|
distortionScale: { value: 0.5 },
|
|
@@ -887,7 +904,7 @@ class MeshTransmissionMaterial extends THREE.MeshPhysicalMaterial {
|
|
|
887
904
|
shader.fragmentShader =
|
|
888
905
|
/*glsl*/ `
|
|
889
906
|
uniform float chromaticAberration;
|
|
890
|
-
uniform float
|
|
907
|
+
uniform float anisotropicBlur;
|
|
891
908
|
uniform float time;
|
|
892
909
|
uniform float distortion;
|
|
893
910
|
uniform float distortionScale;
|
|
@@ -1078,7 +1095,7 @@ class MeshTransmissionMaterial extends THREE.MeshPhysicalMaterial {
|
|
|
1078
1095
|
vec3 transmission = vec3(0.0);
|
|
1079
1096
|
float transmissionR, transmissionB, transmissionG;
|
|
1080
1097
|
float randomCoords = rand();
|
|
1081
|
-
float thickness_smear = thickness * max(pow(roughnessFactor, 0.33),
|
|
1098
|
+
float thickness_smear = thickness * max(pow(roughnessFactor, 0.33), anisotropicBlur);
|
|
1082
1099
|
vec3 distortionNormal = vec3(0.0);
|
|
1083
1100
|
vec3 temporalOffset = vec3(time, -time, -time) * temporalDistortion;
|
|
1084
1101
|
if (distortion > 0.0) {
|
|
@@ -1157,78 +1174,55 @@ const SoftShadowMaterial = shaderMaterial({
|
|
|
1157
1174
|
alphaTest: 0.75,
|
|
1158
1175
|
opacity: 0,
|
|
1159
1176
|
map: null,
|
|
1160
|
-
},
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
varying
|
|
1199
|
-
|
|
1200
|
-
void main() {
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
vec4 viewPosition = viewMatrix * modelPosition;
|
|
1208
|
-
vec4 projectionPostion = projectionMatrix * viewPosition;
|
|
1209
|
-
|
|
1210
|
-
gl_Position = projectionPostion;
|
|
1211
|
-
gl_PointSize = size * 25. * pixelRatio;
|
|
1212
|
-
gl_PointSize *= (1.0 / - viewPosition.z);
|
|
1213
|
-
|
|
1214
|
-
vColor = color;
|
|
1215
|
-
vOpacity = opacity;
|
|
1216
|
-
}
|
|
1217
|
-
`,
|
|
1218
|
-
// language=GLSL
|
|
1219
|
-
`
|
|
1220
|
-
varying vec3 vColor;
|
|
1221
|
-
varying float vOpacity;
|
|
1222
|
-
|
|
1223
|
-
void main() {
|
|
1224
|
-
float distanceToCenter = distance(gl_PointCoord, vec2(0.5));
|
|
1225
|
-
float strength = 0.05 / distanceToCenter - 0.1;
|
|
1226
|
-
|
|
1227
|
-
gl_FragColor = vec4(vColor, strength * vOpacity);
|
|
1228
|
-
}
|
|
1229
|
-
`);
|
|
1177
|
+
}, `varying vec2 vUv;
|
|
1178
|
+
void main() {
|
|
1179
|
+
gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position, 1.);
|
|
1180
|
+
vUv = uv;
|
|
1181
|
+
}`, `varying vec2 vUv;
|
|
1182
|
+
uniform sampler2D map;
|
|
1183
|
+
uniform vec3 color;
|
|
1184
|
+
uniform float opacity;
|
|
1185
|
+
uniform float alphaTest;
|
|
1186
|
+
uniform float blend;
|
|
1187
|
+
void main() {
|
|
1188
|
+
vec4 sampledDiffuseColor = texture2D(map, vUv);
|
|
1189
|
+
gl_FragColor = vec4(color * sampledDiffuseColor.r * blend, max(0.0, (1.0 - (sampledDiffuseColor.r + sampledDiffuseColor.g + sampledDiffuseColor.b) / alphaTest)) * opacity);
|
|
1190
|
+
#include <tonemapping_fragment>
|
|
1191
|
+
#include <${parseInt(THREE.REVISION.replace(/\D+/g, '')) >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
|
|
1192
|
+
}`);
|
|
1193
|
+
|
|
1194
|
+
const SparklesMaterial = shaderMaterial({ time: 0, pixelRatio: 1 }, ` uniform float pixelRatio;
|
|
1195
|
+
uniform float time;
|
|
1196
|
+
attribute float size;
|
|
1197
|
+
attribute float speed;
|
|
1198
|
+
attribute float opacity;
|
|
1199
|
+
attribute vec3 noise;
|
|
1200
|
+
attribute vec3 color;
|
|
1201
|
+
varying vec3 vColor;
|
|
1202
|
+
varying float vOpacity;
|
|
1203
|
+
void main() {
|
|
1204
|
+
vec4 modelPosition = modelMatrix * vec4(position, 1.0);
|
|
1205
|
+
modelPosition.y += sin(time * speed + modelPosition.x * noise.x * 100.0) * 0.2;
|
|
1206
|
+
modelPosition.z += cos(time * speed + modelPosition.x * noise.y * 100.0) * 0.2;
|
|
1207
|
+
modelPosition.x += cos(time * speed + modelPosition.x * noise.z * 100.0) * 0.2;
|
|
1208
|
+
vec4 viewPosition = viewMatrix * modelPosition;
|
|
1209
|
+
vec4 projectionPostion = projectionMatrix * viewPosition;
|
|
1210
|
+
gl_Position = projectionPostion;
|
|
1211
|
+
gl_PointSize = size * 25. * pixelRatio;
|
|
1212
|
+
gl_PointSize *= (1.0 / - viewPosition.z);
|
|
1213
|
+
vColor = color;
|
|
1214
|
+
vOpacity = opacity;
|
|
1215
|
+
}`, ` varying vec3 vColor;
|
|
1216
|
+
varying float vOpacity;
|
|
1217
|
+
void main() {
|
|
1218
|
+
float distanceToCenter = distance(gl_PointCoord, vec2(0.5));
|
|
1219
|
+
float strength = 0.05 / distanceToCenter - 0.1;
|
|
1220
|
+
gl_FragColor = vec4(vColor, strength * vOpacity);
|
|
1221
|
+
#include <tonemapping_fragment>
|
|
1222
|
+
#include <${parseInt(THREE.REVISION.replace(/\D+/g, '')) >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
|
|
1223
|
+
}`);
|
|
1230
1224
|
|
|
1231
|
-
class SpotLightMaterial extends ShaderMaterial {
|
|
1225
|
+
class SpotLightMaterial extends THREE.ShaderMaterial {
|
|
1232
1226
|
constructor() {
|
|
1233
1227
|
super({
|
|
1234
1228
|
uniforms: {
|
|
@@ -1236,11 +1230,11 @@ class SpotLightMaterial extends ShaderMaterial {
|
|
|
1236
1230
|
opacity: { value: 1 },
|
|
1237
1231
|
attenuation: { value: 2.5 },
|
|
1238
1232
|
anglePower: { value: 12 },
|
|
1239
|
-
spotPosition: { value: new Vector3(0, 0, 0) },
|
|
1240
|
-
lightColor: { value: new Color('white') },
|
|
1233
|
+
spotPosition: { value: new THREE.Vector3(0, 0, 0) },
|
|
1234
|
+
lightColor: { value: new THREE.Color('white') },
|
|
1241
1235
|
cameraNear: { value: 0 },
|
|
1242
1236
|
cameraFar: { value: 1 },
|
|
1243
|
-
resolution: { value: new Vector2(0, 0) },
|
|
1237
|
+
resolution: { value: new THREE.Vector2(0, 0) },
|
|
1244
1238
|
},
|
|
1245
1239
|
transparent: true,
|
|
1246
1240
|
depthWrite: false,
|
|
@@ -1307,7 +1301,7 @@ class SpotLightMaterial extends ShaderMaterial {
|
|
|
1307
1301
|
gl_FragColor = vec4(lightColor, intensity * opacity);
|
|
1308
1302
|
|
|
1309
1303
|
#include <tonemapping_fragment>
|
|
1310
|
-
#include
|
|
1304
|
+
#include <${parseInt(THREE.REVISION.replace(/\D+/g, '')) >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
|
|
1311
1305
|
}`,
|
|
1312
1306
|
});
|
|
1313
1307
|
}
|
|
@@ -1340,13 +1334,256 @@ void main() {
|
|
|
1340
1334
|
gl_FragColor = vec4(vColor, opacity);
|
|
1341
1335
|
|
|
1342
1336
|
#include <tonemapping_fragment>
|
|
1343
|
-
|
|
1337
|
+
#include <${parseInt(THREE.REVISION.replace(/\D+/g, '')) >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
|
|
1344
1338
|
}
|
|
1345
1339
|
`);
|
|
1346
1340
|
|
|
1341
|
+
const WireframeMaterialShaders = {
|
|
1342
|
+
uniforms: {
|
|
1343
|
+
strokeOpacity: 1,
|
|
1344
|
+
fillOpacity: 0.25,
|
|
1345
|
+
fillMix: 0,
|
|
1346
|
+
thickness: 0.05,
|
|
1347
|
+
colorBackfaces: false,
|
|
1348
|
+
dashInvert: true,
|
|
1349
|
+
dash: false,
|
|
1350
|
+
dashRepeats: 4,
|
|
1351
|
+
dashLength: 0.5,
|
|
1352
|
+
squeeze: false,
|
|
1353
|
+
squeezeMin: 0.2,
|
|
1354
|
+
squeezeMax: 1,
|
|
1355
|
+
stroke: new THREE.Color('#ff0000'),
|
|
1356
|
+
backfaceStroke: new THREE.Color('#0000ff'),
|
|
1357
|
+
fill: new THREE.Color('#00ff00'),
|
|
1358
|
+
},
|
|
1359
|
+
vertex: /* glsl */ `
|
|
1360
|
+
attribute vec3 barycentric;
|
|
1361
|
+
|
|
1362
|
+
varying vec3 v_edges_Barycentric;
|
|
1363
|
+
varying vec3 v_edges_Position;
|
|
1364
|
+
|
|
1365
|
+
void initWireframe() {
|
|
1366
|
+
v_edges_Barycentric = barycentric;
|
|
1367
|
+
v_edges_Position = position.xyz;
|
|
1368
|
+
}
|
|
1369
|
+
`,
|
|
1370
|
+
fragment: /* glsl */ `
|
|
1371
|
+
#ifndef PI
|
|
1372
|
+
#define PI 3.1415926535897932384626433832795
|
|
1373
|
+
#endif
|
|
1374
|
+
|
|
1375
|
+
varying vec3 v_edges_Barycentric;
|
|
1376
|
+
varying vec3 v_edges_Position;
|
|
1377
|
+
|
|
1378
|
+
uniform float strokeOpacity;
|
|
1379
|
+
uniform float fillOpacity;
|
|
1380
|
+
uniform float fillMix;
|
|
1381
|
+
uniform float thickness;
|
|
1382
|
+
uniform bool colorBackfaces;
|
|
1383
|
+
|
|
1384
|
+
// Dash
|
|
1385
|
+
uniform bool dashInvert;
|
|
1386
|
+
uniform bool dash;
|
|
1387
|
+
uniform bool dashOnly;
|
|
1388
|
+
uniform float dashRepeats;
|
|
1389
|
+
uniform float dashLength;
|
|
1390
|
+
|
|
1391
|
+
// Squeeze
|
|
1392
|
+
uniform bool squeeze;
|
|
1393
|
+
uniform float squeezeMin;
|
|
1394
|
+
uniform float squeezeMax;
|
|
1395
|
+
|
|
1396
|
+
// Colors
|
|
1397
|
+
uniform vec3 stroke;
|
|
1398
|
+
uniform vec3 backfaceStroke;
|
|
1399
|
+
uniform vec3 fill;
|
|
1400
|
+
|
|
1401
|
+
// This is like
|
|
1402
|
+
float wireframe_aastep(float threshold, float dist) {
|
|
1403
|
+
float afwidth = fwidth(dist) * 0.5;
|
|
1404
|
+
return smoothstep(threshold - afwidth, threshold + afwidth, dist);
|
|
1405
|
+
}
|
|
1406
|
+
|
|
1407
|
+
float wireframe_map(float value, float min1, float max1, float min2, float max2) {
|
|
1408
|
+
return min2 + (value - min1) * (max2 - min2) / (max1 - min1);
|
|
1409
|
+
}
|
|
1410
|
+
|
|
1411
|
+
float getWireframe() {
|
|
1412
|
+
vec3 barycentric = v_edges_Barycentric;
|
|
1413
|
+
|
|
1414
|
+
// Distance from center of each triangle to its edges.
|
|
1415
|
+
float d = min(min(barycentric.x, barycentric.y), barycentric.z);
|
|
1416
|
+
|
|
1417
|
+
// for dashed rendering, we can use this to get the 0 .. 1 value of the line length
|
|
1418
|
+
float positionAlong = max(barycentric.x, barycentric.y);
|
|
1419
|
+
if (barycentric.y < barycentric.x && barycentric.y < barycentric.z) {
|
|
1420
|
+
positionAlong = 1.0 - positionAlong;
|
|
1421
|
+
}
|
|
1422
|
+
|
|
1423
|
+
// the thickness of the stroke
|
|
1424
|
+
float computedThickness = wireframe_map(thickness, 0.0, 1.0, 0.0, 0.34);
|
|
1425
|
+
|
|
1426
|
+
// if we want to shrink the thickness toward the center of the line segment
|
|
1427
|
+
if (squeeze) {
|
|
1428
|
+
computedThickness *= mix(squeezeMin, squeezeMax, (1.0 - sin(positionAlong * PI)));
|
|
1429
|
+
}
|
|
1430
|
+
|
|
1431
|
+
// Create dash pattern
|
|
1432
|
+
if (dash) {
|
|
1433
|
+
// here we offset the stroke position depending on whether it
|
|
1434
|
+
// should overlap or not
|
|
1435
|
+
float offset = 1.0 / dashRepeats * dashLength / 2.0;
|
|
1436
|
+
if (!dashInvert) {
|
|
1437
|
+
offset += 1.0 / dashRepeats / 2.0;
|
|
1438
|
+
}
|
|
1439
|
+
|
|
1440
|
+
// if we should animate the dash or not
|
|
1441
|
+
// if (dashAnimate) {
|
|
1442
|
+
// offset += time * 0.22;
|
|
1443
|
+
// }
|
|
1444
|
+
|
|
1445
|
+
// create the repeating dash pattern
|
|
1446
|
+
float pattern = fract((positionAlong + offset) * dashRepeats);
|
|
1447
|
+
computedThickness *= 1.0 - wireframe_aastep(dashLength, pattern);
|
|
1448
|
+
}
|
|
1449
|
+
|
|
1450
|
+
// compute the anti-aliased stroke edge
|
|
1451
|
+
float edge = 1.0 - wireframe_aastep(computedThickness, d);
|
|
1452
|
+
|
|
1453
|
+
return edge;
|
|
1454
|
+
}
|
|
1455
|
+
`,
|
|
1456
|
+
};
|
|
1457
|
+
const WireframeMaterial = shaderMaterial(WireframeMaterialShaders.uniforms, WireframeMaterialShaders.vertex +
|
|
1458
|
+
/* glsl */ `
|
|
1459
|
+
void main() {
|
|
1460
|
+
initWireframe();
|
|
1461
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
1462
|
+
}
|
|
1463
|
+
`, WireframeMaterialShaders.fragment +
|
|
1464
|
+
/* glsl */ `
|
|
1465
|
+
void main () {
|
|
1466
|
+
// Compute color
|
|
1467
|
+
|
|
1468
|
+
float edge = getWireframe();
|
|
1469
|
+
vec4 colorStroke = vec4(stroke, edge);
|
|
1470
|
+
|
|
1471
|
+
#ifdef FLIP_SIDED
|
|
1472
|
+
colorStroke.rgb = backfaceStroke;
|
|
1473
|
+
#endif
|
|
1474
|
+
|
|
1475
|
+
vec4 colorFill = vec4(fill, fillOpacity);
|
|
1476
|
+
vec4 outColor = mix(colorFill, colorStroke, edge * strokeOpacity);
|
|
1477
|
+
|
|
1478
|
+
gl_FragColor = outColor;
|
|
1479
|
+
}
|
|
1480
|
+
`);
|
|
1481
|
+
function setWireframeOverride(material, uniforms) {
|
|
1482
|
+
material.onBeforeCompile = (shader) => {
|
|
1483
|
+
shader.uniforms = {
|
|
1484
|
+
...shader.uniforms,
|
|
1485
|
+
...uniforms,
|
|
1486
|
+
};
|
|
1487
|
+
shader.vertexShader = shader.vertexShader.replace('void main() {', `
|
|
1488
|
+
${WireframeMaterialShaders.vertex}
|
|
1489
|
+
void main() {
|
|
1490
|
+
initWireframe();
|
|
1491
|
+
`);
|
|
1492
|
+
shader.fragmentShader = shader.fragmentShader.replace('void main() {', `
|
|
1493
|
+
${WireframeMaterialShaders.fragment}
|
|
1494
|
+
void main() {
|
|
1495
|
+
`);
|
|
1496
|
+
shader.fragmentShader = shader.fragmentShader.replace('#include <color_fragment>',
|
|
1497
|
+
/* glsl */ `
|
|
1498
|
+
#include <color_fragment>
|
|
1499
|
+
float edge = getWireframe();
|
|
1500
|
+
vec4 colorStroke = vec4(stroke, edge);
|
|
1501
|
+
#ifdef FLIP_SIDED
|
|
1502
|
+
colorStroke.rgb = backfaceStroke;
|
|
1503
|
+
#endif
|
|
1504
|
+
vec4 colorFill = vec4(mix(diffuseColor.rgb, fill, fillMix), mix(diffuseColor.a, fillOpacity, fillMix));
|
|
1505
|
+
vec4 outColor = mix(colorFill, colorStroke, edge * strokeOpacity);
|
|
1506
|
+
|
|
1507
|
+
diffuseColor.rgb = outColor.rgb;
|
|
1508
|
+
diffuseColor.a *= outColor.a;
|
|
1509
|
+
`);
|
|
1510
|
+
};
|
|
1511
|
+
material.side = THREE.DoubleSide;
|
|
1512
|
+
material.transparent = true;
|
|
1513
|
+
}
|
|
1514
|
+
function injectNgtsWireframeUniforms(uniformsFactory, stateFactory, { injector } = {}) {
|
|
1515
|
+
injector = assertInjectionContext(injectNgtsWireframeUniforms, injector);
|
|
1516
|
+
return runInInjectionContext(injector, () => {
|
|
1517
|
+
const uniforms = uniformsFactory();
|
|
1518
|
+
const state = computed(() => stateFactory());
|
|
1519
|
+
const fillOpacity = computed(() => state().fillOpacity);
|
|
1520
|
+
const fillMix = computed(() => state().fillMix);
|
|
1521
|
+
const strokeOpacity = computed(() => state().strokeOpacity);
|
|
1522
|
+
const thickness = computed(() => state().thickness);
|
|
1523
|
+
const colorBackfaces = computed(() => state().colorBackfaces);
|
|
1524
|
+
const dash = computed(() => state().dash);
|
|
1525
|
+
const dashInvert = computed(() => state().dashInvert);
|
|
1526
|
+
const dashRepeats = computed(() => state().dashRepeats);
|
|
1527
|
+
const dashLength = computed(() => state().dashLength);
|
|
1528
|
+
const squeeze = computed(() => state().squeeze);
|
|
1529
|
+
const squeezeMin = computed(() => state().squeezeMin);
|
|
1530
|
+
const squeezeMax = computed(() => state().squeezeMax);
|
|
1531
|
+
const stroke = computed(() => state().stroke);
|
|
1532
|
+
const fill = computed(() => state().fill);
|
|
1533
|
+
const backfaceStroke = computed(() => state().backfaceStroke);
|
|
1534
|
+
effect(() => {
|
|
1535
|
+
uniforms['fillOpacity'].value = fillOpacity() ?? uniforms['fillOpacity'].value;
|
|
1536
|
+
});
|
|
1537
|
+
effect(() => {
|
|
1538
|
+
uniforms['fillMix'].value = fillMix() ?? uniforms['fillMix'].value;
|
|
1539
|
+
});
|
|
1540
|
+
effect(() => {
|
|
1541
|
+
uniforms['strokeOpacity'].value = strokeOpacity() ?? uniforms['strokeOpacity'].value;
|
|
1542
|
+
});
|
|
1543
|
+
effect(() => {
|
|
1544
|
+
uniforms['thickness'].value = thickness() ?? uniforms['thickness'].value;
|
|
1545
|
+
});
|
|
1546
|
+
effect(() => {
|
|
1547
|
+
uniforms['colorBackfaces'].value = colorBackfaces() ?? uniforms['colorBackfaces'].value;
|
|
1548
|
+
});
|
|
1549
|
+
effect(() => {
|
|
1550
|
+
uniforms['dash'].value = dash() ?? uniforms['dash'].value;
|
|
1551
|
+
});
|
|
1552
|
+
effect(() => {
|
|
1553
|
+
uniforms['dashInvert'].value = dashInvert() ?? uniforms['dashInvert'].value;
|
|
1554
|
+
});
|
|
1555
|
+
effect(() => {
|
|
1556
|
+
uniforms['dashRepeats'].value = dashRepeats() ?? uniforms['dashRepeats'].value;
|
|
1557
|
+
});
|
|
1558
|
+
effect(() => {
|
|
1559
|
+
uniforms['dashLength'].value = dashLength() ?? uniforms['dashLength'].value;
|
|
1560
|
+
});
|
|
1561
|
+
effect(() => {
|
|
1562
|
+
uniforms['squeeze'].value = squeeze() ?? uniforms['squeeze'].value;
|
|
1563
|
+
});
|
|
1564
|
+
effect(() => {
|
|
1565
|
+
uniforms['squeezeMin'].value = squeezeMin() ?? uniforms['squeezeMin'].value;
|
|
1566
|
+
});
|
|
1567
|
+
effect(() => {
|
|
1568
|
+
uniforms['squeezeMax'].value = squeezeMax() ?? uniforms['squeezeMax'].value;
|
|
1569
|
+
});
|
|
1570
|
+
effect(() => {
|
|
1571
|
+
uniforms['stroke'].value = stroke() ? new THREE.Color(stroke()) : uniforms['stroke'].value;
|
|
1572
|
+
});
|
|
1573
|
+
effect(() => {
|
|
1574
|
+
uniforms['fill'].value = fill() ? new THREE.Color(fill()) : uniforms['fill'].value;
|
|
1575
|
+
});
|
|
1576
|
+
effect(() => {
|
|
1577
|
+
uniforms['backfaceStroke'].value = backfaceStroke()
|
|
1578
|
+
? new THREE.Color(backfaceStroke())
|
|
1579
|
+
: uniforms['backfaceStroke'].value;
|
|
1580
|
+
});
|
|
1581
|
+
});
|
|
1582
|
+
}
|
|
1583
|
+
|
|
1347
1584
|
/**
|
|
1348
1585
|
* Generated bundle index. Do not edit.
|
|
1349
1586
|
*/
|
|
1350
1587
|
|
|
1351
|
-
export { BlurPass, CausticsMaterial, CausticsProjectionMaterial, ConvolutionMaterial, DiscardMaterial, GridMaterial, MeshReflectorMaterial, MeshRefractionMaterial, MeshTransmissionMaterial, MeshWobbleMaterial, NGTS_DISTORT_MATERIAL_SHADER, SoftShadowMaterial, SparklesMaterial, SpotLightMaterial, StarFieldMaterial, provideNgtsMeshDistortMaterialShader };
|
|
1588
|
+
export { BlurPass, CausticsMaterial, CausticsProjectionMaterial, ConvolutionMaterial, DiscardMaterial, GridMaterial, MeshReflectorMaterial, MeshRefractionMaterial, MeshTransmissionMaterial, MeshWobbleMaterial, NGTS_DISTORT_MATERIAL_SHADER, SoftShadowMaterial, SparklesMaterial, SpotLightMaterial, StarFieldMaterial, WireframeMaterial, WireframeMaterialShaders, createMeshDistortMaterial, injectNgtsMeshDistortMaterial, injectNgtsWireframeUniforms, provideNgtsMeshDistortMaterialShader, setWireframeOverride, shaderMaterial };
|
|
1352
1589
|
//# sourceMappingURL=angular-three-soba-shaders.mjs.map
|