0
我有一個六角形地圖,並試圖在它上面建立一場戰爭迷霧。我正在做的是建立一個頂點以十六進制爲中心的VBO。然後根據其可見性(0.0f,0.5f,1.0f)爲每個圖塊中心分配阿爾法值。 這裏是頂點着色器:網格中三角形頂點之間的插值
#ifdef GL_ES
precision highp float;
#endif
attribute vec4 a_position;
attribute float a_alpha;
uniform mat4 u_MVPMatrix;
varying float v_alpha;
void main()
{
gl_Position = u_MVPMatrix * a_position;
v_alpha = a_alpha;
}
和我的片段着色器:
#ifdef GL_ES
precision highp float;
#endif
varying float v_alpha;
void main()
{
gl_FragColor = vec4(v_alpha, v_alpha, v_alpha, 1.0);
}
插值有什麼問題?爲什麼有一個三角形結構如此可見?
這是一個線性插值的假象。也許你可以看看你是否可以改變片段着色器屬性的插值方法。這裏有一些關於它們的信息:https://www.khronos.org/opengl/wiki/Type_Qualifier_(GLSL)#Fragment_shader_outputs – Bartvbl
這不是一個真正的插值artefact。這是一種感性假象。如果仔細觀察,您會發現顏色值是連續的。唯一改變的是漸變方向(這是不連續的)。這種不連續性被我們的大腦放大了。所以,的確如此。解決這個問題的唯一方法是在三角形上使用不同的插值方法。但這很大程度上取決於你需要什麼,也可能不那麼容易實現。 –
好吧,我明白了。我相信沒有簡單的方法來改變var變量的插值方法。有沒有簡單的方法來實現平滑過渡(除了使用紋理來隱藏漸變)? – Hedin