three.js - ThreeJS 着色器动态纹理
问题描述
我在下面有这个着色器代码。我想为另一个纹理添加一个新的制服,并使其应用于可被 4 整除的顶点。
uniform vec3 color;
uniform sampler2D texture;
varying vec4 vColor;
void main() {
vec4 outColor = texture2D( texture, gl_PointCoord );
if ( outColor.a < 0.5 ) discard;
gl_FragColor = outColor * vec4( color * vColor.xyz, 0.5 );
float depth = gl_FragCoord.z / gl_FragCoord.w;
const vec3 fogColor = vec3( 0.0 );
float fogFactor = smoothstep( 200.0, 600.0, depth );
gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );
}
我想添加一个类似的条件,index % 4 === 0 ? firstTexture : secondTexture
但我不知道如何获取顶点索引并在着色器语言中执行模运算符。
解决方案
推荐阅读
- angularjs - TypeScript AngularJS 组件模态 - this.$modalInstance.dismiss 不是函数吗?
- web-scraping - 如何使用 Scrapy 获取每个爬虫的深度
- reactjs - 如何使用本机 React 实现 createDrawerNavigator
- google-sheets - 使用 VLOOKUP 自动添加数据
- c# - 保存 Windows 登录而不保存密码(如 Kerberos 票证)
- angular - 在角度中使用 patchValue 进行选择是行不通的
- vue.js - 如何在 vuejs 中的单击功能上重新渲染所有组件
- android - 隐藏顶部状态栏但保留底部导航栏
- prometheus - 从 Spring Boot 2.1.6 升级到 2.2.2 时,Prometheus 不导出 Kafka Consumer 数据
- java - 为什么这个方法不同步?