softcore — CPU rasterization

來源:互聯網
上載者:User

    回到20世紀90年代,PC上進入3D圖形硬體光柵化時代。VOODOO取代了CPU 光柵化渲染。隨後出現NVIDIA TNT。直到GEFORCE將3DFX吞併。現在GPU的演變已經8年,基於螢幕上每個象素的複雜計算已經可以讓老shader程式員忽略C和HLSL的區別。

    在下一代mmo 3d引擎工具平台開發之前,有必要重新回到GPU內部,關注幾何與光柵管道。越來越複雜的shader效果一切均基於光柵器的運作機理。把工作從GPU搬回CPU目的為使圖形開發人員打撈圖形學基礎,在次世代開發中更好的運用GPU功能。

    softcore 是一個軟體光柵器。用於從情境物體的geometry transform, clipping,lighting, texture mapping, gouraud shading,到最後光柵化顯示的整個圖形處理管道技術示範。此項目為了保持代碼清晰,省略了所有最佳化。只在可以使用SIMD和MULTITHREAD的步驟做出了標記。為了便於學習,project整合了id software doom3 sdk中SIMD和數學庫代碼。

    由於是兩個星期業餘時間製作,時間有限,主要目的在於示範3D加速核心演算法,光柵化部分的tc,color數值計算和sampler部分仍然需要進一步tunning。需要去除溢出和浮點轉整數規則調整。這些可由感興趣人員自行修改。

 

 

softcore project

done:

* CPU soft rasterization

* Z-buffer

* Gouraud Shading

* Perspective Correct Texturemapping

* Near plane Clipping

* Back face culling(geometry)

* Directional lighting

not do:

x Phong shading/bump mapping

x Bilinear filter

x Mipmap

x Dynamic lightmap

x Vertex color export/import

x Optimization

 

 

以下是3DSMAX中情境原圖。有了硬體BILINEAR效果還是不一樣.....

 

 

多數初學者往往陷入3D API細節。認為繪製帶有各種效果的三角形就是在做引擎。或者疲於把各種NV SDK或者D3D SDK的sample code加入自己的工程。當然,用orge3d這樣的開源渲染器也可以做出《天龍八部》,《巨人》等商業產品,不過,想快速開發符合要求的次世代渲染器,需要大量實際工程方面的工作。針對範圍很狹窄的渲染器而言,對渲染效果品質的調整,以及自行開發美術需要的效果,不是照抄fx composer或者render monkey那麼簡單。由於對GPU工作原理認識不深,對某些效果最佳化實現背後的理論基礎認識不深,都會直接帶來在實際工程中開發的障礙。或者導致品質下降。

按說做為圖形程式員應該對3D光柵渲染的整條流水線做到倒背如流。不過3D硬體廠商加速了應用的進程。使得在螢幕上繪製三角形這件工作變得容易。也許會忽略人們對即時三維渲染的系統知識體系建立。在進階圖形渲染逐漸進入更複雜光照,全域光,基於物理或類比基於物理的技術層面之後,不對GPU工作機理做到透徹瞭解,在工作中會舉步為艱。因為所有渲染工作逐漸移到GPU寄存器中用可程式化代碼進行。整條管道,從Geometry transform,clipping,vertex lighting,到pixel的shading都由程式員控制。但GPU仍然自動進行了screen space的一些工作。包括clipping,掃描線線性插值,texture sampler等。這是光柵器能夠數百倍快於raytracing渲染的本質。但如果圖形程式員不瞭解被GPU自動進行的工作,也會象C++程式員不瞭解預設建構函式一樣盲目。

舉例,眾所周知普通的shadowmap 完全不具備工程實用性。最重要的是因為出於記憶體限制,shadowmap texture尺寸不可能滿足實際渲染精度需要。並且收到三角形在camera space中斜率影響巨大。Depth Bias問題的本質是什麼。與何參數相關。目前採用的各種調節depthmap渲染精度的方法背後理論依據是什麼。Perspective shadowmap,light space shadowmap等各自最佳化方法會遇到什麼問題,各自優缺點,以及工程中如何tunning,尤其用於self-shadow的問題。基於PCF(percentage closer filter)的各種軟陰影演算法的應用。

在對bumpmap技術改進過程中,在tangent space使用ray-tracing的reliefmap以及relaxed cone stepping relief map,以及帶有凹凸輪廓的releif map技術。以及parallax map,和其變種dynamic parallax occlusion map。如何在pixel層級用bilinear gouraud 和這些象素層級lighting進行LOD,如何改進parallax map隨視角變化而產生紋理浮動的問題,如何調整線性迭代和2分尋找對效率和效果的影響。甚至從本質上瞭解tangent space,phong shading,都要從軟體光柵機理開始。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.