GLSL程式設計之GLSL(七) 逐畫素光照

2021-06-23 05:39:41 字數 1107 閱讀 1362

下邊第二部分:逐畫素點光,我試驗出了修改方法,但是至於為什麼要這樣修改,我並不清楚,希望有大神可以幫忙解答,小女感激不盡!!!

本文參考

但經過實驗,修正其中部分問題

第一部分:逐畫素方向光

由原本**執行得到的結果為:

主要原因是其片段著色器並未將所有顏色加在一起,最後加上這條語句即可:

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 ...