|
@@ -112,7 +112,7 @@ import {
|
|
|
WebGLRenderTarget
|
|
|
} from "../../../build/three.module.js";
|
|
|
|
|
|
-var GPUComputationRenderer = function( sizeX, sizeY, renderer ) {
|
|
|
+var GPUComputationRenderer = function ( sizeX, sizeY, renderer ) {
|
|
|
|
|
|
this.variables = [];
|
|
|
|
|
@@ -133,7 +133,7 @@ var GPUComputationRenderer = function( sizeX, sizeY, renderer ) {
|
|
|
scene.add( mesh );
|
|
|
|
|
|
|
|
|
- this.addVariable = function( variableName, computeFragmentShader, initialValueTexture ) {
|
|
|
+ this.addVariable = function ( variableName, computeFragmentShader, initialValueTexture ) {
|
|
|
|
|
|
var material = this.createShaderMaterial( computeFragmentShader );
|
|
|
|
|
@@ -155,13 +155,13 @@ var GPUComputationRenderer = function( sizeX, sizeY, renderer ) {
|
|
|
|
|
|
};
|
|
|
|
|
|
- this.setVariableDependencies = function( variable, dependencies ) {
|
|
|
+ this.setVariableDependencies = function ( variable, dependencies ) {
|
|
|
|
|
|
variable.dependencies = dependencies;
|
|
|
|
|
|
};
|
|
|
|
|
|
- this.init = function() {
|
|
|
+ this.init = function () {
|
|
|
|
|
|
if ( ! renderer.extensions.get( "OES_texture_float" ) ) {
|
|
|
|
|
@@ -175,7 +175,7 @@ var GPUComputationRenderer = function( sizeX, sizeY, renderer ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
- for ( var i = 0; i < this.variables.length; i++ ) {
|
|
|
+ for ( var i = 0; i < this.variables.length; i ++ ) {
|
|
|
|
|
|
var variable = this.variables[ i ];
|
|
|
|
|
@@ -190,7 +190,7 @@ var GPUComputationRenderer = function( sizeX, sizeY, renderer ) {
|
|
|
var uniforms = material.uniforms;
|
|
|
if ( variable.dependencies !== null ) {
|
|
|
|
|
|
- for ( var d = 0; d < variable.dependencies.length; d++ ) {
|
|
|
+ for ( var d = 0; d < variable.dependencies.length; d ++ ) {
|
|
|
|
|
|
var depVar = variable.dependencies[ d ];
|
|
|
|
|
@@ -198,16 +198,21 @@ var GPUComputationRenderer = function( sizeX, sizeY, renderer ) {
|
|
|
|
|
|
// Checks if variable exists
|
|
|
var found = false;
|
|
|
- for ( var j = 0; j < this.variables.length; j++ ) {
|
|
|
+ for ( var j = 0; j < this.variables.length; j ++ ) {
|
|
|
|
|
|
if ( depVar.name === this.variables[ j ].name ) {
|
|
|
+
|
|
|
found = true;
|
|
|
break;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+
|
|
|
if ( ! found ) {
|
|
|
+
|
|
|
return "Variable dependency not found. Variable=" + variable.name + ", dependency=" + depVar.name;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -217,7 +222,9 @@ var GPUComputationRenderer = function( sizeX, sizeY, renderer ) {
|
|
|
material.fragmentShader = "\nuniform sampler2D " + depVar.name + ";\n" + material.fragmentShader;
|
|
|
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
this.currentTextureIndex = 0;
|
|
@@ -226,12 +233,12 @@ var GPUComputationRenderer = function( sizeX, sizeY, renderer ) {
|
|
|
|
|
|
};
|
|
|
|
|
|
- this.compute = function() {
|
|
|
+ this.compute = function () {
|
|
|
|
|
|
var currentTextureIndex = this.currentTextureIndex;
|
|
|
var nextTextureIndex = this.currentTextureIndex === 0 ? 1 : 0;
|
|
|
|
|
|
- for ( var i = 0, il = this.variables.length; i < il; i++ ) {
|
|
|
+ for ( var i = 0, il = this.variables.length; i < il; i ++ ) {
|
|
|
|
|
|
var variable = this.variables[ i ];
|
|
|
|
|
@@ -239,7 +246,7 @@ var GPUComputationRenderer = function( sizeX, sizeY, renderer ) {
|
|
|
if ( variable.dependencies !== null ) {
|
|
|
|
|
|
var uniforms = variable.material.uniforms;
|
|
|
- for ( var d = 0, dl = variable.dependencies.length; d < dl; d++ ) {
|
|
|
+ for ( var d = 0, dl = variable.dependencies.length; d < dl; d ++ ) {
|
|
|
|
|
|
var depVar = variable.dependencies[ d ];
|
|
|
|
|
@@ -255,15 +262,16 @@ var GPUComputationRenderer = function( sizeX, sizeY, renderer ) {
|
|
|
}
|
|
|
|
|
|
this.currentTextureIndex = nextTextureIndex;
|
|
|
+
|
|
|
};
|
|
|
|
|
|
- this.getCurrentRenderTarget = function( variable ) {
|
|
|
+ this.getCurrentRenderTarget = function ( variable ) {
|
|
|
|
|
|
return variable.renderTargets[ this.currentTextureIndex ];
|
|
|
|
|
|
};
|
|
|
|
|
|
- this.getAlternateRenderTarget = function( variable ) {
|
|
|
+ this.getAlternateRenderTarget = function ( variable ) {
|
|
|
|
|
|
return variable.renderTargets[ this.currentTextureIndex === 0 ? 1 : 0 ];
|
|
|
|
|
@@ -297,7 +305,7 @@ var GPUComputationRenderer = function( sizeX, sizeY, renderer ) {
|
|
|
|
|
|
this.createShaderMaterial = createShaderMaterial;
|
|
|
|
|
|
- this.createRenderTarget = function( sizeXTexture, sizeYTexture, wrapS, wrapT, minFilter, magFilter ) {
|
|
|
+ this.createRenderTarget = function ( sizeXTexture, sizeYTexture, wrapS, wrapT, minFilter, magFilter ) {
|
|
|
|
|
|
sizeXTexture = sizeXTexture || sizeX;
|
|
|
sizeYTexture = sizeYTexture || sizeY;
|
|
@@ -323,7 +331,7 @@ var GPUComputationRenderer = function( sizeX, sizeY, renderer ) {
|
|
|
|
|
|
};
|
|
|
|
|
|
- this.createTexture = function() {
|
|
|
+ this.createTexture = function () {
|
|
|
|
|
|
var a = new Float32Array( sizeX * sizeY * 4 );
|
|
|
var texture = new DataTexture( a, sizeX, sizeY, RGBAFormat, FloatType );
|
|
@@ -333,7 +341,7 @@ var GPUComputationRenderer = function( sizeX, sizeY, renderer ) {
|
|
|
|
|
|
};
|
|
|
|
|
|
- this.renderTexture = function( input, output ) {
|
|
|
+ this.renderTexture = function ( input, output ) {
|
|
|
|
|
|
// Takes a texture, and render out in rendertarget
|
|
|
// input = Texture
|
|
@@ -341,13 +349,13 @@ var GPUComputationRenderer = function( sizeX, sizeY, renderer ) {
|
|
|
|
|
|
passThruUniforms.texture.value = input;
|
|
|
|
|
|
- this.doRenderTarget( passThruShader, output);
|
|
|
+ this.doRenderTarget( passThruShader, output );
|
|
|
|
|
|
passThruUniforms.texture.value = null;
|
|
|
|
|
|
};
|
|
|
|
|
|
- this.doRenderTarget = function( material, output ) {
|
|
|
+ this.doRenderTarget = function ( material, output ) {
|
|
|
|
|
|
var currentRenderTarget = renderer.getRenderTarget();
|
|
|
|