javascript - 如何在 Three.js 中将 alpha 贴图纹理与 ShaderMaterial 一起使用?

标签 javascript three.js glsl textures shader

我有一个 png 图像 (16x16),我想将其用作自定义 Material THREE.ShaderMaterial 中的 Alpha 贴图纹理。这是图像:

Alpha Map

这是我预加载的纹理对象的设置:

alphaMap.magFilter = THREE.NearestFilter
alphaMap.wrapT = THREE.RepeatWrapping
alphaMap.repeat.y = 10
alphaMap.needsUpdate = true

在 ShaderMaterial 的属性中我添加了:

transparent: true

然后添加定义:

USE_ALPHAMAP: true,
ALPHATEST: 0.5

最后是制服:

alphaMap: { type: 't', value: alphaMap }

我没有收到任何错误,但网格不可见。如果我将其设置为 diffuseColor.rgb 则网格全是黑色的。缺少什么或有什么问题?

最佳答案

此问题的解决方案(未记录)是:

uniforms['alphaMap'].value.needsUpdate = true

这样做是行不通的:

alphaMap.needsUpdate = true

可能应该添加在这里:How to update things (纹理的 needsUpdate 标志的需求实际上是存在的,但不清楚如何处理 ShaderMaterial 和制服)。

关于javascript - 如何在 Three.js 中将 alpha 贴图纹理与 ShaderMaterial 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46859276/

相关文章:

c++ - 如何使用 OpenGL 将数据发送到顶点着色器?

android - Android 上的 OpenGL ES GLSL 着色器未加载正确的版本?

c++ - glGetUniformLocation 为第一个以外的采样器返回 -1?

javascript - 如何将简单的表单提交转换为ajax调用;

javascript - 将 JSON 解析为 HTML 表

javascript - 三.js重复模式

javascript - Webpack 无法解析并指向我的 node_modules

javascript - Knockoutjs + Ckeditor 需要帮助解决一些问题

javascript - 使用 Jade 迭代嵌套数组对象

javascript - three.js 中的碰撞墙