【发布时间】:2022-01-15 01:59:22
【问题描述】:
我正在尝试使用代码 I found here 根据坐标在立方体上创建渐变着色器。但是我的顶点着色器中的位置似乎没有变化。它从 0 到 1,中间没有任何步骤:
我做错了什么? https://codesandbox.io/s/modest-silence-xzg1c?file=/src/App.js
这是我的片段和顶点着色器:
const vertexShader = `
varying vec2 vUv;
void main() {
vUv.y = position.y;
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
}
`
const fragmentShader = `
uniform vec3 colors[2];
varying vec2 vUv;
void main() {
gl_FragColor = vec4(mix(colors[0], colors[1], vUv.y), 1.0);
}
`
const uniforms = {
colors: {
type: 'v3v',
value: [new Color('#ff0000'), new Color('#0000ff')]
}
}
【问题讨论】:
-
我很确定这就是您所需要的:stackoverflow.com/questions/52614371/…
-
是的,但我有相同的代码,它不会产生渐变,而只会产生两种颜色。这就是我问这个问题的原因
-
这是一个非常令人困惑的行:
vUv.y = position.y;。在我期望的片段着色器中看到vUv,它使用了uv坐标:)