使用统一数组设置批处理顶点数组的alpha值
Setting the Alphas of a Batched Vertex Array With a Uniform Array
我正在使用WebGL创建一个2D渲染引擎,其中我使用纹理地图集并一次批量处理数百个实体。我需要为每个实体设置一个唯一的alpha值,我不知道如何做到这一点。
我当前的片段着色器是:
precision mediump float;
uniform float u_alpha;
uniform sampler2D u_image;
varying vec2 v_texCoord;
void main () {
vec4 texture = texture2D(u_image, v_texCoord);
gl_FragColor = vec4(texture.rgb, texture.a * u_alpha);
}
我想将全局统一更改为统一缓冲区或唯一值数组,将应用于v_texCoord,但我不知道如何做到这一点
您需要像v_texCoord
一样将这些值作为属性传入。
在顶点着色
attribute float a_alpha;
varying float v_alpha;
...
void main() {
...
v_alpha = a_alpha; // pass the alpha values to the fragment shader.
...
}
片段着色器
varying float v_alpha;
...
gl_FragColor = vec4(texture.rgb, texture.a * v_alpha);
除了使用单独的属性,你还可以让你的纹理坐标有3个值。U v和。换句话说,把v_texCoord
换成vec3
。更新顶点着色器中的属性,使其采用vec3
。更新你的UV数据,使每个UV也有一个alpha。将片段着色器更改为。
varying vec3 v_texCoord;
void main () {
vec4 texture = texture2D(u_image, v_texCoord.xy);
gl_FragColor = vec4(texture.rgb, texture.a * v_texCoord.z);
}
相关文章:
- 如何在映射数组中添加换行符
- javascript结合了数组和字典
- 需要帮助设置json数组
- 不能从angular2中的子组件指定父组件中的数组
- 使用JS将数组转换为json对象
- 数组在递归方法中设置为null
- knockoutjs可观察数组
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将数组从PHP传递到Javascript
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 在函数中添加数组元素的数值
- 无法通过数组映射绑定
- javascript中的数组出错
- 如何使用 node.js 比较两个 json 数组
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 根据id将json数组组合为一个json数组
- 如何通过数组更新角度子范围
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 使用统一数组设置批处理顶点数组的alpha值
- 从顶点控制器类返回数组,并在Salesforce中的javascript中使用