1
我想在我的THREE.EffectComposer
结合SMAA和SSAO这样的:three.js所:结合SMAA和SSAO后处理
this.composer = new THREE.EffectComposer(this.renderer);
// Setup depth pass
depthMaterial = new THREE.MeshDepthMaterial();
depthMaterial.depthPacking = THREE.RGBADepthPacking;
depthMaterial.blending = THREE.NoBlending;
var pars = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter };
depthRenderTarget = new THREE.WebGLRenderTarget(window.innerWidth, window.innerHeight, pars);
// Setup SSAO pass
ssaoPass = new THREE.ShaderPass(THREE.SSAOShader);
ssaoPass.renderToScreen = true;
ssaoPass.uniforms[ "tDepth" ].value = depthRenderTarget.texture;
ssaoPass.uniforms[ 'size' ].value.set(window.innerWidth, window.innerHeight);
ssaoPass.uniforms[ 'cameraNear' ].value = this.camera.near;
ssaoPass.uniforms[ 'cameraFar' ].value = this.camera.far;
ssaoPass.uniforms[ 'onlyAO' ].value = false;
ssaoPass.uniforms[ 'aoClamp' ].value = .3;
ssaoPass.uniforms[ 'lumInfluence' ].value = 1;
this.ssaoPass = ssaoPass;
this.depthRenderTarget = depthRenderTarget;
smaapass = new THREE.SMAAPass(window.innerWidth, window.innerHeight);
smaapass.renderToScreen = true;
this.composer.addPass(new THREE.RenderPass(this.scene, this.camera));
this.composer.addPass(ssaoPass);
this.composer.addPass(smaapass);
但不幸的是被应用于仅smaapass。 我也尝试颠倒composer.addPass
的顺序,但没有成功。 我在哪里做错了?谢谢!
感谢您的回答,但它似乎并没有工作...如果例如我设置'ssaoPass.uniforms ['onlyAO'] .value = true;'我应该只看到环境遮挡,但我仍然看到图像没有一个。如果我注释掉'this.composer.addPass(smaapass);'然后我只看到ao,但当然没有反锯齿 – lviggiani
好吧,我通过设置'ssaoPass.renderToScreen = false;' – lviggiani
很高兴你找到了你的答案any祝你好运!) –