three-stdlib 2.17.3 → 2.18.0

Sign up to get free protection for your applications and to get access to all the features.
package/index.d.ts CHANGED
@@ -14,6 +14,7 @@ export * from './renderers/CSS2DRenderer';
14
14
  export * from './renderers/CSS3DRenderer';
15
15
  export * from './renderers/Projector';
16
16
  export * from './renderers/SVGRenderer';
17
+ export * from './textures/FlakesTexture';
17
18
  export * from './modifiers/CurveModifier';
18
19
  export * from './modifiers/SimplifyModifier';
19
20
  export * from './modifiers/EdgeSplitModifier';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "three-stdlib",
3
- "version": "2.17.3",
3
+ "version": "2.18.0",
4
4
  "private": false,
5
5
  "description": "stand-alone library of threejs examples",
6
6
  "main": "index.cjs.js",
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),r=require("./Pass.cjs.js"),s=require("three"),i=require("../shaders/FilmShader.cjs.js");function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e);class n extends r.Pass{constructor(e,t,n,u){super(),a.default(this,"material",void 0),a.default(this,"fsQuad",void 0),a.default(this,"uniforms",void 0),void 0===i.FilmShader&&console.error("THREE.FilmPass relies on FilmShader");const d=i.FilmShader;this.uniforms=s.UniformsUtils.clone(d.uniforms),this.material=new s.ShaderMaterial({uniforms:this.uniforms,vertexShader:d.vertexShader,fragmentShader:d.fragmentShader}),void 0!==u&&(this.uniforms.grayscale.value=u),void 0!==e&&(this.uniforms.nIntensity.value=e),void 0!==t&&(this.uniforms.sIntensity.value=t),void 0!==n&&(this.uniforms.sCount.value=n),this.fsQuad=new r.FullScreenQuad(this.material)}render(e,r,s,i,t){this.uniforms.tDiffuse.value=s.texture,this.uniforms.time.value+=i,this.renderToScreen?(e.setRenderTarget(null),this.fsQuad.render(e)):(e.setRenderTarget(r),this.clear&&e.clear(),this.fsQuad.render(e))}}exports.FilmPass=n;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),r=require("./Pass.cjs.js"),s=require("three"),i=require("../shaders/FilmShader.cjs.js");function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e);class n extends r.Pass{constructor(e,t,n,u){super(),a.default(this,"material",void 0),a.default(this,"fsQuad",void 0),a.default(this,"uniforms",void 0),void 0===i.FilmShader&&console.error("THREE.FilmPass relies on FilmShader");const d=i.FilmShader;this.uniforms=s.UniformsUtils.clone(d.uniforms),this.material=new s.ShaderMaterial({uniforms:this.uniforms,vertexShader:d.vertexShader,fragmentShader:d.fragmentShader}),void 0!==u&&(this.uniforms.grayscale.value=u),void 0!==e&&(this.uniforms.nIntensity.value=e),void 0!==t&&(this.uniforms.sIntensity.value=t),void 0!==n&&(this.uniforms.sCount.value=n),this.fsQuad=new r.FullScreenQuad(this.material)}render(e,r,s,i){this.uniforms.tDiffuse.value=s.texture,this.uniforms.time.value+=i,this.renderToScreen?(e.setRenderTarget(null),this.fsQuad.render(e)):(e.setRenderTarget(r),this.clear&&e.clear(),this.fsQuad.render(e))}}exports.FilmPass=n;
@@ -5,6 +5,6 @@ declare class FilmPass extends Pass {
5
5
  fsQuad: FullScreenQuad;
6
6
  uniforms: any;
7
7
  constructor(noiseIntensity?: number, scanlinesIntensity?: number, scanlinesCount?: number, grayscale?: boolean);
8
- render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget, deltaTime: number, maskActive: boolean): void;
8
+ render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget, deltaTime: number): void;
9
9
  }
10
10
  export { FilmPass };
@@ -28,7 +28,7 @@ class FilmPass extends Pass {
28
28
  this.fsQuad = new FullScreenQuad(this.material);
29
29
  }
30
30
 
31
- render(renderer, writeBuffer, readBuffer, deltaTime, maskActive) {
31
+ render(renderer, writeBuffer, readBuffer, deltaTime) {
32
32
  this.uniforms['tDiffuse'].value = readBuffer.texture;
33
33
  this.uniforms['time'].value += deltaTime;
34
34
 
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),t=require("three"),r=require("./Pass.cjs.js");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=i(e);class a extends r.Pass{constructor(){super(),n.default(this,"material",void 0),n.default(this,"fsQuad",void 0),n.default(this,"factor",void 0),n.default(this,"time",void 0),n.default(this,"uniforms",void 0),this.uniforms=t.UniformsUtils.clone({tex:{value:null},time:{value:0},factor:{value:0},resolution:{value:new t.Vector2(64,64)}}),this.material=new t.ShaderMaterial({uniforms:this.uniforms,vertexShader:"\n varying vec2 vUv;\n void main(){ \n vUv = uv; \n vec4 modelViewPosition = modelViewMatrix * vec4(position, 1.0);\n gl_Position = projectionMatrix * modelViewPosition;\n }",fragmentShader:"\n uniform float time;\n uniform float factor;\n uniform vec2 resolution;\n uniform sampler2D tex;\n varying vec2 vUv;\n void main() { \n vec2 uv1 = vUv;\n vec2 uv = gl_FragCoord.xy/resolution.xy;\n float frequency = 6.0 * factor;\n float amplitude = 0.015 * factor;\n float x = uv1.y * frequency + time * .7; \n float y = uv1.x * frequency + time * .3;\n uv1.x += cos(x+y) * amplitude * cos(y);\n uv1.y += sin(x-y) * amplitude * cos(y);\n vec4 rgba = texture2D(tex, uv1);\n gl_FragColor = rgba;\n }"}),this.fsQuad=new r.FullScreenQuad(this.material),this.factor=0,this.time=0}render(e,t,r){this.uniforms.tex.value=r.texture,this.uniforms.time.value=this.time,this.uniforms.factor.value=this.factor,this.renderToScreen?(e.setRenderTarget(null),this.fsQuad.render(e)):(e.setRenderTarget(t),this.clear&&e.clear(),this.fsQuad.render(e))}}exports.WaterPass=a;
@@ -0,0 +1,12 @@
1
+ import { WebGLRenderer, WebGLRenderTarget, ShaderMaterial } from 'three';
2
+ import { Pass, FullScreenQuad } from '../postprocessing/Pass';
3
+ declare class WaterPass extends Pass {
4
+ material: ShaderMaterial;
5
+ fsQuad: FullScreenQuad;
6
+ factor: number;
7
+ time: number;
8
+ uniforms: any;
9
+ constructor();
10
+ render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget): void;
11
+ }
12
+ export { WaterPass };
@@ -0,0 +1,102 @@
1
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
+ import { UniformsUtils, Vector2, ShaderMaterial } from 'three';
3
+ import { Pass, FullScreenQuad } from './Pass.js';
4
+
5
+ /**
6
+ * Simple underwater shader
7
+ *
8
+
9
+ parameters:
10
+ tex: texture
11
+ time: this should increase with time passing
12
+ factor: to what degree will the shader distort the screen
13
+
14
+ explaination:
15
+ the shader is quite simple
16
+ it chooses a center and start from there make pixels around it to "swell" then "shrink" then "swell"...
17
+ this is of course nothing really similar to underwater scene
18
+ but you can combine several this shaders together to create the effect you need...
19
+ And yes, this shader could be used for something other than underwater effect, for example, magnifier effect :)
20
+
21
+ * @author vergil Wang
22
+ */
23
+
24
+ class WaterPass extends Pass {
25
+ constructor() {
26
+ super();
27
+
28
+ _defineProperty(this, "material", void 0);
29
+
30
+ _defineProperty(this, "fsQuad", void 0);
31
+
32
+ _defineProperty(this, "factor", void 0);
33
+
34
+ _defineProperty(this, "time", void 0);
35
+
36
+ _defineProperty(this, "uniforms", void 0);
37
+
38
+ this.uniforms = UniformsUtils.clone({
39
+ tex: {
40
+ value: null
41
+ },
42
+ time: {
43
+ value: 0.0
44
+ },
45
+ factor: {
46
+ value: 0.0
47
+ },
48
+ resolution: {
49
+ value: new Vector2(64, 64)
50
+ }
51
+ });
52
+ this.material = new ShaderMaterial({
53
+ uniforms: this.uniforms,
54
+ vertexShader: `
55
+ varying vec2 vUv;
56
+ void main(){
57
+ vUv = uv;
58
+ vec4 modelViewPosition = modelViewMatrix * vec4(position, 1.0);
59
+ gl_Position = projectionMatrix * modelViewPosition;
60
+ }`,
61
+ fragmentShader: `
62
+ uniform float time;
63
+ uniform float factor;
64
+ uniform vec2 resolution;
65
+ uniform sampler2D tex;
66
+ varying vec2 vUv;
67
+ void main() {
68
+ vec2 uv1 = vUv;
69
+ vec2 uv = gl_FragCoord.xy/resolution.xy;
70
+ float frequency = 6.0 * factor;
71
+ float amplitude = 0.015 * factor;
72
+ float x = uv1.y * frequency + time * .7;
73
+ float y = uv1.x * frequency + time * .3;
74
+ uv1.x += cos(x+y) * amplitude * cos(y);
75
+ uv1.y += sin(x-y) * amplitude * cos(y);
76
+ vec4 rgba = texture2D(tex, uv1);
77
+ gl_FragColor = rgba;
78
+ }`
79
+ });
80
+ this.fsQuad = new FullScreenQuad(this.material);
81
+ this.factor = 0;
82
+ this.time = 0;
83
+ }
84
+
85
+ render(renderer, writeBuffer, readBuffer) {
86
+ this.uniforms['tex'].value = readBuffer.texture;
87
+ this.uniforms['time'].value = this.time;
88
+ this.uniforms['factor'].value = this.factor;
89
+
90
+ if (this.renderToScreen) {
91
+ renderer.setRenderTarget(null);
92
+ this.fsQuad.render(renderer);
93
+ } else {
94
+ renderer.setRenderTarget(writeBuffer);
95
+ if (this.clear) renderer.clear();
96
+ this.fsQuad.render(renderer);
97
+ }
98
+ }
99
+
100
+ }
101
+
102
+ export { WaterPass };
@@ -0,0 +1,4 @@
1
+ declare class FlakesTexture {
2
+ constructor(width?: number, height?: number);
3
+ }
4
+ export { FlakesTexture };