32 WebGL環境光下的漫反射光的計算

2021-08-02 05:34:13 字數 792 閱讀 8692

現實生活中,我們看物體不單單有平行光(太陽光)和點光源的照射,還有環境光。所以,背面的顏色也不會達到和上一節一樣黑的程度,也會有一定的變亮的效果,所以,這一節我們將環境光的漫反射加入進去,來使得物體看上去更加的逼真。

根據上一節的案例,我們需要將環境反射光顏色計算出來,然後獲取真實的顏色。

首先我們使用:

《環境反射光顏色》=《入射光顏色》 x 《表面基底色》

來計算出環境反射光的顏色,然後再通過

《表面的反射光顏色》 = 《漫反射光顏色》 + 《環境反射光顏色》

來獲取表面實際的反射光顏色。

通過上面提高的兩個運算,我們可以輕鬆的解決環境光反射的問題。

所以在頂點著色器裡面,多宣告了乙個uniform變數u_ambientlight來接收環境光的顏色值,然後通過運算,得出最後的顏色。

//計算漫反射光的顏色

" vec3 diffuse = u_lightcolor * vec3(a_color) * ndotl;\n" +

//計算環境光產生的反射光顏色

" vec3 ambient = u_ambientlight * a_color.rgb;\n" +

//將以上兩者相加得到物體最終的顏色

" v_color = vec4(diffuse+ambient,a_color.a);\n" +

而在js**中,也只是多了乙個給u_ambientlight賦值的**

3 2評估的環境模型

3.2評估的環境模型 當我們在第一章介紹復合程式時,在1.1.5部分中,我們使用評估的替換模型來定義出把程式應用到引數上的含義。為了應用乙個復合程式到引數上,要評估程式體,並且把形式引數替換成對應的實際引數。一旦我們把賦值語句加入到我們的語言中,這樣的定義就不充足了。特別是在3.1.3部分中的討論那...

32位的C語言程式設計環境

提起 下的 語言,大多數朋友都會想到 可 惜乙個大點的遊戲涉及到圖象聲音等等大量的資料。顯然在 位實模式下 寫程式,便會因為 的記憶體限制而礙手礙腳 而用 寫 位程 序就不那麼方便了。有的朋友轉到了 程式設計,而剩下來 仍奮戰在 環境下的遊戲程式設計師便開始使用別的為 位保護模式設計 的 語言了。一...

認識STM32開發環境的韌體庫

stm32的韌體庫又叫韌體函式包,它是由程式 資料結構和巨集組成,包括了微控制器所有外設的效能特徵。該函式庫還包括每乙個外設的驅動描述和應用例項,為開發者訪問底層硬體提供了乙個中間api,通過使用韌體函式庫,無需深入掌握底層硬體細節,開發者就可以輕鬆應用每乙個外設。因此,使用固態函式庫可以大大減少開...