9797 * @param {WebGLRenderer } renderer The renderer
9898 */
9999
100- THREE . GPUComputationRenderer = function ( sizeX , sizeY , renderer ) {
100+ THREE . GPUComputationRenderer = function ( sizeX , sizeY , renderer ) {
101101
102102 this . variables = [ ] ;
103103
@@ -109,7 +109,7 @@ THREE.GPUComputationRenderer = function( sizeX, sizeY, renderer ) {
109109 camera . position . z = 1 ;
110110
111111 var passThruUniforms = {
112- texture : { value : null }
112+ passThruTexture : { value : null }
113113 } ;
114114
115115 var passThruShader = createShaderMaterial ( getPassThroughFragmentShader ( ) , passThruUniforms ) ;
@@ -118,7 +118,7 @@ THREE.GPUComputationRenderer = function( sizeX, sizeY, renderer ) {
118118 scene . add ( mesh ) ;
119119
120120
121- this . addVariable = function ( variableName , computeFragmentShader , initialValueTexture ) {
121+ this . addVariable = function ( variableName , computeFragmentShader , initialValueTexture ) {
122122
123123 var material = this . createShaderMaterial ( computeFragmentShader ) ;
124124
@@ -140,15 +140,16 @@ THREE.GPUComputationRenderer = function( sizeX, sizeY, renderer ) {
140140
141141 } ;
142142
143- this . setVariableDependencies = function ( variable , dependencies ) {
143+ this . setVariableDependencies = function ( variable , dependencies ) {
144144
145145 variable . dependencies = dependencies ;
146146
147147 } ;
148148
149- this . init = function ( ) {
149+ this . init = function ( ) {
150150
151- if ( ! renderer . extensions . get ( "OES_texture_float" ) ) {
151+ if ( ! renderer . extensions . get ( "OES_texture_float" ) &&
152+ ! renderer . capabilities . isWebGL2 ) {
152153
153154 return "No OES_texture_float support for float textures." ;
154155
@@ -160,7 +161,7 @@ THREE.GPUComputationRenderer = function( sizeX, sizeY, renderer ) {
160161
161162 }
162163
163- for ( var i = 0 ; i < this . variables . length ; i ++ ) {
164+ for ( var i = 0 ; i < this . variables . length ; i ++ ) {
164165
165166 var variable = this . variables [ i ] ;
166167
@@ -175,24 +176,28 @@ THREE.GPUComputationRenderer = function( sizeX, sizeY, renderer ) {
175176 var uniforms = material . uniforms ;
176177 if ( variable . dependencies !== null ) {
177178
178- for ( var d = 0 ; d < variable . dependencies . length ; d ++ ) {
179+ for ( var d = 0 ; d < variable . dependencies . length ; d ++ ) {
179180
180181 var depVar = variable . dependencies [ d ] ;
181182
182183 if ( depVar . name !== variable . name ) {
183184
184185 // Checks if variable exists
185186 var found = false ;
186- for ( var j = 0 ; j < this . variables . length ; j ++ ) {
187+ for ( var j = 0 ; j < this . variables . length ; j ++ ) {
187188
188189 if ( depVar . name === this . variables [ j ] . name ) {
190+
189191 found = true ;
190192 break ;
193+
191194 }
192195
193196 }
194197 if ( ! found ) {
198+
195199 return "Variable dependency not found. Variable=" + variable . name + ", dependency=" + depVar . name ;
200+
196201 }
197202
198203 }
@@ -202,7 +207,9 @@ THREE.GPUComputationRenderer = function( sizeX, sizeY, renderer ) {
202207 material . fragmentShader = "\nuniform sampler2D " + depVar . name + ";\n" + material . fragmentShader ;
203208
204209 }
210+
205211 }
212+
206213 }
207214
208215 this . currentTextureIndex = 0 ;
@@ -211,20 +218,20 @@ THREE.GPUComputationRenderer = function( sizeX, sizeY, renderer ) {
211218
212219 } ;
213220
214- this . compute = function ( ) {
221+ this . compute = function ( ) {
215222
216223 var currentTextureIndex = this . currentTextureIndex ;
217224 var nextTextureIndex = this . currentTextureIndex === 0 ? 1 : 0 ;
218225
219- for ( var i = 0 , il = this . variables . length ; i < il ; i ++ ) {
226+ for ( var i = 0 , il = this . variables . length ; i < il ; i ++ ) {
220227
221228 var variable = this . variables [ i ] ;
222229
223230 // Sets texture dependencies uniforms
224231 if ( variable . dependencies !== null ) {
225232
226233 var uniforms = variable . material . uniforms ;
227- for ( var d = 0 , dl = variable . dependencies . length ; d < dl ; d ++ ) {
234+ for ( var d = 0 , dl = variable . dependencies . length ; d < dl ; d ++ ) {
228235
229236 var depVar = variable . dependencies [ d ] ;
230237
@@ -240,15 +247,16 @@ THREE.GPUComputationRenderer = function( sizeX, sizeY, renderer ) {
240247 }
241248
242249 this . currentTextureIndex = nextTextureIndex ;
250+
243251 } ;
244252
245- this . getCurrentRenderTarget = function ( variable ) {
253+ this . getCurrentRenderTarget = function ( variable ) {
246254
247255 return variable . renderTargets [ this . currentTextureIndex ] ;
248256
249257 } ;
250258
251- this . getAlternateRenderTarget = function ( variable ) {
259+ this . getAlternateRenderTarget = function ( variable ) {
252260
253261 return variable . renderTargets [ this . currentTextureIndex === 0 ? 1 : 0 ] ;
254262
@@ -282,7 +290,7 @@ THREE.GPUComputationRenderer = function( sizeX, sizeY, renderer ) {
282290
283291 this . createShaderMaterial = createShaderMaterial ;
284292
285- this . createRenderTarget = function ( sizeXTexture , sizeYTexture , wrapS , wrapT , minFilter , magFilter ) {
293+ this . createRenderTarget = function ( sizeXTexture , sizeYTexture , wrapS , wrapT , minFilter , magFilter ) {
286294
287295 sizeXTexture = sizeXTexture || sizeX ;
288296 sizeYTexture = sizeYTexture || sizeY ;
@@ -308,7 +316,7 @@ THREE.GPUComputationRenderer = function( sizeX, sizeY, renderer ) {
308316
309317 } ;
310318
311- this . createTexture = function ( ) {
319+ this . createTexture = function ( ) {
312320
313321 var a = new Float32Array ( sizeX * sizeY * 4 ) ;
314322 var texture = new THREE . DataTexture ( a , sizeX , sizeY , THREE . RGBAFormat , THREE . FloatType ) ;
@@ -318,21 +326,21 @@ THREE.GPUComputationRenderer = function( sizeX, sizeY, renderer ) {
318326
319327 } ;
320328
321- this . renderTexture = function ( input , output ) {
329+ this . renderTexture = function ( input , output ) {
322330
323331 // Takes a texture, and render out in rendertarget
324332 // input = Texture
325333 // output = RenderTarget
326334
327- passThruUniforms . texture . value = input ;
335+ passThruUniforms . passThruTexture . value = input ;
328336
329- this . doRenderTarget ( passThruShader , output ) ;
337+ this . doRenderTarget ( passThruShader , output ) ;
330338
331- passThruUniforms . texture . value = null ;
339+ passThruUniforms . passThruTexture . value = null ;
332340
333341 } ;
334342
335- this . doRenderTarget = function ( material , output ) {
343+ this . doRenderTarget = function ( material , output ) {
336344
337345 var currentRenderTarget = renderer . getRenderTarget ( ) ;
338346
@@ -359,13 +367,13 @@ THREE.GPUComputationRenderer = function( sizeX, sizeY, renderer ) {
359367
360368 function getPassThroughFragmentShader ( ) {
361369
362- return "uniform sampler2D texture ;\n" +
370+ return "uniform sampler2D passThruTexture ;\n" +
363371 "\n" +
364372 "void main() {\n" +
365373 "\n" +
366374 " vec2 uv = gl_FragCoord.xy / resolution.xy;\n" +
367375 "\n" +
368- " gl_FragColor = texture2D( texture , uv );\n" +
376+ " gl_FragColor = texture2D( passThruTexture , uv );\n" +
369377 "\n" +
370378 "}\n" ;
371379
0 commit comments