Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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
three.js-如何在ShaderMaterial和fragmentShader中使用alphatest值_Three.js_Fragment Shader - Fatal编程技术网

three.js-如何在ShaderMaterial和fragmentShader中使用alphatest值

three.js-如何在ShaderMaterial和fragmentShader中使用alphatest值,three.js,fragment-shader,Three.js,Fragment Shader,从Thansk到@Mugen87,我使用后期处理方法在我的场景中创建了一个动态遮罩:(如果你移动相机,你会看到立方体消失在后面,看不见的圆圈,用这张图片制作:) 我想使用片段着色器脚本在我的遮罩上添加一些效果。在这把小提琴上,你可以看到我的纹理在移动(我将THREE.MeshBasicMaterial替换为THREE.ShaderMaterial): 当我将这种新材料与后处理方法相结合时,我无法达到与第一个JSFIDLE相同的结果。我不知道在片段着色器中哪里添加我的#define ALPHATE

从Thansk到@Mugen87,我使用后期处理方法在我的场景中创建了一个动态遮罩:(如果你移动相机,你会看到立方体消失在后面,看不见的圆圈,用这张图片制作:)

我想使用片段着色器脚本在我的遮罩上添加一些效果。在这把小提琴上,你可以看到我的纹理在移动(我将
THREE.MeshBasicMaterial
替换为
THREE.ShaderMaterial
):

当我将这种新材料与后处理方法相结合时,我无法达到与第一个JSFIDLE相同的结果。我不知道在片段着色器中哪里添加我的#define ALPHATEST值。 您可以在此处看到结果:


我想我已经接近预期的结果了。有人知道在我的片段着色器中正确添加ALPHATEST值的位置吗?谢谢您

这里是您的自定义着色器材质的原始更新小提琴:

将图像用作alpha贴图时,可以像内置材质一样对其进行采样。这意味着alpha测试看起来是这样的:

if (texture2D(texture1,xy).g < 0.5) discard;
if(texture2D(texture1,xy).g<0.5)丢弃;

谢谢,它很有魅力。谢谢你的时间和解释!