three-stdlib 2.20.0 → 2.20.2

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "three-stdlib",
3
- "version": "2.20.0",
3
+ "version": "2.20.2",
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 t=require("three"),e=require("./Pass.cjs.js"),r=require("../shaders/CopyShader.cjs.js"),i=require("../shaders/LuminosityHighPassShader.cjs.js");require("@babel/runtime/helpers/defineProperty");var a=function(a,o,s,l){this.strength=void 0!==o?o:1,this.radius=s,this.threshold=l,this.resolution=void 0!==a?new t.Vector2(a.x,a.y):new t.Vector2(256,256),this.clearColor=new t.Color(0,0,0);var n={minFilter:t.LinearFilter,magFilter:t.LinearFilter,format:t.RGBAFormat};this.renderTargetsHorizontal=[],this.renderTargetsVertical=[],this.nMips=5;var u=Math.round(this.resolution.x/2),h=Math.round(this.resolution.y/2);this.renderTargetBright=new t.WebGLRenderTarget(u,h,n),this.renderTargetBright.texture.name="UnrealBloomPass.bright",this.renderTargetBright.texture.generateMipmaps=!1;for(let e=0;e<this.nMips;e++){var m=new t.WebGLRenderTarget(u,h,n);m.texture.name="UnrealBloomPass.h"+e,m.texture.generateMipmaps=!1,this.renderTargetsHorizontal.push(m);var d=new t.WebGLRenderTarget(u,h,n);d.texture.name="UnrealBloomPass.v"+e,d.texture.generateMipmaps=!1,this.renderTargetsVertical.push(d),u=Math.round(u/2),h=Math.round(h/2)}void 0===i.LuminosityHighPassShader&&console.error("THREE.UnrealBloomPass relies on LuminosityHighPassShader");var c=i.LuminosityHighPassShader;this.highPassUniforms=t.UniformsUtils.clone(c.uniforms),this.highPassUniforms.luminosityThreshold.value=l,this.highPassUniforms.smoothWidth.value=.01,this.materialHighPassFilter=new t.ShaderMaterial({uniforms:this.highPassUniforms,vertexShader:c.vertexShader,fragmentShader:c.fragmentShader,defines:{}}),this.separableBlurMaterials=[];var f=[3,5,7,9,11];u=Math.round(this.resolution.x/2),h=Math.round(this.resolution.y/2);for(let e=0;e<this.nMips;e++)this.separableBlurMaterials.push(this.getSeperableBlurMaterial(f[e])),this.separableBlurMaterials[e].uniforms.texSize.value=new t.Vector2(u,h),u=Math.round(u/2),h=Math.round(h/2);this.compositeMaterial=this.getCompositeMaterial(this.nMips),this.compositeMaterial.uniforms.blurTexture1.value=this.renderTargetsVertical[0].texture,this.compositeMaterial.uniforms.blurTexture2.value=this.renderTargetsVertical[1].texture,this.compositeMaterial.uniforms.blurTexture3.value=this.renderTargetsVertical[2].texture,this.compositeMaterial.uniforms.blurTexture4.value=this.renderTargetsVertical[3].texture,this.compositeMaterial.uniforms.blurTexture5.value=this.renderTargetsVertical[4].texture,this.compositeMaterial.uniforms.bloomStrength.value=o,this.compositeMaterial.uniforms.bloomRadius.value=.1,this.compositeMaterial.needsUpdate=!0;this.compositeMaterial.uniforms.bloomFactors.value=[1,.8,.6,.4,.2],this.bloomTintColors=[new t.Vector3(1,1,1),new t.Vector3(1,1,1),new t.Vector3(1,1,1),new t.Vector3(1,1,1),new t.Vector3(1,1,1)],this.compositeMaterial.uniforms.bloomTintColors.value=this.bloomTintColors,void 0===r.CopyShader&&console.error("THREE.UnrealBloomPass relies on CopyShader");var v=r.CopyShader;this.copyUniforms=t.UniformsUtils.clone(v.uniforms),this.copyUniforms.opacity.value=1,this.materialCopy=new t.ShaderMaterial({uniforms:this.copyUniforms,vertexShader:v.vertexShader,fragmentShader:v.fragmentShader,blending:t.AdditiveBlending,depthTest:!1,depthWrite:!1,transparent:!0}),this.enabled=!0,this.needsSwap=!1,this._oldClearColor=new t.Color,this.oldClearAlpha=1,this.basic=new t.MeshBasicMaterial,this.fsQuad=new e.FullScreenQuad(null)};a.prototype=Object.assign(Object.create(e.Pass.prototype),{constructor:a,dispose:function(){for(let t=0;t<this.renderTargetsHorizontal.length;t++)this.renderTargetsHorizontal[t].dispose();for(let t=0;t<this.renderTargetsVertical.length;t++)this.renderTargetsVertical[t].dispose();this.renderTargetBright.dispose()},setSize:function(e,r){var i=Math.round(e/2),a=Math.round(r/2);this.renderTargetBright.setSize(i,a);for(let e=0;e<this.nMips;e++)this.renderTargetsHorizontal[e].setSize(i,a),this.renderTargetsVertical[e].setSize(i,a),this.separableBlurMaterials[e].uniforms.texSize.value=new t.Vector2(i,a),i=Math.round(i/2),a=Math.round(a/2)},render:function(t,e,r,i,o){t.getClearColor(this._oldClearColor),this.oldClearAlpha=t.getClearAlpha();var s=t.autoClear;t.autoClear=!1,t.setClearColor(this.clearColor,0),o&&t.state.buffers.stencil.setTest(!1),this.renderToScreen&&(this.fsQuad.material=this.basic,this.basic.map=r.texture,t.setRenderTarget(null),t.clear(),this.fsQuad.render(t)),this.highPassUniforms.tDiffuse.value=r.texture,this.highPassUniforms.luminosityThreshold.value=this.threshold,this.fsQuad.material=this.materialHighPassFilter,t.setRenderTarget(this.renderTargetBright),t.clear(),this.fsQuad.render(t);var l=this.renderTargetBright;for(let e=0;e<this.nMips;e++)this.fsQuad.material=this.separableBlurMaterials[e],this.separableBlurMaterials[e].uniforms.colorTexture.value=l.texture,this.separableBlurMaterials[e].uniforms.direction.value=a.BlurDirectionX,t.setRenderTarget(this.renderTargetsHorizontal[e]),t.clear(),this.fsQuad.render(t),this.separableBlurMaterials[e].uniforms.colorTexture.value=this.renderTargetsHorizontal[e].texture,this.separableBlurMaterials[e].uniforms.direction.value=a.BlurDirectionY,t.setRenderTarget(this.renderTargetsVertical[e]),t.clear(),this.fsQuad.render(t),l=this.renderTargetsVertical[e];this.fsQuad.material=this.compositeMaterial,this.compositeMaterial.uniforms.bloomStrength.value=this.strength,this.compositeMaterial.uniforms.bloomRadius.value=this.radius,this.compositeMaterial.uniforms.bloomTintColors.value=this.bloomTintColors,t.setRenderTarget(this.renderTargetsHorizontal[0]),t.clear(),this.fsQuad.render(t),this.fsQuad.material=this.materialCopy,this.copyUniforms.tDiffuse.value=this.renderTargetsHorizontal[0].texture,o&&t.state.buffers.stencil.setTest(!0),this.renderToScreen?(t.setRenderTarget(null),this.fsQuad.render(t)):(t.setRenderTarget(r),this.fsQuad.render(t)),t.setClearColor(this._oldClearColor,this.oldClearAlpha),t.autoClear=s},getSeperableBlurMaterial:function(e){return new t.ShaderMaterial({defines:{KERNEL_RADIUS:e,SIGMA:e},uniforms:{colorTexture:{value:null},texSize:{value:new t.Vector2(.5,.5)},direction:{value:new t.Vector2(.5,.5)}},vertexShader:"varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}",fragmentShader:"#include <common>\t\t\t\tvarying vec2 vUv;\n\t\t\t\tuniform sampler2D colorTexture;\n\t\t\t\tuniform vec2 texSize;\t\t\t\tuniform vec2 direction;\t\t\t\t\t\t\t\tfloat gaussianPdf(in float x, in float sigma) {\t\t\t\t\treturn 0.39894 * exp( -0.5 * x * x/( sigma * sigma))/sigma;\t\t\t\t}\t\t\t\tvoid main() {\n\t\t\t\t\tvec2 invSize = 1.0 / texSize;\t\t\t\t\tfloat fSigma = float(SIGMA);\t\t\t\t\tfloat weightSum = gaussianPdf(0.0, fSigma);\t\t\t\t\tvec3 diffuseSum = texture2D( colorTexture, vUv).rgb * weightSum;\t\t\t\t\tfor( int i = 1; i < KERNEL_RADIUS; i ++ ) {\t\t\t\t\t\tfloat x = float(i);\t\t\t\t\t\tfloat w = gaussianPdf(x, fSigma);\t\t\t\t\t\tvec2 uvOffset = direction * invSize * x;\t\t\t\t\t\tvec3 sample1 = texture2D( colorTexture, vUv + uvOffset).rgb;\t\t\t\t\t\tvec3 sample2 = texture2D( colorTexture, vUv - uvOffset).rgb;\t\t\t\t\t\tdiffuseSum += (sample1 + sample2) * w;\t\t\t\t\t\tweightSum += 2.0 * w;\t\t\t\t\t}\t\t\t\t\tgl_FragColor = vec4(diffuseSum/weightSum, 1.0);\n\t\t\t\t}"})},getCompositeMaterial:function(e){return new t.ShaderMaterial({defines:{NUM_MIPS:e},uniforms:{blurTexture1:{value:null},blurTexture2:{value:null},blurTexture3:{value:null},blurTexture4:{value:null},blurTexture5:{value:null},dirtTexture:{value:null},bloomStrength:{value:1},bloomFactors:{value:null},bloomTintColors:{value:null},bloomRadius:{value:0}},vertexShader:"varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}",fragmentShader:"varying vec2 vUv;\t\t\t\tuniform sampler2D blurTexture1;\t\t\t\tuniform sampler2D blurTexture2;\t\t\t\tuniform sampler2D blurTexture3;\t\t\t\tuniform sampler2D blurTexture4;\t\t\t\tuniform sampler2D blurTexture5;\t\t\t\tuniform sampler2D dirtTexture;\t\t\t\tuniform float bloomStrength;\t\t\t\tuniform float bloomRadius;\t\t\t\tuniform float bloomFactors[NUM_MIPS];\t\t\t\tuniform vec3 bloomTintColors[NUM_MIPS];\t\t\t\t\t\t\t\tfloat lerpBloomFactor(const in float factor) { \t\t\t\t\tfloat mirrorFactor = 1.2 - factor;\t\t\t\t\treturn mix(factor, mirrorFactor, bloomRadius);\t\t\t\t}\t\t\t\t\t\t\t\tvoid main() {\t\t\t\t\tgl_FragColor = bloomStrength * ( lerpBloomFactor(bloomFactors[0]) * vec4(bloomTintColors[0], 1.0) * texture2D(blurTexture1, vUv) + \t\t\t\t\t\t\t\t\t\t\t\t\t lerpBloomFactor(bloomFactors[1]) * vec4(bloomTintColors[1], 1.0) * texture2D(blurTexture2, vUv) + \t\t\t\t\t\t\t\t\t\t\t\t\t lerpBloomFactor(bloomFactors[2]) * vec4(bloomTintColors[2], 1.0) * texture2D(blurTexture3, vUv) + \t\t\t\t\t\t\t\t\t\t\t\t\t lerpBloomFactor(bloomFactors[3]) * vec4(bloomTintColors[3], 1.0) * texture2D(blurTexture4, vUv) + \t\t\t\t\t\t\t\t\t\t\t\t\t lerpBloomFactor(bloomFactors[4]) * vec4(bloomTintColors[4], 1.0) * texture2D(blurTexture5, vUv) );\t\t\t\t}"})}}),a.BlurDirectionX=new t.Vector2(1,0),a.BlurDirectionY=new t.Vector2(0,1),exports.UnrealBloomPass=a;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),r=require("./Pass.cjs.js"),t=require("../shaders/CopyShader.cjs.js"),i=require("../shaders/LuminosityHighPassShader.cjs.js");require("@babel/runtime/helpers/defineProperty");var a=function(a,o,s,l){this.strength=void 0!==o?o:1,this.radius=s,this.threshold=l,this.resolution=void 0!==a?new e.Vector2(a.x,a.y):new e.Vector2(256,256),this.clearColor=new e.Color(0,0,0);var n={minFilter:e.LinearFilter,magFilter:e.LinearFilter,format:e.RGBAFormat};this.renderTargetsHorizontal=[],this.renderTargetsVertical=[],this.nMips=5;var u=Math.round(this.resolution.x/2),h=Math.round(this.resolution.y/2);this.renderTargetBright=new e.WebGLRenderTarget(u,h,n),this.renderTargetBright.texture.name="UnrealBloomPass.bright",this.renderTargetBright.texture.generateMipmaps=!1;for(let r=0;r<this.nMips;r++){var m=new e.WebGLRenderTarget(u,h,n);m.texture.name="UnrealBloomPass.h"+r,m.texture.generateMipmaps=!1,this.renderTargetsHorizontal.push(m);var d=new e.WebGLRenderTarget(u,h,n);d.texture.name="UnrealBloomPass.v"+r,d.texture.generateMipmaps=!1,this.renderTargetsVertical.push(d),u=Math.round(u/2),h=Math.round(h/2)}void 0===i.LuminosityHighPassShader&&console.error("THREE.UnrealBloomPass relies on LuminosityHighPassShader");var c=i.LuminosityHighPassShader;this.highPassUniforms=e.UniformsUtils.clone(c.uniforms),this.highPassUniforms.luminosityThreshold.value=l,this.highPassUniforms.smoothWidth.value=.01,this.materialHighPassFilter=new e.ShaderMaterial({uniforms:this.highPassUniforms,vertexShader:c.vertexShader,fragmentShader:c.fragmentShader,defines:{}}),this.separableBlurMaterials=[];var f=[3,5,7,9,11];u=Math.round(this.resolution.x/2),h=Math.round(this.resolution.y/2);for(let r=0;r<this.nMips;r++)this.separableBlurMaterials.push(this.getSeperableBlurMaterial(f[r])),this.separableBlurMaterials[r].uniforms.texSize.value=new e.Vector2(u,h),u=Math.round(u/2),h=Math.round(h/2);this.compositeMaterial=this.getCompositeMaterial(this.nMips),this.compositeMaterial.uniforms.blurTexture1.value=this.renderTargetsVertical[0].texture,this.compositeMaterial.uniforms.blurTexture2.value=this.renderTargetsVertical[1].texture,this.compositeMaterial.uniforms.blurTexture3.value=this.renderTargetsVertical[2].texture,this.compositeMaterial.uniforms.blurTexture4.value=this.renderTargetsVertical[3].texture,this.compositeMaterial.uniforms.blurTexture5.value=this.renderTargetsVertical[4].texture,this.compositeMaterial.uniforms.bloomStrength.value=o,this.compositeMaterial.uniforms.bloomRadius.value=.1,this.compositeMaterial.needsUpdate=!0;this.compositeMaterial.uniforms.bloomFactors.value=[1,.8,.6,.4,.2],this.bloomTintColors=[new e.Vector3(1,1,1),new e.Vector3(1,1,1),new e.Vector3(1,1,1),new e.Vector3(1,1,1),new e.Vector3(1,1,1)],this.compositeMaterial.uniforms.bloomTintColors.value=this.bloomTintColors,void 0===t.CopyShader&&console.error("THREE.UnrealBloomPass relies on CopyShader");var v=t.CopyShader;this.copyUniforms=e.UniformsUtils.clone(v.uniforms),this.copyUniforms.opacity.value=1,this.materialCopy=new e.ShaderMaterial({uniforms:this.copyUniforms,vertexShader:v.vertexShader,fragmentShader:v.fragmentShader,blending:e.AdditiveBlending,depthTest:!1,depthWrite:!1,transparent:!0}),this.enabled=!0,this.needsSwap=!1,this._oldClearColor=new e.Color,this.oldClearAlpha=1,this.basic=new e.MeshBasicMaterial,this.fsQuad=new r.FullScreenQuad(null)};a.prototype=Object.assign(Object.create(r.Pass.prototype),{constructor:a,dispose:function(){for(let e=0;e<this.renderTargetsHorizontal.length;e++)this.renderTargetsHorizontal[e].dispose();for(let e=0;e<this.renderTargetsVertical.length;e++)this.renderTargetsVertical[e].dispose();this.renderTargetBright.dispose()},setSize:function(r,t){var i=Math.round(r/2),a=Math.round(t/2);this.renderTargetBright.setSize(i,a);for(let r=0;r<this.nMips;r++)this.renderTargetsHorizontal[r].setSize(i,a),this.renderTargetsVertical[r].setSize(i,a),this.separableBlurMaterials[r].uniforms.texSize.value=new e.Vector2(i,a),i=Math.round(i/2),a=Math.round(a/2)},render:function(e,r,t,i,o){e.getClearColor(this._oldClearColor),this.oldClearAlpha=e.getClearAlpha();var s=e.autoClear;e.autoClear=!1,e.setClearColor(this.clearColor,0),o&&e.state.buffers.stencil.setTest(!1),this.renderToScreen&&(this.fsQuad.material=this.basic,this.basic.map=t.texture,e.setRenderTarget(null),e.clear(),this.fsQuad.render(e)),this.highPassUniforms.tDiffuse.value=t.texture,this.highPassUniforms.luminosityThreshold.value=this.threshold,this.fsQuad.material=this.materialHighPassFilter,e.setRenderTarget(this.renderTargetBright),e.clear(),this.fsQuad.render(e);var l=this.renderTargetBright;for(let r=0;r<this.nMips;r++)this.fsQuad.material=this.separableBlurMaterials[r],this.separableBlurMaterials[r].uniforms.colorTexture.value=l.texture,this.separableBlurMaterials[r].uniforms.direction.value=a.BlurDirectionX,e.setRenderTarget(this.renderTargetsHorizontal[r]),e.clear(),this.fsQuad.render(e),this.separableBlurMaterials[r].uniforms.colorTexture.value=this.renderTargetsHorizontal[r].texture,this.separableBlurMaterials[r].uniforms.direction.value=a.BlurDirectionY,e.setRenderTarget(this.renderTargetsVertical[r]),e.clear(),this.fsQuad.render(e),l=this.renderTargetsVertical[r];this.fsQuad.material=this.compositeMaterial,this.compositeMaterial.uniforms.bloomStrength.value=this.strength,this.compositeMaterial.uniforms.bloomRadius.value=this.radius,this.compositeMaterial.uniforms.bloomTintColors.value=this.bloomTintColors,e.setRenderTarget(this.renderTargetsHorizontal[0]),e.clear(),this.fsQuad.render(e),this.fsQuad.material=this.materialCopy,this.copyUniforms.tDiffuse.value=this.renderTargetsHorizontal[0].texture,o&&e.state.buffers.stencil.setTest(!0),this.renderToScreen?(e.setRenderTarget(null),this.fsQuad.render(e)):(e.setRenderTarget(t),this.fsQuad.render(e)),e.setClearColor(this._oldClearColor,this.oldClearAlpha),e.autoClear=s},getSeperableBlurMaterial:function(r){return new e.ShaderMaterial({defines:{KERNEL_RADIUS:r,SIGMA:r},uniforms:{colorTexture:{value:null},texSize:{value:new e.Vector2(.5,.5)},direction:{value:new e.Vector2(.5,.5)}},vertexShader:"varying vec2 vUv;\nvoid main() {\n\tvUv = uv;\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",fragmentShader:"#include <common>varying vec2 vUv;\nuniform sampler2D colorTexture;\nuniform vec2 texSize;uniform vec2 direction;\nfloat gaussianPdf(in float x, in float sigma) {\treturn 0.39894 * exp( -0.5 * x * x/( sigma * sigma))/sigma;}void main() {\n\tvec2 invSize = 1.0 / texSize;\tfloat fSigma = float(SIGMA);\tfloat weightSum = gaussianPdf(0.0, fSigma);\tvec3 diffuseSum = texture2D( colorTexture, vUv).rgb * weightSum;\tfor( int i = 1; i < KERNEL_RADIUS; i ++ ) {\t\tfloat x = float(i);\t\tfloat w = gaussianPdf(x, fSigma);\t\tvec2 uvOffset = direction * invSize * x;\t\tvec3 sample1 = texture2D( colorTexture, vUv + uvOffset).rgb;\t\tvec3 sample2 = texture2D( colorTexture, vUv - uvOffset).rgb;\t\tdiffuseSum += (sample1 + sample2) * w;\t\tweightSum += 2.0 * w;\t}\tgl_FragColor = vec4(diffuseSum/weightSum, 1.0);\n}"})},getCompositeMaterial:function(r){return new e.ShaderMaterial({defines:{NUM_MIPS:r},uniforms:{blurTexture1:{value:null},blurTexture2:{value:null},blurTexture3:{value:null},blurTexture4:{value:null},blurTexture5:{value:null},dirtTexture:{value:null},bloomStrength:{value:1},bloomFactors:{value:null},bloomTintColors:{value:null},bloomRadius:{value:0}},vertexShader:"varying vec2 vUv;\nvoid main() {\n\tvUv = uv;\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",fragmentShader:"varying vec2 vUv;uniform sampler2D blurTexture1;uniform sampler2D blurTexture2;uniform sampler2D blurTexture3;uniform sampler2D blurTexture4;uniform sampler2D blurTexture5;uniform sampler2D dirtTexture;uniform float bloomStrength;uniform float bloomRadius;uniform float bloomFactors[NUM_MIPS];uniform vec3 bloomTintColors[NUM_MIPS];float lerpBloomFactor(const in float factor) { \tfloat mirrorFactor = 1.2 - factor;\treturn mix(factor, mirrorFactor, bloomRadius);}void main() {\tgl_FragColor = bloomStrength * ( lerpBloomFactor(bloomFactors[0]) * vec4(bloomTintColors[0], 1.0) * texture2D(blurTexture1, vUv) + \t\t\t\t\t\t\t\t\t lerpBloomFactor(bloomFactors[1]) * vec4(bloomTintColors[1], 1.0) * texture2D(blurTexture2, vUv) + \t\t\t\t\t\t\t\t\t lerpBloomFactor(bloomFactors[2]) * vec4(bloomTintColors[2], 1.0) * texture2D(blurTexture3, vUv) + \t\t\t\t\t\t\t\t\t lerpBloomFactor(bloomFactors[3]) * vec4(bloomTintColors[3], 1.0) * texture2D(blurTexture4, vUv) + \t\t\t\t\t\t\t\t\t lerpBloomFactor(bloomFactors[4]) * vec4(bloomTintColors[4], 1.0) * texture2D(blurTexture5, vUv) );}"})}}),a.BlurDirectionX=new e.Vector2(1,0),a.BlurDirectionY=new e.Vector2(0,1),exports.UnrealBloomPass=a;
@@ -221,36 +221,8 @@ UnrealBloomPass.prototype = Object.assign(Object.create(Pass.prototype), {
221
221
  value: new Vector2(0.5, 0.5)
222
222
  }
223
223
  },
224
- vertexShader: 'varying vec2 vUv;\n\
225
- void main() {\n\
226
- vUv = uv;\n\
227
- gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\
228
- }',
229
- fragmentShader: '#include <common>\
230
- varying vec2 vUv;\n\
231
- uniform sampler2D colorTexture;\n\
232
- uniform vec2 texSize;\
233
- uniform vec2 direction;\
234
- \
235
- float gaussianPdf(in float x, in float sigma) {\
236
- return 0.39894 * exp( -0.5 * x * x/( sigma * sigma))/sigma;\
237
- }\
238
- void main() {\n\
239
- vec2 invSize = 1.0 / texSize;\
240
- float fSigma = float(SIGMA);\
241
- float weightSum = gaussianPdf(0.0, fSigma);\
242
- vec3 diffuseSum = texture2D( colorTexture, vUv).rgb * weightSum;\
243
- for( int i = 1; i < KERNEL_RADIUS; i ++ ) {\
244
- float x = float(i);\
245
- float w = gaussianPdf(x, fSigma);\
246
- vec2 uvOffset = direction * invSize * x;\
247
- vec3 sample1 = texture2D( colorTexture, vUv + uvOffset).rgb;\
248
- vec3 sample2 = texture2D( colorTexture, vUv - uvOffset).rgb;\
249
- diffuseSum += (sample1 + sample2) * w;\
250
- weightSum += 2.0 * w;\
251
- }\
252
- gl_FragColor = vec4(diffuseSum/weightSum, 1.0);\n\
253
- }'
224
+ vertexShader: 'varying vec2 vUv;\n' + 'void main() {\n' + ' vUv = uv;\n' + ' gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n' + '}',
225
+ fragmentShader: '#include <common>' + 'varying vec2 vUv;\n' + 'uniform sampler2D colorTexture;\n' + 'uniform vec2 texSize;' + 'uniform vec2 direction;' + '\n' + 'float gaussianPdf(in float x, in float sigma) {' + ' return 0.39894 * exp( -0.5 * x * x/( sigma * sigma))/sigma;' + '}' + 'void main() {\n' + ' vec2 invSize = 1.0 / texSize;' + ' float fSigma = float(SIGMA);' + ' float weightSum = gaussianPdf(0.0, fSigma);' + ' vec3 diffuseSum = texture2D( colorTexture, vUv).rgb * weightSum;' + ' for( int i = 1; i < KERNEL_RADIUS; i ++ ) {' + ' float x = float(i);' + ' float w = gaussianPdf(x, fSigma);' + ' vec2 uvOffset = direction * invSize * x;' + ' vec3 sample1 = texture2D( colorTexture, vUv + uvOffset).rgb;' + ' vec3 sample2 = texture2D( colorTexture, vUv - uvOffset).rgb;' + ' diffuseSum += (sample1 + sample2) * w;' + ' weightSum += 2.0 * w;' + ' }' + ' gl_FragColor = vec4(diffuseSum/weightSum, 1.0);\n' + '}'
254
226
  });
255
227
  },
256
228
  getCompositeMaterial: function (nMips) {
@@ -290,35 +262,8 @@ UnrealBloomPass.prototype = Object.assign(Object.create(Pass.prototype), {
290
262
  value: 0.0
291
263
  }
292
264
  },
293
- vertexShader: 'varying vec2 vUv;\n\
294
- void main() {\n\
295
- vUv = uv;\n\
296
- gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\
297
- }',
298
- fragmentShader: 'varying vec2 vUv;\
299
- uniform sampler2D blurTexture1;\
300
- uniform sampler2D blurTexture2;\
301
- uniform sampler2D blurTexture3;\
302
- uniform sampler2D blurTexture4;\
303
- uniform sampler2D blurTexture5;\
304
- uniform sampler2D dirtTexture;\
305
- uniform float bloomStrength;\
306
- uniform float bloomRadius;\
307
- uniform float bloomFactors[NUM_MIPS];\
308
- uniform vec3 bloomTintColors[NUM_MIPS];\
309
- \
310
- float lerpBloomFactor(const in float factor) { \
311
- float mirrorFactor = 1.2 - factor;\
312
- return mix(factor, mirrorFactor, bloomRadius);\
313
- }\
314
- \
315
- void main() {\
316
- gl_FragColor = bloomStrength * ( lerpBloomFactor(bloomFactors[0]) * vec4(bloomTintColors[0], 1.0) * texture2D(blurTexture1, vUv) + \
317
- lerpBloomFactor(bloomFactors[1]) * vec4(bloomTintColors[1], 1.0) * texture2D(blurTexture2, vUv) + \
318
- lerpBloomFactor(bloomFactors[2]) * vec4(bloomTintColors[2], 1.0) * texture2D(blurTexture3, vUv) + \
319
- lerpBloomFactor(bloomFactors[3]) * vec4(bloomTintColors[3], 1.0) * texture2D(blurTexture4, vUv) + \
320
- lerpBloomFactor(bloomFactors[4]) * vec4(bloomTintColors[4], 1.0) * texture2D(blurTexture5, vUv) );\
321
- }'
265
+ vertexShader: 'varying vec2 vUv;\n' + 'void main() {\n' + ' vUv = uv;\n' + ' gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n' + '}',
266
+ fragmentShader: 'varying vec2 vUv;' + 'uniform sampler2D blurTexture1;' + 'uniform sampler2D blurTexture2;' + 'uniform sampler2D blurTexture3;' + 'uniform sampler2D blurTexture4;' + 'uniform sampler2D blurTexture5;' + 'uniform sampler2D dirtTexture;' + 'uniform float bloomStrength;' + 'uniform float bloomRadius;' + 'uniform float bloomFactors[NUM_MIPS];' + 'uniform vec3 bloomTintColors[NUM_MIPS];' + '' + 'float lerpBloomFactor(const in float factor) { ' + ' float mirrorFactor = 1.2 - factor;' + ' return mix(factor, mirrorFactor, bloomRadius);' + '}' + '' + 'void main() {' + ' gl_FragColor = bloomStrength * ( lerpBloomFactor(bloomFactors[0]) * vec4(bloomTintColors[0], 1.0) * texture2D(blurTexture1, vUv) + ' + ' lerpBloomFactor(bloomFactors[1]) * vec4(bloomTintColors[1], 1.0) * texture2D(blurTexture2, vUv) + ' + ' lerpBloomFactor(bloomFactors[2]) * vec4(bloomTintColors[2], 1.0) * texture2D(blurTexture3, vUv) + ' + ' lerpBloomFactor(bloomFactors[3]) * vec4(bloomTintColors[3], 1.0) * texture2D(blurTexture4, vUv) + ' + ' lerpBloomFactor(bloomFactors[4]) * vec4(bloomTintColors[4], 1.0) * texture2D(blurTexture5, vUv) );' + '}'
322
267
  });
323
268
  }
324
269
  });