About H3D2 Engine

*H3D2 ENGINE開發

早年的H3D ENGINE,現在有個商業遊戲產品應用。基於OPENGL的H3D,當初設計具有GL的1.2.1 ,1.3和1.5三條渲染管道。就是在TNT2(radeon), GEFORCE2-4(RADEON8500-9200), GEFORCE5(ATI9500-)三種平臺上分別跑固定管線,帶VP,帶VP和FP的圖形功能。當時的硬件大概是這麼劃分的。對應於D3D,大概相當於D3D7,D3D8,D3D9 sm2吧。 GL2的規範和驅動遲遲未出,GLSL也是很晚驅動才支持。所以引擎沒有支持GLSL。

我一直挺喜歡這個引擎截圖。http://www.horizon3d.com.cn/horizon3d/horizon3d_client_004.jpg

引擎支持一套相當於D3DX Effect系統,只不過是自己定義的格式。另外有一些比較重要的擴展。動態支持VP FP(VS,PS)。以及所有渲染狀態。FX中的TECHNIQUE,H3D ENGINE相當於對3個硬件平臺的動態支持。管道的支持使用C++的多態。在做完H3D SHADER系統後返回去看EFFECT,才發現又做了重複工作。M$已經做得很好了。

另外還有一些諸如動態LOD /OUT OF CORE 地形室外系統,以及後期加入的portal/octree室內系統。後期的研究中,對點光源soft shadow做了一些工作,並未徹底,如圖:

這些會爭取在項目開發不那麼緊張的時候加入進去。

不過EFFECT缺少了一項對動態渲染上下文變化的對應支持。相當於一個帶凹凸象素光照的動物,從遠處半透明FADE IN,從霧中走出,中間經過一個聚光燈,走過一片水塘旁的一棵大樹,樹背後一堆綠色篝火,被投影上一棵樹的陰影和閃動的綠火,且水波的漣漪被映射在動物身上,動物皮膚次表面散射,與鼻頭光亮的反射,經過GLOW(或HDR)處理格外刺眼。隨着動物走進和鏡頭位置搖動,效果一一組合呈現又一一消逝。這種變化只利用現有D3D EFFECT系統不能做到,但在H3D ENGINE中,通過增添一個環境SHADER層,封裝了此種變化,利用一個統一架構和SHADER格式,大致可以把80%的渲染環境變化體現出來。

如果說GL被D3D滅了,不如說GL被ATI滅了。 ATI憑藉自己的3D硬件生產能力,有計劃,有目的,有預謀的在驅動層面逐漸破壞GL的兼容性和基本功能。我十分懷疑ATI被M$收買過去專門一邊散步銷售自己的硬件,一邊故意讓GL的支持和兼容性能極差。導致開發者逐步遠離OPENGL。諸如glBegin(GL_LINES)之後跟隨唯一個glColor3f這樣的語句,都能導致在9000、9100系列的顯卡上所有渲染狀態失效,一片漆黑。

有鑑於此,H3D2的開發全面轉入D3D。包括FX製作工具,可以整合到3DSMAX中,十分方便。不過3DSMAX令人頭疼的軟件開發水平,總是BUG不斷(恩,並了MAYA,說明一切,此處純技術評論)。H3D2估計在近期趕不上D3D10的車了。針對國情,中國玩傢什麼都要,但肯定不要高配置才能跑。所以D3D7的支持也許還得有。D3D9是標準配置。 在功能方面,除了需要sm2以上才支持的softshadow之外,類似UNREAL3的SHAOW混合應用也許比較靠譜(shadow volume+shadowmap),動態光照方面加強lightmap+parallax_mapping的支持。如果可能,HALF-LIFE2採用的直角座標系的協和函數全局光照分解或者HALO3採用的小波分解全局光照的用法,應該參考一下。畢竟LIGHTMAP纔是王道。一直有個想法,如何能夠加入過飽和的lightmap計算支持和渲染。在PS2平臺的ICQ中,此技術成了支持那個沉悶空闊場景渲染的唯一亮點。沒看到過此種渲染做在光能輻射渲染器裏。也許真得自己寫光能輻射渲染器。。。這個方面http://www.FluidStudios.com/ 有個很強得lightmap rendering tool. open source..sound sweet..ha...

 

發佈了43 篇原創文章 · 獲贊 4 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章