下邊第二部分:逐畫素點光,我試驗出了修改方法,但是至於為什麼要這樣修改,我並不清楚,希望有大神可以幫忙解答,小女感激不盡!!!
本文參考
但經過實驗,修正其中部分問題
第一部分:逐畫素方向光
由原本**執行得到的結果為:
主要原因是其片段著色器並未將所有顏色加在一起,最後加上這條語句即可:
color = globalambient + ndotl * diffuse + ambient;
以下修改**也有修改其他成分——
修改其中的頂點著色器為:
varying vec4 diffuse,ambient,globalambient ;
varying vec3 normal,lightdir,halfvector;
void main()
片段著色器為:
varying vec4 diffuse,ambient,globalambient;
varying vec3 normal,lightdir,halfvector;
void main()
修改之後的結果為:
第二部分:逐畫素點光
原圖:
新增語句即可修改
color = globalambient + ndotl * diffuse + ambient;
修改之後的圖:
第三部分:逐畫素聚光
GLSL教程 (七)逐畫素的光照
from 逐畫素的方向光 directional light per pixel 這一節將把前面的shader 改為逐畫素計算的方向光。我們需要將工作按照兩個shader拆分,以確定哪些是需要逐畫素操作的。首先看看每個頂點接收到的資訊 法線 半向量 光源方向 我們需要將法線變換到視點空間然後歸一化。...
GLSL 逐畫素的光照
逐畫素的方向光 directional light per pixel 這一節將把前面的shader 改為逐畫素計算的方向光。我們需要將工作按照兩個shader拆分,以確定哪些是需要逐畫素操作的。首先看看每個頂點接收到的資訊 法線 半向量 光源方向 我們需要將法線變換到視點空間然後歸一化。我們還需要...
GPU程式設計之GLSL(八) 配置GLSL
由於昨天重灌系統,導致所有的檔案都需要重新配置,此次配置過程中又發現了一些問題 首先說一下步驟吧 所有的.h檔案放在 c program files x86 microsoft sdks windows v7.0a include gl 所有的.dll檔案放在 c windows syswow64 ...