1
我剛開始使用片段着色器,並且在完成一些簡單的等離子效果後,我卡住了。我已經知道,你可以檢索片段的X,Y和Z,我想建立一個着色器,將根據他們的Z.瞭解片段
這裏顏色片段是我到目前爲止有:
void main() {
float z = gl_FragCoord.z;
float t = (sin(z) + 1) * 0.5;
gl_FragColor = vec4(t, t, t, 1);
}
的問題是我正在用三角形測試它,不管我如何旋轉它,它具有相同的常量顏色,所以我開始問自己(並在SO上):爲什麼是單一顏色的三角形?這不是Z應該是每個片段?
請注意,您還可以通過應用投影矩陣的逆來很容易地從透視投影深度值重建攝像機空間Z值(這可以反過來完成必須比全矩陣乘法更便宜,因爲所有的透視投影矩陣中的零項)。這樣,你的三角形仍然是透視正確的,但你可以基於線性Z值進行着色。 – MikeMx7f