2

我有一个顶点/片段着色器、点光源和衰减,我需要将这样的着色器应用到立方体面上,我需要看到颜色渐变的变化,如果我使用高多边形网格,一切都很好,而且效果很好,我的目标是在这个低多边形网格上进行渐变。

我试图这样做 gl_FragColor = vec4(n,1) n = normal 但我得到每个表面的纯色,这可能是我看不到渐变的原因?

干杯

4

1 回答 1

0

您正在观察的是正确的行为。立方体是完全平坦的,因此每个面顶点的法线是相同的。

但是请注意,在计算 Phong 光照时,您还应该使用片段的位置,该位置在给定(子)面的 3 个(或 4 个,当使用四边形时)顶点之间进行插值。它可用于计算给定片段位置中光位置和眼睛矢量之间的角度。

我最近遇到过类似的问题,我发现如果你想看到非平面的东西,你的立方体真的需要发光;我的意思是字面意思。将光泽度设置为相当高的值(250-500)。您应该在脸上看到一个聚焦的、移动的光点,直接反射到您身上。如果不是,您的闪电着色器可能是错误的。

于 2012-08-10T10:56:36.607 回答