2012年11月29日 星期四

OpenGL - programmable Pipeline, GLSL 學習(3) Shading Methods

(11/26)

看了兩個tutorial在實作GLSL shading 的方法
1.glslcookbook
2.opengl-tutorial

結果兩個在vs fs的地方有出入:

opengl官方直接在 vs 裡面算完 shading,再把lightcolor 丟給 fs,

而glslcookbook 則是在vs裡面做一次導向後,實際在fs裡面實作。

這兩個方法的差異,在cookbook p61有寫:

這是Per-vertex & Per-fragment的問題,Per-vertex 缺點是只有在vertex上lighting,
有可能會在faces rendering時,少掉整個faces 上面每個點 specular light 的細節
變成所謂的Gourand shading

所以在最後fs再算才會是Phong Shading!!

-------------------------------------------------------------------------------------------------------------
GLSL Shading Methods

1.Flat Shading

in main:
    //set color of the polygon which uses flat shading to be the color of the first vertex.
    glProvokingVertex(GL_FIRST_VERTEX_CONVENTION);

in Shader.vs :

    //adding the 'flat' qualifier indicates that no interpolation of values is to be done before reaching fragment shader!
    //也就是vs裡面甚麼也不做!
    flat out vec3 LightingIntensity;


in Shader.fs :

    flat in vec3 LightingIntensity;


 tbc....

沒有留言:

張貼留言