three-stdlib 2.17.4 → 2.18.0
Sign up to get free protection for your applications and to get access to all the features.
- package/index.cjs.js +1 -1
- package/package.json +1 -1
- package/postprocessing/FilmPass.cjs.js +1 -1
- package/postprocessing/FilmPass.d.ts +1 -1
- package/postprocessing/FilmPass.js +1 -1
- package/postprocessing/WaterPass.cjs.js +1 -0
- package/postprocessing/WaterPass.d.ts +12 -0
- package/postprocessing/WaterPass.js +102 -0
package/package.json
CHANGED
@@ -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
|
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
|
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
|
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 };
|