Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用不透明度混合多个图层?_Javascript_Three.js - Fatal编程技术网

Javascript 如何使用不透明度混合多个图层?

Javascript 如何使用不透明度混合多个图层?,javascript,three.js,Javascript,Three.js,使用three.js,我想对单个场景应用单独的后处理效果,然后将所有这些场景合并到最终渲染中。为此,我使用了three.js Effects Composer const radialBlurShader={ 制服:{ “tDiffuse”:{value:null}, }, 顶点着色器:` 可变vec2 vUv; void main(){ vUv=紫外线; gl_位置=projectionMatrix*modelViewMatrix*vec4(位置,1.0); } `, 碎片着色器:` 均匀采

使用three.js,我想对单个场景应用单独的后处理效果,然后将所有这些场景合并到最终渲染中。为此,我使用了three.js Effects Composer

const radialBlurShader={
制服:{
“tDiffuse”:{value:null},
},
顶点着色器:`
可变vec2 vUv;
void main(){
vUv=紫外线;
gl_位置=projectionMatrix*modelViewMatrix*vec4(位置,1.0);
}
`,
碎片着色器:`
均匀采样扩散;
可变vec2 vUv;
恒浮强度=0.7;
常数int样本=50;
void main(){
vec4列=vec4(0);
vec2-dir=vec2(0.5)-vUv;
对于(int i=0;i

将着色器过程blendSrc更改为1可修复该问题。e、 g

sp.material.blending = THREE.CustomBlending;
sp.material.blendSrc = THREE.OneFactor;
我相信这是因为径向模糊着色器的功能特别强大。首先,将渲染过程颜色缓冲区清除为黑色透明颜色,并在其内部绘制不透明正方形。然后,“径向模糊”着色器使用周围的透明像素模糊这些不透明像素。这具有对任何不透明像素的alpha进行预乘的效果


此时,将纹理绘制到缓冲区不再需要将源像素乘以alpha通道。这是正确的解释吗?

我认为变暗的方块与您正在将渲染过程缓冲区清除为透明颜色而不是不透明颜色这一事实有关,这似乎是问题的根源。虽然我不知道这有什么关系。