第1張:
從坐到右,從上到下。無紋理、無鏡面光、無深度緩沖,依次是:
1. 線框。
2. 純色。 即每個三角形一個顏色。
3. flat着色(相比上次,修正后的效果好多了)。也是每個三角形一個顏色,但是這個顏色是參照了光照情況的。
4. gouraud着色。根據光照計算每個三角形的頂點顏色,三角形內部根據頂點顏色進行線性插值。
5. phong着色(這里分辨率太低,看不出和gouraud的區別)。每個像素分別計算光照。
第2張:
分別是flat、gouraud、phong着色,相比第1張,加入了鏡面光(注意茶壺的不少地方出現了白色的光斑)。
第3張:
在上一張的基礎上引入了紋理。注意壺嘴上的光斑,一個比一個細膩。這一組圖仍然沒打開深度緩沖,因此顯示不太正確。
第4張:
高分辨率的茶壺。軟件渲染瓶頸首先是像素處理,因此這么大的茶壺,幀率特別低。
兩張分別對應低、高兩套設置。
第一個,gouraud着色 + 最近點采樣 + 三角形排序(油畫家算法)+ 鏡面光。幀率123。
第二個,phong着色 + 三線性采樣 + 1/z緩沖 + 鏡面光。幀率30。
第5張:
平面裁剪。第一個是一個豎着的平面,第一個是一豎一橫兩個平面。注意裁剪邊緣三角形密度較大,因為進行了三角形分割。
第5-2張:
正交投影和平面裁剪。
正交投影,相比普通的透視投影,失去了近大遠小的效果。
第二個茶壺,從側面來觀察裁剪平面,證實了這確實是三維空間的裁剪,而非屏幕上的像素裁剪。
第6張:
高分辨率來了!
在屏幕上繪制兩個大三角形,展示紋理過濾效果。
從上到下分別是:線框、最近點采樣、雙線性過濾、三線性過濾、透視紋理修正。
三線性過濾:這里很難看出和雙線性的區別,但是在程序中切換狀態時是能察覺到變化的。
透視紋理修正:操,屎都給我嚇出來了!跟它一比,難怪之前總覺得前面兩張怪怪的。這證明了,大紋理三角形不能亂用啊...
第7張:
演示紋理地址尋址方式。
整張圖紋理坐標是-2~+2,從上到下,尋址方式依次為箝位、重復、鏡像。
第8張:
演示mipmap。
紅色是第0層,綠色是第1層,藍色是第2層,淡藍色是第三層,等等。
再貼一個骷髏頭吧,6萬個面,還能有30幀,很好。畢竟我在頂點處理環節非常謹慎的。
gouraud + 鏡面光 + 三角形排序(油畫家算法,代替z緩沖)。
看了一下水銀上的記錄,這個項目大概開始10來天了,成品是9000行C++代碼,目前效果還是滿意的。能夠享受成品從視覺上帶來的成就感,這是圖形相比其他技術的優點。
代碼6、7月份分享,執行文件在下面:
http://115.com/file/anwxb9xp#Scan軟件光柵.rar
記得看里面的readme.txt。
注意,如果你運行后顯示不自然(遮擋關系錯誤,尤其是骷髏頭),嘗試按幾下4開啟深度緩沖,或者按幾下5開啟油畫家算法