后处理通道解析
Pass
可以看到pass最核心的部分如下,创建一个平铺屏幕的平面作为RTT最终效果呈现的载体,再创建一个正交相机作为观察相机。
THREE.Pass.FullScreenQuad = ( function () {
var camera = new THREE.OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );
var geometry = new THREE.PlaneBufferGeometry( 2, 2 );
var FullScreenQuad = function ( material ) {
this._mesh = new THREE.Mesh( geometry, material );
};
Object.defineProperty( FullScreenQuad.prototype, 'material', {
get: function () {
return this._mesh.material;
},
set: function ( value ) {
this._mesh.material = value;
}
} );
Object.assign( FullScreenQuad.prototype, {
dispose: function () {
this._mesh.geometry.dispose();
},
render: function ( renderer ) {
renderer.render( this._mesh, camera );
}
} );
return FullScreenQuad;
} )();
ShaderPass
主要是接受了传入的着色器程序和uniforms参数,并且设置渲染目标缓冲区
RenderPass
这个通道会渲染场景,但不会讲渲染结果输出到屏幕上。一般作为第一个起始通道