elation-engine 0.9.113 → 0.9.115

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.
Files changed (91) hide show
  1. package/css/systems/render.css +5 -1
  2. package/package.json +1 -1
  3. package/scripts/assets.js +103 -20
  4. package/scripts/assetworker.js +18 -1
  5. package/scripts/external/holoplay.js +1494 -0
  6. package/scripts/external/octree.js +0 -0
  7. package/scripts/external/three/CSS3DRenderer.js +46 -43
  8. package/scripts/external/three/CubemapToEquirectangular.js +1 -1
  9. package/scripts/external/three/three-extras.js +1553 -392
  10. package/scripts/external/three/three-icosa.js +2575 -0
  11. package/scripts/external/three/three-loaders.js +925 -133
  12. package/scripts/external/three/three-postprocessing.js +3 -3
  13. package/scripts/external/three/three-r116dev.js +50930 -0
  14. package/scripts/external/three/three-spotlighttextures.js +50953 -0
  15. package/scripts/external/three/three-vrm.js +2 -2
  16. package/scripts/external/three/three-working.js +35968 -0
  17. package/scripts/external/three/three.js +38532 -24087
  18. package/scripts/external/three-mesh-bvh.js +5370 -0
  19. package/scripts/external/three-old/BVHLoader.js +406 -0
  20. package/scripts/external/three-old/ColladaLoader.js +5519 -0
  21. package/scripts/external/three-old/ColladaLoader2.js +1694 -0
  22. package/scripts/external/three-old/CubemapToEquirectangular.js +188 -0
  23. package/scripts/external/three-old/DDSLoader.js +269 -0
  24. package/scripts/external/three-old/FBXLoader-mine.js +5063 -0
  25. package/scripts/external/three-old/FBXLoader.js +5112 -0
  26. package/scripts/external/three-old/FlyControls.js +295 -0
  27. package/scripts/external/three-old/GLTF2Loader.js +2950 -0
  28. package/scripts/external/three-old/GLTFLoader.js +2213 -0
  29. package/scripts/external/three-old/JSONLoader.js +435 -0
  30. package/scripts/external/three-old/MTLLoader.js +533 -0
  31. package/scripts/external/three-old/OBJLoader-experimental.js +874 -0
  32. package/scripts/external/three-old/OBJLoader-working.js +727 -0
  33. package/scripts/external/three-old/OBJLoader.js +723 -0
  34. package/scripts/external/three-old/OBJMTLLoader.js +440 -0
  35. package/scripts/external/three-old/OrbitControls.js +592 -0
  36. package/scripts/external/three-old/PLYLoader.js +517 -0
  37. package/scripts/external/three-old/TransformControls.js +1100 -0
  38. package/scripts/external/three-old/VRMLLoader.js +1021 -0
  39. package/scripts/external/three-old/glTFLoader-combined.js +2513 -0
  40. package/scripts/external/three-old/nodethree.js +44018 -0
  41. package/scripts/external/three-old/render/BleachBypassShader.js +64 -0
  42. package/scripts/external/three-old/render/BloomPass.js +116 -0
  43. package/scripts/external/three-old/render/CSS3DRenderer.js +310 -0
  44. package/scripts/external/three-old/render/ClearPass.js +44 -0
  45. package/scripts/external/three-old/render/ConvolutionShader.js +101 -0
  46. package/scripts/external/three-old/render/CopyShader.js +46 -0
  47. package/scripts/external/three-old/render/EffectComposer.js +211 -0
  48. package/scripts/external/three-old/render/FXAAShader.js +88 -0
  49. package/scripts/external/three-old/render/FilmPass.js +60 -0
  50. package/scripts/external/three-old/render/FilmShader.js +104 -0
  51. package/scripts/external/three-old/render/ManualMSAARenderPass.js +168 -0
  52. package/scripts/external/three-old/render/MaskPass.js +97 -0
  53. package/scripts/external/three-old/render/OculusRenderPass.js +84 -0
  54. package/scripts/external/three-old/render/OculusRiftEffect.js +240 -0
  55. package/scripts/external/three-old/render/PortalRenderPass.js +166 -0
  56. package/scripts/external/three-old/render/RecordingPass.js +208 -0
  57. package/scripts/external/three-old/render/RenderPass.js +57 -0
  58. package/scripts/external/three-old/render/SSAOShader.js +259 -0
  59. package/scripts/external/three-old/render/SepiaShader.js +54 -0
  60. package/scripts/external/three-old/render/ShaderPass.js +66 -0
  61. package/scripts/external/three-old/render/VREffect.js +482 -0
  62. package/scripts/external/three-old/shimthree.js +23 -0
  63. package/scripts/external/three-old/stats.js +6 -0
  64. package/scripts/external/three-old/three-88dev.js +45004 -0
  65. package/scripts/external/three-old/three-backgroundoptimization.js +44432 -0
  66. package/scripts/external/three-old/three-updates.js +44735 -0
  67. package/scripts/external/three-old/three-working.js +44719 -0
  68. package/scripts/external/three-old/three.js +44431 -0
  69. package/scripts/external/three-old/threex.rendererstats.js +66 -0
  70. package/scripts/external/three-old/tween.js +13 -0
  71. package/scripts/external/webvr-polyfill-new.js +3497 -0
  72. package/scripts/external/webvr-polyfill-newest.js +3491 -0
  73. package/scripts/external/webvr-polyfill-old.js +6337 -0
  74. package/scripts/geometries.js +2 -2
  75. package/scripts/math.js +6 -6
  76. package/scripts/systems/admin.js +1 -1
  77. package/scripts/systems/controls.js +6 -4
  78. package/scripts/systems/physics.js +10 -10
  79. package/scripts/systems/render.js +58 -20
  80. package/scripts/systems/render2.js +38 -0
  81. package/scripts/things/camera.js +6 -1
  82. package/scripts/things/generic-trackedvectors.js +1875 -0
  83. package/scripts/things/generic.js +3 -4
  84. package/scripts/things/label2d.js +1 -1
  85. package/scripts/things/leapmotion.js +6 -6
  86. package/scripts/things/menu.js +1 -1
  87. package/scripts/things/player-bak.js +638 -0
  88. package/scripts/things/player.js +28 -10
  89. package/scripts/things/skysphere.js +1 -1
  90. package/scripts/things/terrain.js +1 -1
  91. package/scripts/things/text.js +1 -1
@@ -0,0 +1,64 @@
1
+ /**
2
+ * @author alteredq / http://alteredqualia.com/
3
+ *
4
+ * Bleach bypass shader [http://en.wikipedia.org/wiki/Bleach_bypass]
5
+ * - based on Nvidia example
6
+ * http://developer.download.nvidia.com/shaderlibrary/webpages/shader_library.html#post_bleach_bypass
7
+ */
8
+
9
+ THREE.BleachBypassShader = {
10
+
11
+ uniforms: {
12
+
13
+ "tDiffuse": { type: "t", value: null },
14
+ "opacity": { type: "f", value: 1.0 }
15
+
16
+ },
17
+
18
+ vertexShader: [
19
+
20
+ "varying vec2 vUv;",
21
+
22
+ "void main() {",
23
+
24
+ "vUv = uv;",
25
+ "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",
26
+
27
+ "}"
28
+
29
+ ].join("\n"),
30
+
31
+ fragmentShader: [
32
+
33
+ "uniform float opacity;",
34
+
35
+ "uniform sampler2D tDiffuse;",
36
+
37
+ "varying vec2 vUv;",
38
+
39
+ "void main() {",
40
+
41
+ "vec4 base = texture2D( tDiffuse, vUv );",
42
+
43
+ "vec3 lumCoeff = vec3( 0.25, 0.65, 0.1 );",
44
+ "float lum = dot( lumCoeff, base.rgb );",
45
+ "vec3 blend = vec3( lum );",
46
+
47
+ "float L = min( 1.0, max( 0.0, 10.0 * ( lum - 0.45 ) ) );",
48
+
49
+ "vec3 result1 = 2.0 * base.rgb * blend;",
50
+ "vec3 result2 = 1.0 - 2.0 * ( 1.0 - blend ) * ( 1.0 - base.rgb );",
51
+
52
+ "vec3 newColor = mix( result1, result2, L );",
53
+
54
+ "float A2 = opacity * base.a;",
55
+ "vec3 mixRGB = A2 * newColor.rgb;",
56
+ "mixRGB += ( ( 1.0 - A2 ) * base.rgb );",
57
+
58
+ "gl_FragColor = vec4( mixRGB, base.a );",
59
+
60
+ "}"
61
+
62
+ ].join("\n")
63
+
64
+ };
@@ -0,0 +1,116 @@
1
+ /**
2
+ * @author alteredq / http://alteredqualia.com/
3
+ */
4
+
5
+ THREE.BloomPass = function ( strength, kernelSize, sigma, resolution ) {
6
+
7
+ THREE.Pass.call( this );
8
+
9
+ strength = ( strength !== undefined ) ? strength : 1;
10
+ kernelSize = ( kernelSize !== undefined ) ? kernelSize : 25;
11
+ sigma = ( sigma !== undefined ) ? sigma : 4.0;
12
+ resolution = ( resolution !== undefined ) ? resolution : 256;
13
+
14
+ // render targets
15
+
16
+ var pars = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter, format: THREE.RGBAFormat };
17
+
18
+ this.renderTargetX = new THREE.WebGLRenderTarget( resolution, resolution, pars );
19
+ this.renderTargetY = new THREE.WebGLRenderTarget( resolution, resolution, pars );
20
+
21
+ // copy material
22
+
23
+ if ( THREE.CopyShader === undefined )
24
+ console.error( "THREE.BloomPass relies on THREE.CopyShader" );
25
+
26
+ var copyShader = THREE.CopyShader;
27
+
28
+ this.copyUniforms = THREE.UniformsUtils.clone( copyShader.uniforms );
29
+
30
+ this.copyUniforms[ "opacity" ].value = strength;
31
+
32
+ this.materialCopy = new THREE.ShaderMaterial( {
33
+
34
+ uniforms: this.copyUniforms,
35
+ vertexShader: copyShader.vertexShader,
36
+ fragmentShader: copyShader.fragmentShader,
37
+ blending: THREE.AdditiveBlending,
38
+ transparent: true
39
+
40
+ } );
41
+
42
+ // convolution material
43
+
44
+ if ( THREE.ConvolutionShader === undefined )
45
+ console.error( "THREE.BloomPass relies on THREE.ConvolutionShader" );
46
+
47
+ var convolutionShader = THREE.ConvolutionShader;
48
+
49
+ this.convolutionUniforms = THREE.UniformsUtils.clone( convolutionShader.uniforms );
50
+
51
+ this.convolutionUniforms[ "uImageIncrement" ].value = THREE.BloomPass.blurX;
52
+ this.convolutionUniforms[ "cKernel" ].value = THREE.ConvolutionShader.buildKernel( sigma );
53
+
54
+ this.materialConvolution = new THREE.ShaderMaterial( {
55
+
56
+ uniforms: this.convolutionUniforms,
57
+ vertexShader: convolutionShader.vertexShader,
58
+ fragmentShader: convolutionShader.fragmentShader,
59
+ defines: {
60
+ "KERNEL_SIZE_FLOAT": kernelSize.toFixed( 1 ),
61
+ "KERNEL_SIZE_INT": kernelSize.toFixed( 0 )
62
+ }
63
+
64
+ } );
65
+
66
+ this.needsSwap = false;
67
+
68
+ this.camera = new THREE.OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );
69
+ this.scene = new THREE.Scene();
70
+
71
+ this.quad = new THREE.Mesh( new THREE.PlaneBufferGeometry( 2, 2 ), null );
72
+ this.scene.add( this.quad );
73
+
74
+ };
75
+
76
+ THREE.BloomPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ), {
77
+
78
+ constructor: THREE.BloomPass,
79
+
80
+ render: function ( renderer, writeBuffer, readBuffer, delta, maskActive ) {
81
+
82
+ if ( maskActive ) renderer.context.disable( renderer.context.STENCIL_TEST );
83
+
84
+ // Render quad with blured scene into texture (convolution pass 1)
85
+
86
+ this.quad.material = this.materialConvolution;
87
+
88
+ this.convolutionUniforms[ "tDiffuse" ].value = readBuffer.texture;
89
+ this.convolutionUniforms[ "uImageIncrement" ].value = THREE.BloomPass.blurX;
90
+
91
+ renderer.render( this.scene, this.camera, this.renderTargetX, true );
92
+
93
+
94
+ // Render quad with blured scene into texture (convolution pass 2)
95
+
96
+ this.convolutionUniforms[ "tDiffuse" ].value = this.renderTargetX.texture;
97
+ this.convolutionUniforms[ "uImageIncrement" ].value = THREE.BloomPass.blurY;
98
+
99
+ renderer.render( this.scene, this.camera, this.renderTargetY, true );
100
+
101
+ // Render original scene with superimposed blur to texture
102
+
103
+ this.quad.material = this.materialCopy;
104
+
105
+ this.copyUniforms[ "tDiffuse" ].value = this.renderTargetY.texture;
106
+
107
+ if ( maskActive ) renderer.context.enable( renderer.context.STENCIL_TEST );
108
+
109
+ renderer.render( this.scene, this.camera, readBuffer, this.clear );
110
+
111
+ }
112
+
113
+ } );
114
+
115
+ THREE.BloomPass.blurX = new THREE.Vector2( 0.001953125, 0.0 );
116
+ THREE.BloomPass.blurY = new THREE.Vector2( 0.0, 0.001953125 );
@@ -0,0 +1,310 @@
1
+ /**
2
+ * Based on http://www.emagix.net/academic/mscs-project/item/camera-sync-with-css3-and-webgl-threejs
3
+ * @author mrdoob / http://mrdoob.com/
4
+ */
5
+
6
+ THREE.CSS3DObject = function ( element ) {
7
+
8
+ THREE.Object3D.call( this );
9
+
10
+ this.element = element;
11
+ this.element.style.position = 'absolute';
12
+
13
+ this.addEventListener( 'removed', function () {
14
+
15
+ if ( this.element.parentNode !== null ) {
16
+
17
+ this.element.parentNode.removeChild( this.element );
18
+
19
+ }
20
+
21
+ } );
22
+
23
+ };
24
+
25
+ THREE.CSS3DObject.prototype = Object.create( THREE.Object3D.prototype );
26
+ THREE.CSS3DObject.prototype.constructor = THREE.CSS3DObject;
27
+
28
+ THREE.CSS3DSprite = function ( element ) {
29
+
30
+ THREE.CSS3DObject.call( this, element );
31
+
32
+ };
33
+
34
+ THREE.CSS3DSprite.prototype = Object.create( THREE.CSS3DObject.prototype );
35
+ THREE.CSS3DSprite.prototype.constructor = THREE.CSS3DSprite;
36
+
37
+ //
38
+
39
+ THREE.CSS3DRenderer = function () {
40
+
41
+ console.log( 'THREE.CSS3DRenderer', THREE.REVISION );
42
+
43
+ var _width, _height;
44
+ var _widthHalf, _heightHalf;
45
+
46
+ var matrix = new THREE.Matrix4();
47
+
48
+ var cache = {
49
+ camera: { fov: 0, style: '' },
50
+ objects: {}
51
+ };
52
+
53
+ var domElement = document.createElement( 'div' );
54
+ domElement.style.overflow = 'hidden';
55
+
56
+ this.domElement = domElement;
57
+
58
+ var cameraElement = document.createElement( 'div' );
59
+
60
+ cameraElement.style.WebkitTransformStyle = 'preserve-3d';
61
+ cameraElement.style.MozTransformStyle = 'preserve-3d';
62
+ cameraElement.style.transformStyle = 'preserve-3d';
63
+
64
+ domElement.appendChild( cameraElement );
65
+
66
+ var isIE = /Trident/i.test( navigator.userAgent );
67
+
68
+ this.setClearColor = function () {};
69
+
70
+ this.getSize = function () {
71
+
72
+ return {
73
+ width: _width,
74
+ height: _height
75
+ };
76
+
77
+ };
78
+
79
+ this.setSize = function ( width, height ) {
80
+
81
+ _width = width;
82
+ _height = height;
83
+ _widthHalf = _width / 2;
84
+ _heightHalf = _height / 2;
85
+
86
+ domElement.style.width = width + 'px';
87
+ domElement.style.height = height + 'px';
88
+
89
+ cameraElement.style.width = width + 'px';
90
+ cameraElement.style.height = height + 'px';
91
+
92
+ };
93
+
94
+ function epsilon( value ) {
95
+
96
+ return Math.abs( value ) < 1e-10 ? 0 : value;
97
+
98
+ }
99
+
100
+ function getCameraCSSMatrix( matrix ) {
101
+
102
+ var elements = matrix.elements;
103
+
104
+ return 'matrix3d(' +
105
+ epsilon( elements[ 0 ] ) + ',' +
106
+ epsilon( - elements[ 1 ] ) + ',' +
107
+ epsilon( elements[ 2 ] ) + ',' +
108
+ epsilon( elements[ 3 ] ) + ',' +
109
+ epsilon( elements[ 4 ] ) + ',' +
110
+ epsilon( - elements[ 5 ] ) + ',' +
111
+ epsilon( elements[ 6 ] ) + ',' +
112
+ epsilon( elements[ 7 ] ) + ',' +
113
+ epsilon( elements[ 8 ] ) + ',' +
114
+ epsilon( - elements[ 9 ] ) + ',' +
115
+ epsilon( elements[ 10 ] ) + ',' +
116
+ epsilon( elements[ 11 ] ) + ',' +
117
+ epsilon( elements[ 12 ] ) + ',' +
118
+ epsilon( - elements[ 13 ] ) + ',' +
119
+ epsilon( elements[ 14 ] ) + ',' +
120
+ epsilon( elements[ 15 ] ) +
121
+ ')';
122
+
123
+ }
124
+
125
+ function getObjectCSSMatrix( matrix, cameraCSSMatrix ) {
126
+
127
+ var elements = matrix.elements;
128
+ var matrix3d = 'matrix3d(' +
129
+ epsilon( elements[ 0 ] ) + ',' +
130
+ epsilon( elements[ 1 ] ) + ',' +
131
+ epsilon( elements[ 2 ] ) + ',' +
132
+ epsilon( elements[ 3 ] ) + ',' +
133
+ epsilon( - elements[ 4 ] ) + ',' +
134
+ epsilon( - elements[ 5 ] ) + ',' +
135
+ epsilon( - elements[ 6 ] ) + ',' +
136
+ epsilon( - elements[ 7 ] ) + ',' +
137
+ epsilon( elements[ 8 ] ) + ',' +
138
+ epsilon( elements[ 9 ] ) + ',' +
139
+ epsilon( elements[ 10 ] ) + ',' +
140
+ epsilon( elements[ 11 ] ) + ',' +
141
+ epsilon( elements[ 12 ] ) + ',' +
142
+ epsilon( elements[ 13 ] ) + ',' +
143
+ epsilon( elements[ 14 ] ) + ',' +
144
+ epsilon( elements[ 15 ] ) +
145
+ ')';
146
+
147
+ if ( isIE ) {
148
+
149
+ return 'translate(-50%,-50%)' +
150
+ 'translate(' + _widthHalf + 'px,' + _heightHalf + 'px)' +
151
+ cameraCSSMatrix +
152
+ matrix3d;
153
+
154
+ }
155
+
156
+ return 'translate(-50%,-50%)' + matrix3d;
157
+
158
+ }
159
+
160
+ function renderObject( object, camera, cameraCSSMatrix ) {
161
+
162
+ if ( object instanceof THREE.CSS3DObject ) {
163
+
164
+ var style;
165
+
166
+ if ( object instanceof THREE.CSS3DSprite ) {
167
+
168
+ // http://swiftcoder.wordpress.com/2008/11/25/constructing-a-billboard-matrix/
169
+
170
+ matrix.copy( camera.matrixWorldInverse );
171
+ matrix.transpose();
172
+ matrix.copyPosition( object.matrixWorld );
173
+ matrix.scale( object.scale );
174
+
175
+ matrix.elements[ 3 ] = 0;
176
+ matrix.elements[ 7 ] = 0;
177
+ matrix.elements[ 11 ] = 0;
178
+ matrix.elements[ 15 ] = 1;
179
+
180
+ style = getObjectCSSMatrix( matrix, cameraCSSMatrix );
181
+
182
+ } else {
183
+
184
+ style = getObjectCSSMatrix( object.matrixWorld, cameraCSSMatrix );
185
+
186
+ }
187
+
188
+ var element = object.element;
189
+ var cachedStyle = cache.objects[ object.id ] && cache.objects[ object.id ].style;
190
+
191
+ if ( cachedStyle === undefined || cachedStyle !== style ) {
192
+
193
+ element.style.WebkitTransform = style;
194
+ element.style.MozTransform = style;
195
+ element.style.transform = style;
196
+
197
+ cache.objects[ object.id ] = { style: style };
198
+
199
+ if ( isIE ) {
200
+
201
+ cache.objects[ object.id ].distanceToCameraSquared = getDistanceToSquared( camera, object );
202
+
203
+ }
204
+
205
+ }
206
+
207
+ if ( element.parentNode !== cameraElement ) {
208
+
209
+ cameraElement.appendChild( element );
210
+
211
+ }
212
+
213
+ }
214
+
215
+ for ( var i = 0, l = object.children.length; i < l; i ++ ) {
216
+
217
+ renderObject( object.children[ i ], camera, cameraCSSMatrix );
218
+
219
+ }
220
+
221
+ }
222
+
223
+ var getDistanceToSquared = function () {
224
+
225
+ var a = new THREE.Vector3();
226
+ var b = new THREE.Vector3();
227
+
228
+ return function ( object1, object2 ) {
229
+
230
+ a.setFromMatrixPosition( object1.matrixWorld );
231
+ b.setFromMatrixPosition( object2.matrixWorld );
232
+
233
+ return a.distanceToSquared( b );
234
+
235
+ };
236
+
237
+ }();
238
+
239
+ function zOrder( scene ) {
240
+
241
+ var order = Object.keys( cache.objects ).sort( function ( a, b ) {
242
+
243
+ return cache.objects[ a ].distanceToCameraSquared - cache.objects[ b ].distanceToCameraSquared;
244
+
245
+ } );
246
+ var zMax = order.length;
247
+
248
+ scene.traverse( function ( object ) {
249
+
250
+ var index = order.indexOf( object.id + '' );
251
+
252
+ if ( index !== - 1 ) {
253
+
254
+ object.element.style.zIndex = zMax - index;
255
+
256
+ }
257
+
258
+ } );
259
+
260
+ }
261
+
262
+ this.render = function ( scene, camera ) {
263
+
264
+ var fov = 0.5 / Math.tan( THREE.Math.degToRad( camera.getEffectiveFOV() * 0.5 ) ) * _height;
265
+
266
+ if ( cache.camera.fov !== fov ) {
267
+
268
+ domElement.style.WebkitPerspective = fov + 'px';
269
+ domElement.style.MozPerspective = fov + 'px';
270
+ domElement.style.perspective = fov + 'px';
271
+
272
+ cache.camera.fov = fov;
273
+
274
+ }
275
+
276
+ scene.updateMatrixWorld();
277
+
278
+ if ( camera.parent === null ) camera.updateMatrixWorld();
279
+
280
+ var cameraCSSMatrix = 'translateZ(' + fov + 'px)' +
281
+ getCameraCSSMatrix( camera.matrixWorldInverse );
282
+
283
+ var style = cameraCSSMatrix +
284
+ 'translate(' + _widthHalf + 'px,' + _heightHalf + 'px)';
285
+
286
+ if ( cache.camera.style !== style && ! isIE ) {
287
+
288
+ cameraElement.style.WebkitTransform = style;
289
+ cameraElement.style.MozTransform = style;
290
+ cameraElement.style.transform = style;
291
+
292
+ cache.camera.style = style;
293
+
294
+ }
295
+
296
+ renderObject( scene, camera, cameraCSSMatrix );
297
+
298
+ if ( isIE ) {
299
+
300
+ // IE10 and 11 does not support 'preserve-3d'.
301
+ // Thus, z-order in 3D will not work.
302
+ // We have to calc z-order manually and set CSS z-index for IE.
303
+ // FYI: z-index can't handle object intersection
304
+ zOrder( scene );
305
+
306
+ }
307
+
308
+ };
309
+
310
+ };
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @author mrdoob / http://mrdoob.com/
3
+ */
4
+
5
+ THREE.ClearPass = function ( clearColor, clearAlpha ) {
6
+
7
+ THREE.Pass.call( this );
8
+
9
+ this.needsSwap = false;
10
+
11
+ this.clearColor = ( clearColor !== undefined ) ? clearColor : 0x000000;
12
+ this.clearAlpha = ( clearAlpha !== undefined ) ? clearAlpha : 0;
13
+
14
+ };
15
+
16
+ THREE.ClearPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ), {
17
+
18
+ constructor: THREE.ClearPass,
19
+
20
+ render: function ( renderer, writeBuffer, readBuffer, delta, maskActive ) {
21
+
22
+ var oldClearColor, oldClearAlpha;
23
+
24
+ if ( this.clearColor ) {
25
+
26
+ oldClearColor = renderer.getClearColor().getHex();
27
+ oldClearAlpha = renderer.getClearAlpha();
28
+
29
+ renderer.setClearColor( this.clearColor, this.clearAlpha );
30
+
31
+ }
32
+
33
+ renderer.setRenderTarget( this.renderToScreen ? null : readBuffer );
34
+ renderer.clear();
35
+
36
+ if ( this.clearColor ) {
37
+
38
+ renderer.setClearColor( oldClearColor, oldClearAlpha );
39
+
40
+ }
41
+
42
+ }
43
+
44
+ } );
@@ -0,0 +1,101 @@
1
+ /**
2
+ * @author alteredq / http://alteredqualia.com/
3
+ *
4
+ * Convolution shader
5
+ * ported from o3d sample to WebGL / GLSL
6
+ * http://o3d.googlecode.com/svn/trunk/samples/convolution.html
7
+ */
8
+
9
+ THREE.ConvolutionShader = {
10
+
11
+ defines: {
12
+
13
+ "KERNEL_SIZE_FLOAT": "25.0",
14
+ "KERNEL_SIZE_INT": "25",
15
+
16
+ },
17
+
18
+ uniforms: {
19
+
20
+ "tDiffuse": { type: "t", value: null },
21
+ "uImageIncrement": { type: "v2", value: new THREE.Vector2( 0.001953125, 0.0 ) },
22
+ "cKernel": { type: "fv1", value: [] }
23
+
24
+ },
25
+
26
+ vertexShader: [
27
+
28
+ "uniform vec2 uImageIncrement;",
29
+
30
+ "varying vec2 vUv;",
31
+
32
+ "void main() {",
33
+
34
+ "vUv = uv - ( ( KERNEL_SIZE_FLOAT - 1.0 ) / 2.0 ) * uImageIncrement;",
35
+ "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",
36
+
37
+ "}"
38
+
39
+ ].join("\n"),
40
+
41
+ fragmentShader: [
42
+
43
+ "uniform float cKernel[ KERNEL_SIZE_INT ];",
44
+
45
+ "uniform sampler2D tDiffuse;",
46
+ "uniform vec2 uImageIncrement;",
47
+
48
+ "varying vec2 vUv;",
49
+
50
+ "void main() {",
51
+
52
+ "vec2 imageCoord = vUv;",
53
+ "vec4 sum = vec4( 0.0, 0.0, 0.0, 0.0 );",
54
+
55
+ "for( int i = 0; i < KERNEL_SIZE_INT; i ++ ) {",
56
+
57
+ "sum += texture2D( tDiffuse, imageCoord ) * cKernel[ i ];",
58
+ "imageCoord += uImageIncrement;",
59
+
60
+ "}",
61
+
62
+ "gl_FragColor = sum;",
63
+
64
+ "}"
65
+
66
+
67
+ ].join("\n"),
68
+
69
+ buildKernel: function ( sigma ) {
70
+
71
+ // We lop off the sqrt(2 * pi) * sigma term, since we're going to normalize anyway.
72
+
73
+ function gauss( x, sigma ) {
74
+
75
+ return Math.exp( - ( x * x ) / ( 2.0 * sigma * sigma ) );
76
+
77
+ }
78
+
79
+ var i, values, sum, halfWidth, kMaxKernelSize = 25, kernelSize = 2 * Math.ceil( sigma * 3.0 ) + 1;
80
+
81
+ if ( kernelSize > kMaxKernelSize ) kernelSize = kMaxKernelSize;
82
+ halfWidth = ( kernelSize - 1 ) * 0.5;
83
+
84
+ values = new Array( kernelSize );
85
+ sum = 0.0;
86
+ for ( i = 0; i < kernelSize; ++i ) {
87
+
88
+ values[ i ] = gauss( i - halfWidth, sigma );
89
+ sum += values[ i ];
90
+
91
+ }
92
+
93
+ // normalize the kernel
94
+
95
+ for ( i = 0; i < kernelSize; ++i ) values[ i ] /= sum;
96
+
97
+ return values;
98
+
99
+ }
100
+
101
+ };
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @author alteredq / http://alteredqualia.com/
3
+ *
4
+ * Full-screen textured quad shader
5
+ */
6
+
7
+ THREE.CopyShader = {
8
+
9
+ uniforms: {
10
+
11
+ "tDiffuse": { type: "t", value: null },
12
+ "opacity": { type: "f", value: 1.0 }
13
+
14
+ },
15
+
16
+ vertexShader: [
17
+
18
+ "varying vec2 vUv;",
19
+
20
+ "void main() {",
21
+
22
+ "vUv = uv;",
23
+ "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",
24
+
25
+ "}"
26
+
27
+ ].join("\n"),
28
+
29
+ fragmentShader: [
30
+
31
+ "uniform float opacity;",
32
+
33
+ "uniform sampler2D tDiffuse;",
34
+
35
+ "varying vec2 vUv;",
36
+
37
+ "void main() {",
38
+
39
+ "vec4 texel = texture2D( tDiffuse, vUv );",
40
+ "gl_FragColor = opacity * texel;",
41
+
42
+ "}"
43
+
44
+ ].join("\n")
45
+
46
+ };