three.js - 如何在不清除以前的渲染通道的情况下应用后处理 EffectComposer 渲染通道?
问题描述
在three.js 中,背景中有一个红色平面,前景中有一个旋转的白色立方体。我试图TAARenderPass
在保持背景平面不变的情况下向多维数据集添加一个。但是,添加TAARenderPass
(以及BokehPass
、SAOPass
和其他常见的后处理效果)会清除其后面的所有内容,红色平面也会消失。
我在这里挖掘了类似的问题并尝试了renderer.setClearColor( 0x000000, 0 )
,renderer.autoClear = false
和renderer.autoClearColor = false
. 现在一切都是这样设置的:
renderer = new THREE.WebGLRenderer( { alpha: true, antialias: true } );
renderer.setPixelRatio( window.devicePixelRatio );
renderer.setSize( window.innerWidth, window.innerHeight );
renderer.setClearColor( 0x000000, 0 );
document.body.appendChild( renderer.domElement );
// EffectComposer
const params = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter, format: THREE.RGBAFormat, stencilBuffer: false };
const renderTarget = new THREE.WebGLRenderTarget( window.innerWidth, window.innerHeight, params );
effectComposer = new THREE.EffectComposer( renderer , renderTarget );
effectComposer.setSize( window.innerWidth, window.innerHeight );
// Render Passes
const renderPassBg = new THREE.RenderPass( sceneBg , camera );
const renderPassFg = new THREE.RenderPass( sceneFg , camera );
renderPassFg.clear = false;
const taaRenderPass = new THREE.TAARenderPass( sceneFg, camera );
taaRenderPass.clear = false;
const copyPass = new THREE.ShaderPass( THREE.CopyShader );
copyPass.renderToScreen = true;
effectComposer.addPass( renderPassBg );
effectComposer.addPass( renderPassFg );
// effectComposer.addPass( taaRenderPass );
effectComposer.addPass( copyPass );
这里有一个完整的 CodePen 。
effectComposer.addPass( taaRenderPass )
当被注释掉时,一切都按预期工作(减去后处理效果) 。但是当评论被删除时,只有白色立方体呈现。
如何让红色飞机在后面渲染taaRenderPass
?谢谢!
解决方案
您可以尝试在 taa 通行证之前插入一个copyPass
with吗?renderToScreen = false
推荐阅读
- php - TYPO3关于felogin的几个问题
- android - 无法将蓝牙健身追踪器与 google fit sdk 连接
- html - 在嵌套 div 中定义绝对边距
- python - Opencv detectMultiScale错误
- go - 如果我想对分叉的存储库进行更改,却发现我不能因为分叉的包导入自身,该怎么办
- django - 服务器是否在主机“localhost”(127.0.0.1) 上运行并接受端口 5432 上的 TCP/IP 连接?
- javascript - 删除部分 JSON
- java - 运行与安全管理器相关的 EvoSuite 测试时出现异常
- javascript - Jquery检查值输入是否在数组中
- php - 如何修复错误:不能将字符串偏移量用作数组