實時3d引擎純軟體實現筆記

2021-04-12 12:19:17 字數 1946 閱讀 3797

光: 

計算點的光亮度的 normal 即 向量還的 是從 相臨的 面向量的平均值得到(而這個面向量是從三角形的兩邊的叉乘得到的)。。。 影:

可以完全不管被遮擋面而用公告板,如果嚴肅點的話就目前都用stencil shadow volume.其實,也是比較簡單的,但是必須在object sapce空間發生,解成三角形表之後就沒辦法計算乙個物體被光源所切的最大截面了,這個截面可以通過與光源交角大於90度的頂點的外包圍算出來(把這些點組成的三角形的邊加起來出現次數大於1的都是內部邊),然後,給個適當的長度用這個截面生成乙個梯形體(對著光源),然後對z緩衝裡的點來看這些點是不是在這個體裡,是的話就減弱光..(當然沒有討論聚光燈和soft shadow...差不多夠使就好了。...)

詞彙:

diffuse 漫反射 不論視角

specular鏡面反射 根據光源 視角

emissive 自色

directional lights 平行光

point lights 點光源 光密度隨距離變化

聚光燈 通過內光圈 外光圈 的區別來模擬 衰減度計算的精確度需要看畫面質量而定

材質計算:

guoraud shading for texture

發生: screen space 簡單來說就是將三角形三個點的顏色值根據點向量來取平均數來

給三角形內點取顏色

phong shading for texture

發生:與前者不同取的是三角形點的向量的平均。。。過於浪費。。。連硬體實現都沒有。。

所謂 uv 蒙圖的意思是說

把長方形矇到三角形上

你定了三角形乙個點之後左右兩條邊然後定一邊map 長方形的 u 一邊 map 長方形的v 然後再一行行的插值就是了 (或壓縮)

實時渲染的  texture 插值法,純粹的 線形插值。。。

des[i] = src[ floor(int(ratio * source.size * i)) ]

相當粗糙的方式。。

還記得高數還是圖形學裡頭有相當複雜的至少是2次的插值法。。。。

頂多再對插值之後的點像臨點再做個平均 叫做

bilinear 插值。。。。2維的話 就對 四個點 做一次 平均 沒什麼技術含量線:

實際上 d9繪三角形不是全部都畫出來 而是只畫 top-left 的

換句話說有條邊是不會畫的 目的是為了三角形重疊的時候不多畫

資料結構:

3d裡的資料原則: 盡量不去移動資料而是移動它們的指標這在index表和畫家演算法充分體現了

實際上 乙個三角形 的 資料結構定義有很多東西的 座標 向量 顏色

其中 向量 顏色 包括本 三角形 的 也包括 組成這個三角形的 點的

渲染方式 然後 引擎再決定怎麼操作它 通用引擎應該把 這些資料都包含了

雖然一路經過pipeline 最後都影**很多資料都是要保留的 copy資料是不可避免的

渲染方式需要的包括 付單色 gourad 付色 透明與否 貼圖否

通用引擎結果可能在處理的時候可能會有冗於的情況發生

頂點程式設計的必要性:

因為實際上如果是 gourad 著色的話 只是單色的三角形的話甚至只是map單色材質就可以了或者定義三角形的顏色

頂點是必須有顏色的現在問題來了 。。頂點的顏色一開始是怎麼來的?

材質的邊緣的顏色顯然不可以作為頂點的初始化顏色,而當然主要是通過

光源表對起的疊加操作來做的但是如果想要有更靈活的方式的話就得手動來做這件事情了,無論是軟體的庫還是硬體的顯示卡光源表最多有平行光點光加簡單聚光燈的光源定義太不夠了,必須可以程式設計才可以

換句話說實際上硬體卡或軟體庫只會有平行,點光,簡單聚光的函式你想要幹其他的都不行,沒有介面!

3d優化方法:

函式值盡量預先生成然後查表:記憶體便宜。。。幾兆的鍵值表不算什麼

而且simd single instruction multiple data指令集關鍵的時候還的用。。。 

純css實現3D動畫

css動畫的某些屬性可以實現非常炫酷的3d效果,貼出乙個例子,可直接看到效果,用到了css的3d轉換和動畫。doctype html html head meta charset utf 8 meta name viewport content width device width,initial ...

純CSS3 實現3D魔方

1 思路 父盒子給子盒子開啟立體空間,並開啟透視,設定視距 子盒子設定擺放位置,與我們畫的正方體類似,按照平面正方體每個面的拜訪位置,我們通過旋轉 平移達到擺放的效果 父盒子設定過渡 滑鼠懸停到父盒子,子盒子做出的行為,分別向各自的方向擴散,並且側面要有一定的旋轉,為90 使其達到我們想看到的開啟效...

3D遊戲引擎設計與實現(3)

經過幾天編寫,3d遊戲引擎的架構 大體架構已經搭好。下面來每個模組說明 l 引導程式 engine mm3dmain.exe l dll管理模組 engine bin mm3drun.dll l 引擎管理模組 engine bin mm3dengine.dll l ui模組 engine bin m...