飘动的旗帜

创建geometry,并给着色器传随机数 aRandom

const geometry = new THREE.PlaneGeometry(1, 1, 32, 32) const count = geometry.attributes.position.count const randoms = new Float32Array(count) for (let i = 0; i < count; i++) { randoms[i] = Math.random() } geometry.setAttribute('aRandom', new THREE.BufferAttribute(randoms, 1))

顶点着色器接受参数

uniform mat4 projectionMatrix; uniform mat4 modelMatrix; uniform mat4 viewMatrix; attribute vec3 position; attribute float aRandom; // 接受来自geometry的aRandom void main() { vec4 modelPosition = modelMatrix * vec4(position, 1.0); modelPosition.z += aRandom * 0.1; // 赋值给 vec4 viewPosition = viewMatrix * modelPosition; vec4 projectedPosition = projectionMatrix * viewPosition; gl_Position = projectedPosition; }
【END】

本文链接:

版权声明:本博客所有文章除声明转载外,均采用 BY-NC-SA 3.0 许可协议。转载请注明来自 GhostCat。

阅读 175 | 发布于 2021-08-07
暂无评论