SMAAPass constructor
SMAAPass()
Implementation
SMAAPass() : super() {
// render targets
this.edgesRT = new RenderTarget( 1, 1,
RenderTargetOptions({
"depthBuffer": false,
'type': HalfFloatType
})
);
this.edgesRT.texture.name = 'SMAAPass.edges';
this.weightsRT = new RenderTarget( 1, 1,
RenderTargetOptions({
"depthBuffer": false,
'type': HalfFloatType
})
);
this.weightsRT.texture.name = 'SMAAPass.weights';
// final areaTextureImage = ImageElement(
// data: Uint8List.fromList(base64Decode(this.getAreaTexture().split(',').last)),
// width: 256,
// height: 256
// );
this.areaTexture = new Texture();
this.areaTexture.name = 'SMAAPass.area';
//this.areaTexture.image = areaTextureImage;
this.areaTexture.minFilter = LinearFilter;
this.areaTexture.generateMipmaps = false;
this.areaTexture.flipY = false;
this.areaTexture.needsUpdate = true;
final searchTextureImage = ImageElement(
data: Uint8List.fromList(base64Decode(this.getSearchTexture().split(',').last)),
width: 256,
height: 256
);
this.searchTexture = new Texture();
this.searchTexture.name = 'SMAAPass.search';
this.searchTexture.image = searchTextureImage;
this.searchTexture.magFilter = NearestFilter;
this.searchTexture.minFilter = NearestFilter;
this.searchTexture.generateMipmaps = false;
this.searchTexture.flipY = false;
this.searchTexture.needsUpdate = true;
// materials - pass 1
this.uniformsEdges = UniformsUtils.clone( smaaEdgesShader['uniforms'] );
this.materialEdges = ShaderMaterial.fromMap( {
'defines': smaaEdgesShader['defines'],
'uniforms': this.uniformsEdges,
'vertexShader': smaaEdgesShader['vertexShader'],
'fragmentShader': smaaEdgesShader['fragmentShader']
} );
// materials - pass 2
this.uniformsWeights = UniformsUtils.clone( smaaWeightsShader['uniforms'] );
this.uniformsWeights[ 'tDiffuse' ]['value'] = this.edgesRT.texture;
this.uniformsWeights[ 'tArea' ]['value'] = this.areaTexture;
this.uniformsWeights[ 'tSearch' ]['value'] = this.searchTexture;
this.materialWeights = ShaderMaterial.fromMap( {
'defines': smaaWeightsShader['defines'],
'uniforms': this.uniformsWeights,
'vertexShader': smaaWeightsShader['vertexShader'],
'fragmentShader': smaaWeightsShader['fragmentShader']
} );
// materials - pass 3
this.uniformsBlend = UniformsUtils.clone( smaaBlendShader['uniforms'] );
this.uniformsBlend[ 'tDiffuse' ]['value'] = this.weightsRT.texture;
this.materialBlend = new ShaderMaterial.fromMap( {
'uniforms': this.uniformsBlend,
'vertexShader': smaaBlendShader['vertexShader'],
'fragmentShader': smaaBlendShader['fragmentShader']
} );
this.fsQuad = new FullScreenQuad();
}