對法線紋理和置換紋理的一點改進

2022-06-30 22:21:17 字數 381 閱讀 7671

displacement 設想深度圖在三角形所在切線空間內。對於點法線不垂直於三角形所在面的情況,比如三角形三個頂點的法線不同,或是視線穿過了當前三角形,而下乙個三角形的法線方向與這乙個三角形的法線方向不同的情況,這個設想就是不成立的。

displacement的視線可能穿過texture,即u+v超過了1或者u、v中有負數,這種情況下應該讓片段透明。

法線貼圖。乙個點可能是多個三角形的頂點,這時它的法線怎麼算呢?如果讓點的法線垂直於三角形所在面,則三角形與三角形之間的法線會存在斷裂的情況。解決辦法是加權平均頂點的各個三角形法線,權值是頂點對應的三角形的面積。

這又帶來乙個新的問題,片段的法線取的是頂點法線的三角形uv插值,這樣片段法線的模就不保證是1了。所以應該在著色器中將插值得來的法線歸一化。

對Reflection的一點改進

之前實現的那個reflection沒有把光照加進去,使得不是很逼真,與真實的景象有出入。只要我們把光源也想象 為乙個物體,在鏡子中也會有映象,也會使virtual object產生光照效果。這裡我採用的是聚光燈,對其的屬性設定如下 glfloat lightamb ambient light glf...

稍微對String類的一點改進

ifndef string h h define string h h include using namespace std class string ostream operator ostream os,const string str istream operator istream in,...

DWR同步呼叫的一點改進

dwr提供的js方法呼叫預設是非同步的,為了得到同步的執行結果,一般類似以下方式處理 dwrengine.setasync false 設定成同步 var data null test1ajax.sayhello hello function data dwr呼叫服務端的函式 dwrengine.s...