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
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;
|
|
})();
|