物管理前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

53 lines
1.5 KiB

(function () {
class ShaderPass extends THREE.Pass {
constructor(shader, textureID) {
super();
this.textureID = textureID !== undefined ? textureID : "tDiffuse";
if (shader instanceof THREE.ShaderMaterial) {
this.uniforms = shader.uniforms;
this.material = shader;
} else if (shader) {
this.uniforms = THREE.UniformsUtils.clone(shader.uniforms);
this.material = new THREE.ShaderMaterial({
defines: Object.assign({}, shader.defines),
uniforms: this.uniforms,
vertexShader: shader.vertexShader,
fragmentShader: shader.fragmentShader
});
}
this.fsQuad = new THREE.FullScreenQuad(this.material);
}
render(
renderer,
writeBuffer,
readBuffer
/*, deltaTime, maskActive */
) {
if (this.uniforms[this.textureID]) {
this.uniforms[this.textureID].value = readBuffer.texture;
}
this.fsQuad.material = this.material;
if (this.renderToScreen) {
renderer.setRenderTarget(null);
this.fsQuad.render(renderer);
} else {
renderer.setRenderTarget(writeBuffer); // TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600
if (this.clear)
renderer.clear(
renderer.autoClearColor,
renderer.autoClearDepth,
renderer.autoClearStencil
);
this.fsQuad.render(renderer);
}
}
}
THREE.ShaderPass = ShaderPass;
})();