遊戲引擎之 渲染 shading

2021-05-22 22:15:24 字數 943 閱讀 4445

整個渲染過程應該分為兩個大的部分:

1) material synthesis(材質綜合),包括紋理和表面屬性。

2) illumination(光照),包括各種光照模型和渲染模型。

在這 裡主要涉及到的內容是illumination。

在opengl中,若需要計算光照模型(light model),就需要在指定頂點(vertex)的時候,為頂點新增兩個屬性:

1) 頂點的顏色;

2) 頂點出的法向向量;

這兩 個屬性的值直接參與光照模型的計算公式中。下面就順便提一下如何計算頂點處的法向向量:

首先計算任意乙個三角平面的法向量。可以通過三角形平面中 三個頂點的座標計算出這個面的法向量:

a _|  _  

|   _

|    _

c---b

上面畫的三角形的三個頂點是以順時針順序排列的,與之對應的是左手座標系。 在opengl中採用的左手座標系,而在direct3d採用的是右手座標系。根據三個頂點計算三角形面法向量的計算公式是:

normal=cross( (b-a), (c-a) )

在 單個三角形平面中,三個頂點處的法向量就是此平面的法向量,但是很多情況下,幾何體的乙個頂點被多個平面共享,那頂點的法向量如何處理呢?一般情況下,我 們通過計算共有該點的所有的三角形平面的法向量的平均值而獲得。計算公式是:

normal=cross( (b-a), (c-a) );  //注意這裡結果並沒有歸一化

n=( n1+n2+...+nk )/||(n1+n2+...+nk)||; 

這種處理方法是基於這樣的實事:兩個向量的叉積於這兩個向量所形成的三角形的面積成正比.可以看 出,三角形的面積越大,則對該頂點法向量的影響也越大,相當於對三角形法向量根據它們的面積做加權平均。

ue4 離線渲染 遊戲引擎開發新感覺!渲染引擎篇

我們在引擎架構篇裡介紹了大致的開發範圍和第三方依賴 star.e 遊戲引擎開發新感覺!引擎架構篇 zhuanlan.zhihu.com 已經有很多人問啦,渲染怎麼跨平台,這篇大致介紹下渲染引擎部分的設計。首先讓我們回想一下,我們作為引擎 圖形程式設計師,心裡到底想要什麼。引擎簡單易用,做了很好的圖形...

Libgdx遊戲引擎之ScrollPane元件

1 執行介面 這是乙個不顯示滾動條的水平scrollpanel,通過手勢控制scrollpanel水平移動 2 示例 import com.badlogic.gdx.graphics.color import com.badlogic.gdx.scenes.scene2d.actor import ...

段落文字渲染引擎

最近在乙個專案中要渲染段落文字,找了很多文字渲染庫,發現都不能滿足我的要求,所以只能自己做。字型渲染還是找freetype完成吧,雖然小字號效果不好,不過可以生成大圖再縮小來解決掉,自己寫乙個字型渲染引擎也是不可望也不可及的事。有了freetype實現底層字型渲染,我只需要處理一些布局方法即可,其中...