gpt4 book ai didi

three.js - 着色器中的 Threejs 正常值设置为 0

转载 作者:行者123 更新时间:2023-12-04 00:43:05 26 4
gpt4 key购买 nike

我想得到这个 tutorial工作,但我遇到了两个问题,其中之一可以找到 here .另一种如下。

为方便起见,这是应该可以工作的代码,这里是 jsfiddle .

顶点着色器:

uniform mat4 projectionMatrix;
uniform mat4 modelViewMatrix;
attribute vec3 position;
uniform vec3 normal;
varying vec3 vNormal;

void main() {
test = 0.5;
vNormal = normal;
gl_Position = projectionMatrix *
modelViewMatrix *
vec4(position,1.0);
}

片段着色器:
不同的 mediump vec3 vNormal;
void main() {
mediump vec3 light = vec3(0.5, 0.2, 1.0);

// ensure it's normalized
light = normalize(light);

// calculate the dot product of
// the light to the vertex normal
mediump float dProd = max(0.0, dot(vNormal, light));

// feed into our frag colour
gl_FragColor = vec4(dProd, // R
dProd, // G
dProd, // B
1.0); // A
}
normal 的值在顶点着色器中或至少是 vNormal 的值在片段着色器中似乎是 0。应该显示的球体保持黑色。一旦我更改了 gl_FragColor 的值手动球体改变颜色。谁能告诉我为什么这不起作用?

最佳答案

在你的顶点着色器中 vec3 normal应该是一个属性(因为每个顶点都有一个法线)而不是统一的:

attribute vec3 normal;

Here是您的代码的工作版本。

关于three.js - 着色器中的 Threejs 正常值设置为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27068441/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com