three-stdlib 2.8.10 → 2.9.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/index.d.ts +2 -52
- package/index.js +53 -52
- package/lines/LineMaterial.d.ts +7 -6
- package/modifiers/CurveModifier.cjs.js +1 -1
- package/modifiers/CurveModifier.d.ts +13 -9
- package/modifiers/CurveModifier.js +27 -30
- package/objects/Lensflare.cjs.js +1 -1
- package/objects/Lensflare.js +11 -3
- package/package.json +3 -3
- package/postprocessing/AfterimagePass.d.ts +2 -30
- package/postprocessing/RenderPixelatedPass.cjs.js +1 -0
- package/postprocessing/RenderPixelatedPass.js +213 -0
- package/shaders/ACESFilmicToneMappingShader.cjs.js +1 -1
- package/shaders/ACESFilmicToneMappingShader.d.ts +9 -0
- package/shaders/ACESFilmicToneMappingShader.js +1 -1
- package/shaders/AfterimageShader.d.ts +9 -15
- package/shaders/BasicShader.cjs.js +1 -1
- package/shaders/BasicShader.d.ts +5 -5
- package/shaders/BasicShader.js +1 -1
- package/shaders/BleachBypassShader.cjs.js +1 -1
- package/shaders/BleachBypassShader.d.ts +8 -9
- package/shaders/BleachBypassShader.js +1 -1
- package/shaders/BlendShader.cjs.js +1 -1
- package/shaders/BlendShader.d.ts +13 -7
- package/shaders/BlendShader.js +1 -1
- package/shaders/BokehShader.cjs.js +1 -1
- package/shaders/BokehShader.d.ts +18 -19
- package/shaders/BokehShader.js +1 -1
- package/shaders/BokehShader2.cjs.js +1 -1
- package/shaders/BokehShader2.d.ts +80 -34
- package/shaders/BokehShader2.js +2 -2
- package/shaders/BrightnessContrastShader.cjs.js +1 -1
- package/shaders/BrightnessContrastShader.d.ts +10 -6
- package/shaders/BrightnessContrastShader.js +1 -1
- package/shaders/ColorCorrectionShader.cjs.js +1 -1
- package/shaders/ColorCorrectionShader.d.ts +14 -7
- package/shaders/ColorCorrectionShader.js +1 -1
- package/shaders/ColorifyShader.cjs.js +1 -1
- package/shaders/ColorifyShader.d.ts +8 -5
- package/shaders/ColorifyShader.js +1 -1
- package/shaders/ConvolutionShader.cjs.js +1 -1
- package/shaders/ConvolutionShader.d.ts +15 -16
- package/shaders/ConvolutionShader.js +9 -14
- package/shaders/CopyShader.d.ts +8 -12
- package/shaders/DOFMipMapShader.cjs.js +1 -1
- package/shaders/DOFMipMapShader.d.ts +13 -7
- package/shaders/DOFMipMapShader.js +1 -1
- package/shaders/DepthLimitedBlurShader.cjs.js +1 -1
- package/shaders/DepthLimitedBlurShader.d.ts +26 -25
- package/shaders/DepthLimitedBlurShader.js +12 -16
- package/shaders/DigitalGlitch.cjs.js +1 -1
- package/shaders/DigitalGlitch.d.ts +34 -14
- package/shaders/DigitalGlitch.js +1 -10
- package/shaders/DotScreenShader.cjs.js +1 -1
- package/shaders/DotScreenShader.d.ts +17 -8
- package/shaders/DotScreenShader.js +1 -1
- package/shaders/FXAAShader.cjs.js +1 -1
- package/shaders/FXAAShader.d.ts +8 -5
- package/shaders/FXAAShader.js +1 -1
- package/shaders/FilmShader.cjs.js +1 -1
- package/shaders/FilmShader.d.ts +19 -9
- package/shaders/FilmShader.js +1 -1
- package/shaders/FocusShader.cjs.js +1 -1
- package/shaders/FocusShader.d.ts +16 -8
- package/shaders/FocusShader.js +1 -1
- package/shaders/FreiChenShader.cjs.js +1 -1
- package/shaders/FreiChenShader.d.ts +8 -5
- package/shaders/FreiChenShader.js +1 -1
- package/shaders/FresnelShader.cjs.js +1 -1
- package/shaders/FresnelShader.d.ts +21 -0
- package/shaders/FresnelShader.js +1 -1
- package/shaders/GammaCorrectionShader.d.ts +7 -7
- package/shaders/GodRaysShader.cjs.js +1 -1
- package/shaders/GodRaysShader.d.ts +38 -20
- package/shaders/GodRaysShader.js +4 -4
- package/shaders/HalftoneShader.cjs.js +1 -1
- package/shaders/HalftoneShader.d.ts +40 -16
- package/shaders/HalftoneShader.js +1 -1
- package/shaders/HorizontalBlurShader.d.ts +8 -8
- package/shaders/HorizontalTiltShiftShader.cjs.js +1 -1
- package/shaders/HorizontalTiltShiftShader.d.ts +10 -6
- package/shaders/HorizontalTiltShiftShader.js +1 -1
- package/shaders/HueSaturationShader.cjs.js +1 -1
- package/shaders/HueSaturationShader.d.ts +10 -6
- package/shaders/HueSaturationShader.js +1 -1
- package/shaders/KaleidoShader.cjs.js +1 -1
- package/shaders/KaleidoShader.d.ts +10 -6
- package/shaders/KaleidoShader.js +1 -1
- package/shaders/LuminosityHighPassShader.cjs.js +1 -1
- package/shaders/LuminosityHighPassShader.d.ts +17 -8
- package/shaders/LuminosityHighPassShader.js +1 -1
- package/shaders/LuminosityShader.cjs.js +1 -1
- package/shaders/LuminosityShader.d.ts +4 -4
- package/shaders/LuminosityShader.js +1 -1
- package/shaders/MirrorShader.cjs.js +1 -1
- package/shaders/MirrorShader.d.ts +7 -5
- package/shaders/MirrorShader.js +1 -1
- package/shaders/NormalMapShader.cjs.js +1 -1
- package/shaders/NormalMapShader.d.ts +14 -7
- package/shaders/NormalMapShader.js +1 -1
- package/shaders/ParallaxShader.cjs.js +1 -1
- package/shaders/ParallaxShader.d.ts +28 -0
- package/shaders/ParallaxShader.js +1 -1
- package/shaders/PixelShader.cjs.js +1 -1
- package/shaders/PixelShader.d.ts +10 -6
- package/shaders/PixelShader.js +1 -1
- package/shaders/RGBShiftShader.cjs.js +1 -1
- package/shaders/RGBShiftShader.d.ts +10 -6
- package/shaders/RGBShiftShader.js +1 -1
- package/shaders/SAOShader.cjs.js +1 -1
- package/shaders/SAOShader.d.ts +24 -29
- package/shaders/SAOShader.js +1 -5
- package/shaders/SMAAShader.cjs.js +1 -1
- package/shaders/SMAAShader.d.ts +31 -16
- package/shaders/SMAAShader.js +3 -3
- package/shaders/SSAOShader.cjs.js +1 -1
- package/shaders/SSAOShader.d.ts +58 -25
- package/shaders/SSAOShader.js +3 -3
- package/shaders/SSRShader.cjs.js +1 -1
- package/shaders/SSRShader.d.ts +67 -36
- package/shaders/SSRShader.js +3 -3
- package/shaders/SepiaShader.cjs.js +1 -1
- package/shaders/SepiaShader.d.ts +7 -5
- package/shaders/SepiaShader.js +1 -1
- package/shaders/SobelOperatorShader.cjs.js +1 -1
- package/shaders/SobelOperatorShader.d.ts +8 -5
- package/shaders/SobelOperatorShader.js +1 -1
- package/shaders/SubsurfaceScatteringShader.cjs.js +1 -1
- package/shaders/SubsurfaceScatteringShader.d.ts +2 -34
- package/shaders/SubsurfaceScatteringShader.js +3 -3
- package/shaders/TechnicolorShader.cjs.js +1 -1
- package/shaders/TechnicolorShader.d.ts +4 -4
- package/shaders/TechnicolorShader.js +1 -1
- package/shaders/ToneMapShader.cjs.js +1 -1
- package/shaders/ToneMapShader.d.ts +19 -9
- package/shaders/ToneMapShader.js +1 -1
- package/shaders/ToonShader.cjs.js +1 -1
- package/shaders/ToonShader.d.ts +80 -34
- package/shaders/ToonShader.js +4 -4
- package/shaders/TriangleBlurShader.cjs.js +1 -1
- package/shaders/TriangleBlurShader.d.ts +8 -5
- package/shaders/TriangleBlurShader.js +1 -1
- package/shaders/UnpackDepthRGBAShader.cjs.js +1 -1
- package/shaders/UnpackDepthRGBAShader.d.ts +7 -5
- package/shaders/UnpackDepthRGBAShader.js +1 -1
- package/shaders/VerticalBlurShader.cjs.js +1 -1
- package/shaders/VerticalBlurShader.d.ts +8 -8
- package/shaders/VerticalBlurShader.js +1 -1
- package/shaders/VerticalTiltShiftShader.cjs.js +1 -1
- package/shaders/VerticalTiltShiftShader.d.ts +10 -6
- package/shaders/VerticalTiltShiftShader.js +1 -1
- package/shaders/VignetteShader.cjs.js +1 -1
- package/shaders/VignetteShader.d.ts +10 -6
- package/shaders/VignetteShader.js +1 -1
- package/shaders/VolumeShader.cjs.js +1 -1
- package/shaders/VolumeShader.d.ts +20 -9
- package/shaders/VolumeShader.js +1 -1
- package/shaders/WaterRefractionShader.cjs.js +1 -1
- package/shaders/WaterRefractionShader.d.ts +16 -8
- package/shaders/WaterRefractionShader.js +1 -1
- package/shaders/index.cjs.js +1 -0
- package/shaders/index.d.ts +53 -0
- package/shaders/index.js +53 -0
- package/shaders/types.cjs.js +1 -0
- package/shaders/types.d.ts +14 -0
- package/shaders/types.js +1 -0
- package/types/shared.d.ts +0 -20
@@ -0,0 +1,213 @@
|
|
1
|
+
import { Vector2, MeshNormalMaterial, ShaderMaterial, Vector4, WebGLRenderTarget, DepthTexture, NearestFilter, RGBAFormat, RGBFormat } from 'three';
|
2
|
+
import { Pass, FullScreenQuad } from './Pass.js';
|
3
|
+
|
4
|
+
class RenderPixelatedPass extends Pass {
|
5
|
+
constructor(resolution, pixelSize, scene, camera, options = {}) {
|
6
|
+
var _options$normalEdgeSt, _options$depthEdgeStr;
|
7
|
+
|
8
|
+
super();
|
9
|
+
this.pixelSize = pixelSize;
|
10
|
+
this.resolution = new Vector2();
|
11
|
+
this.renderResolution = new Vector2();
|
12
|
+
this.setSize(resolution.x, resolution.y);
|
13
|
+
this.fsQuad = new FullScreenQuad(this.material());
|
14
|
+
this.scene = scene;
|
15
|
+
this.camera = camera;
|
16
|
+
this.normalEdgeStrength = (_options$normalEdgeSt = options.normalEdgeStrength) != null ? _options$normalEdgeSt : 0.3;
|
17
|
+
this.depthEdgeStrength = (_options$depthEdgeStr = options.depthEdgeStrength) != null ? _options$depthEdgeStr : 0.4;
|
18
|
+
this.rgbRenderTarget = pixelRenderTarget(this.renderResolution, RGBAFormat, true);
|
19
|
+
this.normalRenderTarget = pixelRenderTarget(this.renderResolution, RGBFormat, false);
|
20
|
+
this.normalMaterial = new MeshNormalMaterial();
|
21
|
+
}
|
22
|
+
|
23
|
+
dispose() {
|
24
|
+
this.rgbRenderTarget.dispose();
|
25
|
+
this.normalRenderTarget.dispose();
|
26
|
+
this.fsQuad.dispose();
|
27
|
+
}
|
28
|
+
|
29
|
+
setSize(width, height) {
|
30
|
+
var _this$rgbRenderTarget, _this$normalRenderTar, _this$fsQuad;
|
31
|
+
|
32
|
+
this.resolution.set(width, height);
|
33
|
+
this.renderResolution.set(width / this.pixelSize | 0, height / this.pixelSize | 0);
|
34
|
+
const {
|
35
|
+
x,
|
36
|
+
y
|
37
|
+
} = this.renderResolution;
|
38
|
+
(_this$rgbRenderTarget = this.rgbRenderTarget) === null || _this$rgbRenderTarget === void 0 ? void 0 : _this$rgbRenderTarget.setSize(x, y);
|
39
|
+
(_this$normalRenderTar = this.normalRenderTarget) === null || _this$normalRenderTar === void 0 ? void 0 : _this$normalRenderTar.setSize(x, y);
|
40
|
+
(_this$fsQuad = this.fsQuad) === null || _this$fsQuad === void 0 ? void 0 : _this$fsQuad.material.uniforms.resolution.value.set(x, y, 1 / x, 1 / y);
|
41
|
+
}
|
42
|
+
|
43
|
+
setPixelSize(pixelSize) {
|
44
|
+
this.pixelSize = pixelSize;
|
45
|
+
this.setSize(this.resolution.x, this.resolution.y);
|
46
|
+
}
|
47
|
+
|
48
|
+
render(renderer, writeBuffer) {
|
49
|
+
const uniforms = this.fsQuad.material.uniforms;
|
50
|
+
uniforms.normalEdgeStrength.value = this.normalEdgeStrength;
|
51
|
+
uniforms.depthEdgeStrength.value = this.depthEdgeStrength;
|
52
|
+
renderer.setRenderTarget(this.rgbRenderTarget);
|
53
|
+
renderer.render(this.scene, this.camera);
|
54
|
+
const overrideMaterial_old = this.scene.overrideMaterial;
|
55
|
+
renderer.setRenderTarget(this.normalRenderTarget);
|
56
|
+
this.scene.overrideMaterial = this.normalMaterial;
|
57
|
+
renderer.render(this.scene, this.camera);
|
58
|
+
this.scene.overrideMaterial = overrideMaterial_old;
|
59
|
+
uniforms.tDiffuse.value = this.rgbRenderTarget.texture;
|
60
|
+
uniforms.tDepth.value = this.rgbRenderTarget.depthTexture;
|
61
|
+
uniforms.tNormal.value = this.normalRenderTarget.texture;
|
62
|
+
|
63
|
+
if (this.renderToScreen) {
|
64
|
+
renderer.setRenderTarget(null);
|
65
|
+
} else {
|
66
|
+
renderer.setRenderTarget(writeBuffer);
|
67
|
+
if (this.clear) renderer.clear();
|
68
|
+
}
|
69
|
+
|
70
|
+
this.fsQuad.render(renderer);
|
71
|
+
}
|
72
|
+
|
73
|
+
material() {
|
74
|
+
return new ShaderMaterial({
|
75
|
+
uniforms: {
|
76
|
+
tDiffuse: {
|
77
|
+
value: null
|
78
|
+
},
|
79
|
+
tDepth: {
|
80
|
+
value: null
|
81
|
+
},
|
82
|
+
tNormal: {
|
83
|
+
value: null
|
84
|
+
},
|
85
|
+
resolution: {
|
86
|
+
value: new Vector4(this.renderResolution.x, this.renderResolution.y, 1 / this.renderResolution.x, 1 / this.renderResolution.y)
|
87
|
+
},
|
88
|
+
normalEdgeStrength: {
|
89
|
+
value: 0
|
90
|
+
},
|
91
|
+
depthEdgeStrength: {
|
92
|
+
value: 0
|
93
|
+
}
|
94
|
+
},
|
95
|
+
vertexShader: `
|
96
|
+
varying vec2 vUv;
|
97
|
+
|
98
|
+
void main() {
|
99
|
+
|
100
|
+
vUv = uv;
|
101
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
102
|
+
|
103
|
+
}
|
104
|
+
`,
|
105
|
+
fragmentShader: `
|
106
|
+
uniform sampler2D tDiffuse;
|
107
|
+
uniform sampler2D tDepth;
|
108
|
+
uniform sampler2D tNormal;
|
109
|
+
uniform vec4 resolution;
|
110
|
+
uniform float normalEdgeStrength;
|
111
|
+
uniform float depthEdgeStrength;
|
112
|
+
varying vec2 vUv;
|
113
|
+
|
114
|
+
float getDepth(int x, int y) {
|
115
|
+
|
116
|
+
return texture2D( tDepth, vUv + vec2(x, y) * resolution.zw ).r;
|
117
|
+
|
118
|
+
}
|
119
|
+
|
120
|
+
vec3 getNormal(int x, int y) {
|
121
|
+
|
122
|
+
return texture2D( tNormal, vUv + vec2(x, y) * resolution.zw ).rgb * 2.0 - 1.0;
|
123
|
+
|
124
|
+
}
|
125
|
+
|
126
|
+
float depthEdgeIndicator(float depth, vec3 normal) {
|
127
|
+
|
128
|
+
float diff = 0.0;
|
129
|
+
diff += clamp(getDepth(1, 0) - depth, 0.0, 1.0);
|
130
|
+
diff += clamp(getDepth(-1, 0) - depth, 0.0, 1.0);
|
131
|
+
diff += clamp(getDepth(0, 1) - depth, 0.0, 1.0);
|
132
|
+
diff += clamp(getDepth(0, -1) - depth, 0.0, 1.0);
|
133
|
+
return floor(smoothstep(0.01, 0.02, diff) * 2.) / 2.;
|
134
|
+
|
135
|
+
}
|
136
|
+
|
137
|
+
float neighborNormalEdgeIndicator(int x, int y, float depth, vec3 normal) {
|
138
|
+
|
139
|
+
float depthDiff = getDepth(x, y) - depth;
|
140
|
+
vec3 neighborNormal = getNormal(x, y);
|
141
|
+
|
142
|
+
// Edge pixels should yield to faces who's normals are closer to the bias normal.
|
143
|
+
vec3 normalEdgeBias = vec3(1., 1., 1.); // This should probably be a parameter.
|
144
|
+
float normalDiff = dot(normal - neighborNormal, normalEdgeBias);
|
145
|
+
float normalIndicator = clamp(smoothstep(-.01, .01, normalDiff), 0.0, 1.0);
|
146
|
+
|
147
|
+
// Only the shallower pixel should detect the normal edge.
|
148
|
+
float depthIndicator = clamp(sign(depthDiff * .25 + .0025), 0.0, 1.0);
|
149
|
+
|
150
|
+
return (1.0 - dot(normal, neighborNormal)) * depthIndicator * normalIndicator;
|
151
|
+
|
152
|
+
}
|
153
|
+
|
154
|
+
float normalEdgeIndicator(float depth, vec3 normal) {
|
155
|
+
|
156
|
+
float indicator = 0.0;
|
157
|
+
|
158
|
+
indicator += neighborNormalEdgeIndicator(0, -1, depth, normal);
|
159
|
+
indicator += neighborNormalEdgeIndicator(0, 1, depth, normal);
|
160
|
+
indicator += neighborNormalEdgeIndicator(-1, 0, depth, normal);
|
161
|
+
indicator += neighborNormalEdgeIndicator(1, 0, depth, normal);
|
162
|
+
|
163
|
+
return step(0.1, indicator);
|
164
|
+
|
165
|
+
}
|
166
|
+
|
167
|
+
void main() {
|
168
|
+
|
169
|
+
vec4 texel = texture2D( tDiffuse, vUv );
|
170
|
+
|
171
|
+
float depth = 0.0;
|
172
|
+
vec3 normal = vec3(0.0);
|
173
|
+
|
174
|
+
if (depthEdgeStrength > 0.0 || normalEdgeStrength > 0.0) {
|
175
|
+
|
176
|
+
depth = getDepth(0, 0);
|
177
|
+
normal = getNormal(0, 0);
|
178
|
+
|
179
|
+
}
|
180
|
+
|
181
|
+
float dei = 0.0;
|
182
|
+
if (depthEdgeStrength > 0.0)
|
183
|
+
dei = depthEdgeIndicator(depth, normal);
|
184
|
+
|
185
|
+
float nei = 0.0;
|
186
|
+
if (normalEdgeStrength > 0.0)
|
187
|
+
nei = normalEdgeIndicator(depth, normal);
|
188
|
+
|
189
|
+
float Strength = dei > 0.0 ? (1.0 - depthEdgeStrength * dei) : (1.0 + normalEdgeStrength * nei);
|
190
|
+
|
191
|
+
gl_FragColor = texel * Strength;
|
192
|
+
|
193
|
+
}
|
194
|
+
`
|
195
|
+
});
|
196
|
+
}
|
197
|
+
|
198
|
+
}
|
199
|
+
|
200
|
+
function pixelRenderTarget(resolution, pixelFormat, useDepthTexture) {
|
201
|
+
const renderTarget = new WebGLRenderTarget(resolution.x, resolution.y, !useDepthTexture ? undefined : {
|
202
|
+
depthTexture: new DepthTexture(resolution.x, resolution.y),
|
203
|
+
depthBuffer: true
|
204
|
+
});
|
205
|
+
renderTarget.texture.format = pixelFormat;
|
206
|
+
renderTarget.texture.minFilter = NearestFilter;
|
207
|
+
renderTarget.texture.magFilter = NearestFilter;
|
208
|
+
renderTarget.texture.generateMipmaps = false;
|
209
|
+
renderTarget.stencilBuffer = false;
|
210
|
+
return renderTarget;
|
211
|
+
}
|
212
|
+
|
213
|
+
export { RenderPixelatedPass };
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const t={uniforms:{tDiffuse:{value:null},exposure:{value:1}},vertexShader:["varying vec2 vUv;","void main() {","\tvUv = uv;","\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );","}"].join("\n"),fragmentShader:["#define saturate(a) clamp( a, 0.0, 1.0 )","uniform sampler2D tDiffuse;","uniform float exposure;","varying vec2 vUv;","vec3 RRTAndODTFit( vec3 v ) {","\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;","\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;","\treturn a / b;","}","vec3 ACESFilmicToneMapping( vec3 color ) {","\tconst mat3 ACESInputMat = mat3(","\t\tvec3( 0.59719, 0.07600, 0.02840 ),","\t\tvec3( 0.35458, 0.90834, 0.13383 ),","\t\tvec3( 0.04823, 0.01566, 0.83777 )","\t);","\tconst mat3 ACESOutputMat = mat3(","\t\tvec3( 1.60475, -0.10208, -0.00327 ),","\t\tvec3( -0.53108, 1.10813, -0.07276 ),","\t\tvec3( -0.07367, -0.00605, 1.07602 )","\t);","\tcolor = ACESInputMat * color;","\tcolor = RRTAndODTFit( color );","\tcolor = ACESOutputMat * color;","\treturn saturate( color );","}","void main() {","\tvec4 tex = texture2D( tDiffuse, vUv );","\ttex.rgb *= exposure / 0.6;","\tgl_FragColor = vec4( ACESFilmicToneMapping( tex.rgb ), tex.a );","}"].join("\n")};exports.ACESFilmicToneMappingShader=t;
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import type { IUniform, Texture } from 'three';
|
2
|
+
import type { IShader } from './types';
|
3
|
+
export declare type ACESFilmicToneMappingShaderUniforms = {
|
4
|
+
exposure: IUniform<number>;
|
5
|
+
tDiffuse: IUniform<Texture | null>;
|
6
|
+
};
|
7
|
+
export interface IACESFilmicToneMappingShader extends IShader<ACESFilmicToneMappingShaderUniforms> {
|
8
|
+
}
|
9
|
+
export declare const ACESFilmicToneMappingShader: IACESFilmicToneMappingShader;
|
@@ -5,7 +5,7 @@
|
|
5
5
|
* this implementation of ACES is modified to accommodate a brighter viewing environment.
|
6
6
|
* the scale factor of 1/0.6 is subjective. see discussion in #19621.
|
7
7
|
*/
|
8
|
-
|
8
|
+
const ACESFilmicToneMappingShader = {
|
9
9
|
uniforms: {
|
10
10
|
tDiffuse: {
|
11
11
|
value: null
|
@@ -1,16 +1,10 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
value: null;
|
8
|
-
};
|
9
|
-
tNew: {
|
10
|
-
value: null;
|
11
|
-
};
|
12
|
-
};
|
13
|
-
vertexShader: string;
|
14
|
-
fragmentShader: string;
|
1
|
+
import type { IUniform, Texture } from 'three';
|
2
|
+
import type { IShader } from './types';
|
3
|
+
export declare type AfterimageShaderUniforms = {
|
4
|
+
damp: IUniform<number>;
|
5
|
+
tNew: IUniform<Texture | null>;
|
6
|
+
tOld: IUniform<Texture | null>;
|
15
7
|
};
|
16
|
-
export
|
8
|
+
export interface IAfterimageShader extends IShader<AfterimageShaderUniforms> {
|
9
|
+
}
|
10
|
+
export declare const AfterimageShader: IAfterimageShader;
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const e={uniforms:{},vertexShader:["void main() {","\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );","}"].join("\n"),fragmentShader:["void main() {","\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 0.5 );","}"].join("\n")};exports.BasicShader=e;
|
package/shaders/BasicShader.d.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
import type { IShader } from './types';
|
2
|
+
export declare type BasicShaderUniforms = {};
|
3
|
+
export interface IBasicShader extends IShader<BasicShaderUniforms> {
|
4
|
+
}
|
5
|
+
export declare const BasicShader: IBasicShader;
|
package/shaders/BasicShader.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
/**
|
2
2
|
* Simple test shader
|
3
3
|
*/
|
4
|
-
|
4
|
+
const BasicShader = {
|
5
5
|
uniforms: {},
|
6
6
|
vertexShader: ['void main() {', ' gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );', '}'].join('\n'),
|
7
7
|
fragmentShader: ['void main() {', ' gl_FragColor = vec4( 1.0, 0.0, 0.0, 0.5 );', '}'].join('\n')
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const e={uniforms:{tDiffuse:{value:null},opacity:{value:1}},vertexShader:["varying vec2 vUv;","void main() {","\tvUv = uv;","\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );","}"].join("\n"),fragmentShader:["uniform float opacity;","uniform sampler2D tDiffuse;","varying vec2 vUv;","void main() {","\tvec4 base = texture2D( tDiffuse, vUv );","\tvec3 lumCoeff = vec3( 0.25, 0.65, 0.1 );","\tfloat lum = dot( lumCoeff, base.rgb );","\tvec3 blend = vec3( lum );","\tfloat L = min( 1.0, max( 0.0, 10.0 * ( lum - 0.45 ) ) );","\tvec3 result1 = 2.0 * base.rgb * blend;","\tvec3 result2 = 1.0 - 2.0 * ( 1.0 - blend ) * ( 1.0 - base.rgb );","\tvec3 newColor = mix( result1, result2, L );","\tfloat A2 = opacity * base.a;","\tvec3 mixRGB = A2 * newColor.rgb;","\tmixRGB += ( ( 1.0 - A2 ) * base.rgb );","\tgl_FragColor = vec4( mixRGB, base.a );","}"].join("\n")};exports.BleachBypassShader=e;
|
@@ -1,10 +1,9 @@
|
|
1
|
-
import {
|
2
|
-
|
3
|
-
export
|
4
|
-
|
5
|
-
|
6
|
-
opacity: Uniform;
|
7
|
-
};
|
8
|
-
vertexShader: string;
|
9
|
-
fragmentShader: string;
|
1
|
+
import type { IUniform, Texture } from 'three';
|
2
|
+
import type { IShader } from './types';
|
3
|
+
export declare type BleachBypassShaderUniforms = {
|
4
|
+
opacity: IUniform<number>;
|
5
|
+
tDiffuse: IUniform<Texture | null>;
|
10
6
|
};
|
7
|
+
export interface IBleachBypassShader extends IShader<BleachBypassShaderUniforms> {
|
8
|
+
}
|
9
|
+
export declare const BleachBypassShader: IBleachBypassShader;
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const e={uniforms:{tDiffuse1:{value:null},tDiffuse2:{value:null},mixRatio:{value:.5},opacity:{value:1}},vertexShader:["varying vec2 vUv;","void main() {","\tvUv = uv;","\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );","}"].join("\n"),fragmentShader:["uniform float opacity;","uniform float mixRatio;","uniform sampler2D tDiffuse1;","uniform sampler2D tDiffuse2;","varying vec2 vUv;","void main() {","\tvec4 texel1 = texture2D( tDiffuse1, vUv );","\tvec4 texel2 = texture2D( tDiffuse2, vUv );","\tgl_FragColor = opacity * mix( texel1, texel2, mixRatio );","}"].join("\n")};exports.BlendShader=e;
|
package/shaders/BlendShader.d.ts
CHANGED
@@ -1,11 +1,17 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
export const BlendShader: {
|
1
|
+
export declare const BlendShader: {
|
4
2
|
uniforms: {
|
5
|
-
tDiffuse1:
|
6
|
-
|
7
|
-
|
8
|
-
|
3
|
+
tDiffuse1: {
|
4
|
+
value: null;
|
5
|
+
};
|
6
|
+
tDiffuse2: {
|
7
|
+
value: null;
|
8
|
+
};
|
9
|
+
mixRatio: {
|
10
|
+
value: number;
|
11
|
+
};
|
12
|
+
opacity: {
|
13
|
+
value: number;
|
14
|
+
};
|
9
15
|
};
|
10
16
|
vertexShader: string;
|
11
17
|
fragmentShader: string;
|
package/shaders/BlendShader.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const t={defines:{DEPTH_PACKING:1,PERSPECTIVE_CAMERA:1},uniforms:{tColor:{value:null},tDepth:{value:null},focus:{value:1},aspect:{value:1},aperture:{value:.025},maxblur:{value:.01},nearClip:{value:1},farClip:{value:1e3}},vertexShader:["varying vec2 vUv;","void main() {","\tvUv = uv;","\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );","}"].join("\n"),fragmentShader:["#include <common>","varying vec2 vUv;","uniform sampler2D tColor;","uniform sampler2D tDepth;","uniform float maxblur;","uniform float aperture;","uniform float nearClip;","uniform float farClip;","uniform float focus;","uniform float aspect;","#include <packing>","float getDepth( const in vec2 screenPosition ) {","\t#if DEPTH_PACKING == 1","\treturn unpackRGBAToDepth( texture2D( tDepth, screenPosition ) );","\t#else","\treturn texture2D( tDepth, screenPosition ).x;","\t#endif","}","float getViewZ( const in float depth ) {","\t#if PERSPECTIVE_CAMERA == 1","\treturn perspectiveDepthToViewZ( depth, nearClip, farClip );","\t#else","\treturn orthographicDepthToViewZ( depth, nearClip, farClip );","\t#endif","}","void main() {","\tvec2 aspectcorrect = vec2( 1.0, aspect );","\tfloat viewZ = getViewZ( getDepth( vUv ) );","\tfloat factor = ( focus + viewZ );","\tvec2 dofblur = vec2 ( clamp( factor * aperture, -maxblur, maxblur ) );","\tvec2 dofblur9 = dofblur * 0.9;","\tvec2 dofblur7 = dofblur * 0.7;","\tvec2 dofblur4 = dofblur * 0.4;","\tvec4 col = vec4( 0.0 );","\tcol += texture2D( tColor, vUv.xy );","\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.0, 0.4 ) * aspectcorrect ) * dofblur );","\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.15, 0.37 ) * aspectcorrect ) * dofblur );","\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.29, 0.29 ) * aspectcorrect ) * dofblur );","\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.37, 0.15 ) * aspectcorrect ) * dofblur );","\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.40, 0.0 ) * aspectcorrect ) * dofblur );","\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.37, -0.15 ) * aspectcorrect ) * dofblur );","\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.29, -0.29 ) * aspectcorrect ) * dofblur );","\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.15, -0.37 ) * aspectcorrect ) * dofblur );","\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.0, -0.4 ) * aspectcorrect ) * dofblur );","\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.15, 0.37 ) * aspectcorrect ) * dofblur );","\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.29, 0.29 ) * aspectcorrect ) * dofblur );","\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.37, 0.15 ) * aspectcorrect ) * dofblur );","\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.4, 0.0 ) * aspectcorrect ) * dofblur );","\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.37, -0.15 ) * aspectcorrect ) * dofblur );","\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.29, -0.29 ) * aspectcorrect ) * dofblur );","\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.15, -0.37 ) * aspectcorrect ) * dofblur );","\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.15, 0.37 ) * aspectcorrect ) * dofblur9 );","\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.37, 0.15 ) * aspectcorrect ) * dofblur9 );","\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.37, -0.15 ) * aspectcorrect ) * dofblur9 );","\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.15, -0.37 ) * aspectcorrect ) * dofblur9 );","\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.15, 0.37 ) * aspectcorrect ) * dofblur9 );","\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.37, 0.15 ) * aspectcorrect ) * dofblur9 );","\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.37, -0.15 ) * aspectcorrect ) * dofblur9 );","\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.15, -0.37 ) * aspectcorrect ) * dofblur9 );","\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.29, 0.29 ) * aspectcorrect ) * dofblur7 );","\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.40, 0.0 ) * aspectcorrect ) * dofblur7 );","\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.29, -0.29 ) * aspectcorrect ) * dofblur7 );","\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.0, -0.4 ) * aspectcorrect ) * dofblur7 );","\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.29, 0.29 ) * aspectcorrect ) * dofblur7 );","\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.4, 0.0 ) * aspectcorrect ) * dofblur7 );","\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.29, -0.29 ) * aspectcorrect ) * dofblur7 );","\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.0, 0.4 ) * aspectcorrect ) * dofblur7 );","\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.29, 0.29 ) * aspectcorrect ) * dofblur4 );","\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.4, 0.0 ) * aspectcorrect ) * dofblur4 );","\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.29, -0.29 ) * aspectcorrect ) * dofblur4 );","\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.0, -0.4 ) * aspectcorrect ) * dofblur4 );","\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.29, 0.29 ) * aspectcorrect ) * dofblur4 );","\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.4, 0.0 ) * aspectcorrect ) * dofblur4 );","\tcol += texture2D( tColor, vUv.xy + ( vec2( -0.29, -0.29 ) * aspectcorrect ) * dofblur4 );","\tcol += texture2D( tColor, vUv.xy + ( vec2( 0.0, 0.4 ) * aspectcorrect ) * dofblur4 );","\tgl_FragColor = col / 41.0;","\tgl_FragColor.a = 1.0;","}"].join("\n")};exports.BokehShader=t;
|
package/shaders/BokehShader.d.ts
CHANGED
@@ -1,20 +1,19 @@
|
|
1
|
-
import {
|
2
|
-
|
3
|
-
export
|
4
|
-
|
5
|
-
|
6
|
-
PERSPECTIVE_CAMERA: number;
|
7
|
-
};
|
8
|
-
uniforms: {
|
9
|
-
tColor: Uniform;
|
10
|
-
tDepth: Uniform;
|
11
|
-
focus: Uniform;
|
12
|
-
aspect: Uniform;
|
13
|
-
aperture: Uniform;
|
14
|
-
maxblur: Uniform;
|
15
|
-
nearClip: Uniform;
|
16
|
-
farClip: Uniform;
|
17
|
-
};
|
18
|
-
vertexShader: string;
|
19
|
-
fragmentShader: string;
|
1
|
+
import type { IUniform, Texture } from 'three';
|
2
|
+
import type { IShader } from './types';
|
3
|
+
export declare type BokehShaderDefines = {
|
4
|
+
DEPTH_PACKING: number;
|
5
|
+
PERSPECTIVE_CAMERA: number;
|
20
6
|
};
|
7
|
+
export declare type BokehShaderUniforms = {
|
8
|
+
aperture: IUniform<number>;
|
9
|
+
aspect: IUniform<number>;
|
10
|
+
farClip: IUniform<number>;
|
11
|
+
focus: IUniform<number>;
|
12
|
+
maxblur: IUniform<number>;
|
13
|
+
nearClip: IUniform<number>;
|
14
|
+
tColor: IUniform<Texture | null>;
|
15
|
+
tDepth: IUniform<Texture | null>;
|
16
|
+
};
|
17
|
+
export interface IBokehShader extends IShader<BokehShaderUniforms, BokehShaderDefines> {
|
18
|
+
}
|
19
|
+
export declare const BokehShader: IBokehShader;
|
package/shaders/BokehShader.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const t={uniforms:{textureWidth:{value:1},textureHeight:{value:1},focalDepth:{value:1},focalLength:{value:24},fstop:{value:.9},tColor:{value:null},tDepth:{value:null},maxblur:{value:1},showFocus:{value:0},manualdof:{value:0},vignetting:{value:0},depthblur:{value:0},threshold:{value:.5},gain:{value:2},bias:{value:.5},fringe:{value:.7},znear:{value:.1},zfar:{value:100},noise:{value:1},dithering:{value:1e-4},pentagon:{value:0},shaderFocus:{value:1},focusCoords:{value:new(require("three").Vector2)}},vertexShader:["varying vec2 vUv;","void main() {","\tvUv = uv;","\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );","}"].join("\n"),fragmentShader:["#include <common>","varying vec2 vUv;","uniform sampler2D tColor;","uniform sampler2D tDepth;","uniform float textureWidth;","uniform float textureHeight;","uniform float focalDepth; //focal distance value in meters, but you may use autofocus option below","uniform float focalLength; //focal length in mm","uniform float fstop; //f-stop value","uniform bool showFocus; //show debug focus point and focal range (red = focal point, green = focal range)","/*","make sure that these two values are the same for your camera, otherwise distances will be wrong.","*/","uniform float znear; // camera clipping start","uniform float zfar; // camera clipping end","//------------------------------------------","//user variables","const int samples = SAMPLES; //samples on the first ring","const int rings = RINGS; //ring count","const int maxringsamples = rings * samples;","uniform bool manualdof; // manual dof calculation","float ndofstart = 1.0; // near dof blur start","float ndofdist = 2.0; // near dof blur falloff distance","float fdofstart = 1.0; // far dof blur start","float fdofdist = 3.0; // far dof blur falloff distance","float CoC = 0.03; //circle of confusion size in mm (35mm film = 0.03mm)","uniform bool vignetting; // use optical lens vignetting","float vignout = 1.3; // vignetting outer border","float vignin = 0.0; // vignetting inner border","float vignfade = 22.0; // f-stops till vignete fades","uniform bool shaderFocus;","// disable if you use external focalDepth value","uniform vec2 focusCoords;","// autofocus point on screen (0.0,0.0 - left lower corner, 1.0,1.0 - upper right)","// if center of screen use vec2(0.5, 0.5);","uniform float maxblur;","//clamp value of max blur (0.0 = no blur, 1.0 default)","uniform float threshold; // highlight threshold;","uniform float gain; // highlight gain;","uniform float bias; // bokeh edge bias","uniform float fringe; // bokeh chromatic aberration / fringing","uniform bool noise; //use noise instead of pattern for sample dithering","uniform float dithering;","uniform bool depthblur; // blur the depth buffer","float dbsize = 1.25; // depth blur size","/*","next part is experimental","not looking good with small sample and ring count","looks okay starting from samples = 4, rings = 4","*/","uniform bool pentagon; //use pentagon as bokeh shape?","float feather = 0.4; //pentagon shape feather","//------------------------------------------","float penta(vec2 coords) {","\t//pentagonal shape","\tfloat scale = float(rings) - 1.3;","\tvec4 HS0 = vec4( 1.0, 0.0, 0.0, 1.0);","\tvec4 HS1 = vec4( 0.309016994, 0.951056516, 0.0, 1.0);","\tvec4 HS2 = vec4(-0.809016994, 0.587785252, 0.0, 1.0);","\tvec4 HS3 = vec4(-0.809016994,-0.587785252, 0.0, 1.0);","\tvec4 HS4 = vec4( 0.309016994,-0.951056516, 0.0, 1.0);","\tvec4 HS5 = vec4( 0.0 ,0.0 , 1.0, 1.0);","\tvec4 one = vec4( 1.0 );","\tvec4 P = vec4((coords),vec2(scale, scale));","\tvec4 dist = vec4(0.0);","\tfloat inorout = -4.0;","\tdist.x = dot( P, HS0 );","\tdist.y = dot( P, HS1 );","\tdist.z = dot( P, HS2 );","\tdist.w = dot( P, HS3 );","\tdist = smoothstep( -feather, feather, dist );","\tinorout += dot( dist, one );","\tdist.x = dot( P, HS4 );","\tdist.y = HS5.w - abs( P.z );","\tdist = smoothstep( -feather, feather, dist );","\tinorout += dist.x;","\treturn clamp( inorout, 0.0, 1.0 );","}","float bdepth(vec2 coords) {","\t// Depth buffer blur","\tfloat d = 0.0;","\tfloat kernel[9];","\tvec2 offset[9];","\tvec2 wh = vec2(1.0/textureWidth,1.0/textureHeight) * dbsize;","\toffset[0] = vec2(-wh.x,-wh.y);","\toffset[1] = vec2( 0.0, -wh.y);","\toffset[2] = vec2( wh.x -wh.y);","\toffset[3] = vec2(-wh.x, 0.0);","\toffset[4] = vec2( 0.0, 0.0);","\toffset[5] = vec2( wh.x, 0.0);","\toffset[6] = vec2(-wh.x, wh.y);","\toffset[7] = vec2( 0.0, wh.y);","\toffset[8] = vec2( wh.x, wh.y);","\tkernel[0] = 1.0/16.0; kernel[1] = 2.0/16.0; kernel[2] = 1.0/16.0;","\tkernel[3] = 2.0/16.0; kernel[4] = 4.0/16.0; kernel[5] = 2.0/16.0;","\tkernel[6] = 1.0/16.0; kernel[7] = 2.0/16.0; kernel[8] = 1.0/16.0;","\tfor( int i=0; i<9; i++ ) {","\t\tfloat tmp = texture2D(tDepth, coords + offset[i]).r;","\t\td += tmp * kernel[i];","\t}","\treturn d;","}","vec3 color(vec2 coords,float blur) {","\t//processing the sample","\tvec3 col = vec3(0.0);","\tvec2 texel = vec2(1.0/textureWidth,1.0/textureHeight);","\tcol.r = texture2D(tColor,coords + vec2(0.0,1.0)*texel*fringe*blur).r;","\tcol.g = texture2D(tColor,coords + vec2(-0.866,-0.5)*texel*fringe*blur).g;","\tcol.b = texture2D(tColor,coords + vec2(0.866,-0.5)*texel*fringe*blur).b;","\tvec3 lumcoeff = vec3(0.299,0.587,0.114);","\tfloat lum = dot(col.rgb, lumcoeff);","\tfloat thresh = max((lum-threshold)*gain, 0.0);","\treturn col+mix(vec3(0.0),col,thresh*blur);","}","vec3 debugFocus(vec3 col, float blur, float depth) {","\tfloat edge = 0.002*depth; //distance based edge smoothing","\tfloat m = clamp(smoothstep(0.0,edge,blur),0.0,1.0);","\tfloat e = clamp(smoothstep(1.0-edge,1.0,blur),0.0,1.0);","\tcol = mix(col,vec3(1.0,0.5,0.0),(1.0-m)*0.6);","\tcol = mix(col,vec3(0.0,0.5,1.0),((1.0-e)-(1.0-m))*0.2);","\treturn col;","}","float linearize(float depth) {","\treturn -zfar * znear / (depth * (zfar - znear) - zfar);","}","float vignette() {","\tfloat dist = distance(vUv.xy, vec2(0.5,0.5));","\tdist = smoothstep(vignout+(fstop/vignfade), vignin+(fstop/vignfade), dist);","\treturn clamp(dist,0.0,1.0);","}","float gather(float i, float j, int ringsamples, inout vec3 col, float w, float h, float blur) {","\tfloat rings2 = float(rings);","\tfloat step = PI*2.0 / float(ringsamples);","\tfloat pw = cos(j*step)*i;","\tfloat ph = sin(j*step)*i;","\tfloat p = 1.0;","\tif (pentagon) {","\t\tp = penta(vec2(pw,ph));","\t}","\tcol += color(vUv.xy + vec2(pw*w,ph*h), blur) * mix(1.0, i/rings2, bias) * p;","\treturn 1.0 * mix(1.0, i /rings2, bias) * p;","}","void main() {","\t//scene depth calculation","\tfloat depth = linearize(texture2D(tDepth,vUv.xy).x);","\t// Blur depth?","\tif ( depthblur ) {","\t\tdepth = linearize(bdepth(vUv.xy));","\t}","\t//focal plane calculation","\tfloat fDepth = focalDepth;","\tif (shaderFocus) {","\t\tfDepth = linearize(texture2D(tDepth,focusCoords).x);","\t}","\t// dof blur factor calculation","\tfloat blur = 0.0;","\tif (manualdof) {","\t\tfloat a = depth-fDepth; // Focal plane","\t\tfloat b = (a-fdofstart)/fdofdist; // Far DoF","\t\tfloat c = (-a-ndofstart)/ndofdist; // Near Dof","\t\tblur = (a>0.0) ? b : c;","\t} else {","\t\tfloat f = focalLength; // focal length in mm","\t\tfloat d = fDepth*1000.0; // focal plane in mm","\t\tfloat o = depth*1000.0; // depth in mm","\t\tfloat a = (o*f)/(o-f);","\t\tfloat b = (d*f)/(d-f);","\t\tfloat c = (d-f)/(d*fstop*CoC);","\t\tblur = abs(a-b)*c;","\t}","\tblur = clamp(blur,0.0,1.0);","\t// calculation of pattern for dithering","\tvec2 noise = vec2(rand(vUv.xy), rand( vUv.xy + vec2( 0.4, 0.6 ) ) )*dithering*blur;","\t// getting blur x and y step factor","\tfloat w = (1.0/textureWidth)*blur*maxblur+noise.x;","\tfloat h = (1.0/textureHeight)*blur*maxblur+noise.y;","\t// calculation of final color","\tvec3 col = vec3(0.0);","\tif(blur < 0.05) {","\t\t//some optimization thingy","\t\tcol = texture2D(tColor, vUv.xy).rgb;","\t} else {","\t\tcol = texture2D(tColor, vUv.xy).rgb;","\t\tfloat s = 1.0;","\t\tint ringsamples;","\t\tfor (int i = 1; i <= rings; i++) {","\t\t\t/*unboxstart*/","\t\t\tringsamples = i * samples;","\t\t\tfor (int j = 0 ; j < maxringsamples ; j++) {","\t\t\t\tif (j >= ringsamples) break;","\t\t\t\ts += gather(float(i), float(j), ringsamples, col, w, h, blur);","\t\t\t}","\t\t\t/*unboxend*/","\t\t}","\t\tcol /= s; //divide by sample count","\t}","\tif (showFocus) {","\t\tcol = debugFocus(col, blur, depth);","\t}","\tif (vignetting) {","\t\tcol *= vignette();","\t}","\tgl_FragColor.rgb = col;","\tgl_FragColor.a = 1.0;","} "].join("\n")},e={uniforms:{mNear:{value:1},mFar:{value:1e3}},vertexShader:["varying float vViewZDepth;","void main() {","\t#include <begin_vertex>","\t#include <project_vertex>","\tvViewZDepth = - mvPosition.z;","}"].join("\n"),fragmentShader:["uniform float mNear;","uniform float mFar;","varying float vViewZDepth;","void main() {","\tfloat color = 1.0 - smoothstep( mNear, mFar, vViewZDepth );","\tgl_FragColor = vec4( vec3( color ), 1.0 );","} "].join("\n")};exports.BokehDepthShader=e,exports.BokehShader2=t;
|
@@ -1,41 +1,87 @@
|
|
1
|
-
import {
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
}
|
28
|
-
|
29
|
-
|
30
|
-
|
1
|
+
import { Vector2 } from 'three';
|
2
|
+
export declare const BokehShader2: {
|
3
|
+
uniforms: {
|
4
|
+
textureWidth: {
|
5
|
+
value: number;
|
6
|
+
};
|
7
|
+
textureHeight: {
|
8
|
+
value: number;
|
9
|
+
};
|
10
|
+
focalDepth: {
|
11
|
+
value: number;
|
12
|
+
};
|
13
|
+
focalLength: {
|
14
|
+
value: number;
|
15
|
+
};
|
16
|
+
fstop: {
|
17
|
+
value: number;
|
18
|
+
};
|
19
|
+
tColor: {
|
20
|
+
value: null;
|
21
|
+
};
|
22
|
+
tDepth: {
|
23
|
+
value: null;
|
24
|
+
};
|
25
|
+
maxblur: {
|
26
|
+
value: number;
|
27
|
+
};
|
28
|
+
showFocus: {
|
29
|
+
value: number;
|
30
|
+
};
|
31
|
+
manualdof: {
|
32
|
+
value: number;
|
33
|
+
};
|
34
|
+
vignetting: {
|
35
|
+
value: number;
|
36
|
+
};
|
37
|
+
depthblur: {
|
38
|
+
value: number;
|
39
|
+
};
|
40
|
+
threshold: {
|
41
|
+
value: number;
|
42
|
+
};
|
43
|
+
gain: {
|
44
|
+
value: number;
|
45
|
+
};
|
46
|
+
bias: {
|
47
|
+
value: number;
|
48
|
+
};
|
49
|
+
fringe: {
|
50
|
+
value: number;
|
51
|
+
};
|
52
|
+
znear: {
|
53
|
+
value: number;
|
54
|
+
};
|
55
|
+
zfar: {
|
56
|
+
value: number;
|
57
|
+
};
|
58
|
+
noise: {
|
59
|
+
value: number;
|
60
|
+
};
|
61
|
+
dithering: {
|
62
|
+
value: number;
|
63
|
+
};
|
64
|
+
pentagon: {
|
65
|
+
value: number;
|
66
|
+
};
|
67
|
+
shaderFocus: {
|
68
|
+
value: number;
|
69
|
+
};
|
70
|
+
focusCoords: {
|
71
|
+
value: Vector2;
|
72
|
+
};
|
73
|
+
};
|
31
74
|
vertexShader: string;
|
32
75
|
fragmentShader: string;
|
33
76
|
};
|
34
|
-
|
35
|
-
export const BokehDepthShader: {
|
77
|
+
export declare const BokehDepthShader: {
|
36
78
|
uniforms: {
|
37
|
-
mNear:
|
38
|
-
|
79
|
+
mNear: {
|
80
|
+
value: number;
|
81
|
+
};
|
82
|
+
mFar: {
|
83
|
+
value: number;
|
84
|
+
};
|
39
85
|
};
|
40
86
|
vertexShader: string;
|
41
87
|
fragmentShader: string;
|