青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 94, comments - 250, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

GameByro 特性分析

Posted on 2009-04-22 10:42 Condor 閱讀(2849) 評論(2)  編輯 收藏 引用

引言

GameByro是一款成熟的商業引擎,已經被許多成功的商業項目所使用,不僅包括文明4、上古卷軸4,輻射3等跨平臺知名單機游戲,還有EA的大型3DMMORPG戰錘online。GameByro完全基于面對對象設計,結構清晰,便于使用和擴展。靈活的可編程渲染架構使它比較容易支持最新的圖形技術。另一方面,由于強調通用性,GameByro并沒有對上層應用做太多的支持,其工具和插件大多僅具有一些通用功能,所以它更像是一個游戲開發套件而不是一個完整的FrameWork。

引擎特性概覽:

· 跨平臺(PC,XBOX360,PS3)

· 場景圖表現為層次化的結構

· 同目前主要的建模工具集成(插件支持)

· 高效的可視性裁剪

· 在所有的平臺上支持高級3D硬件加速

· 高級紋理和著色效果

· 動態碰撞檢測

· 細節分級表現(LOD)

· 靈活的渲染,排序和裁剪算法

對象系統

GameByro的對象系統的使用遍及整個引擎,其主要實現如對象管理,引用計數,對象生存期等功能。可以通過對幾個基類的繼承來使用對象系。

其主要特性主要有:

1. 智能指針(引用計數)

2. 運行時類識別(RTTI)

3. 場景對象復制

4. 序列化(對象文檔化)

5. 對象命名

6. 對象擴展數據的管理

7. 定時器(主要用于動畫)

8. 多線程操作

驅動層

GameByro對圖形接口進行了封裝,將圖形API從引擎的渲染系統中剝離出來,在PC系統上,GameByro同時支持DX9和DX10兩種接口。

DX9渲染器特性

l GameByro不允許多個DX9Renderer對象同時存在,且不能與DX10Renderer共存。但在同一幀內,GameByro的DX9Renderer可以同時渲染多個窗口。

l GameByro的DX9渲染器支持對資源的多線程訪問,同時也支持對資源的預載,但是多線程的操作仍然受到嚴格的限制。

l DX9Renderer 的固定管線蒙皮操作最少支持4塊骨骼(矩陣),同時基于shader的蒙皮操作支持30塊骨骼。

l DX9Renderer通過對后臺緩沖的多重采樣支持全屏抗鋸齒,范圍在2倍到4倍之間。

l 大多數硬件在DX9下對幾何體的一個單一的piece所能接受的光照數量都有一定的限制(指渲染的一個批),如果超過這個限制,GameByro會根據距離或者是影響因子放棄一些光照。正因如此,在應用程序中,當8個以上的逐頂點光照作用于同一對象時,就會有一些被拋棄。

l DX9Renderer提供了視口的左右反向功能,用于實現后視鏡、立方體貼圖表面繪制等功能。

l DX9Renderer支持頂點霧,可以通過相關接口設置霧的最大值。

l DX9Renderer完全支持DX的紋理格式。應用程序可以將自己的Direct3D textures提供給GameByro,引擎會自動將其封裝到自己的材質對象中并允許添加屬性和特效。通過提供自己的DX的紋理格式,GameByro能夠正確的使用自并非天然支持的紋理格式。

l 紋理相關特性和限制:DX9Renderer需要顯卡支持在同一pass中至少使用兩個紋理,否則渲染器則不會創建成功。此外受限于硬件的功能還有:

1. Cube Mapping(立方體紋理)

2. Specular Bump Mapping(凹凸鏡面貼圖)

3. Diffuse Bump Mapping(凹凸反射貼圖)

4. Non-Power-of-Two Texture Size(編長非二整數冪的紋理):使用這種紋理有如下限制:紋理尋址模式必須設置為clamp,Mipmapping不能使用。

5. Texture Downsizing(紋理精度縮減)

6. Texture Compression(壓縮紋理),DX9Renderer支持載入經過壓縮的紋理格式,并提供了紋理即時壓縮的功能。如果硬件支持壓縮紋理,DX9Renderer可以將經過壓縮的紋理數據直接交給硬件處理,否則DX9Renderer會自動將數據解壓后再交給硬件。

7. Texture Apply Modes Supported:DX9Renderer不支持APPLY_DECAL紋理應用模式。

8. Texture Format Requests(紋理格式要求):精確的紋理像素映射依賴于目標硬件和顯示器像素位寬。

9. Palettized Texture Formats(調色板紋理格式的支持)。

10. Sphere Mapping(球面映射):GameByro中所有的渲染器都支持世界空間中的球面映射。

11. DX9Renderer支持加載包括DDS、TGA、BMP格式的文件。Cube textures和volume textures都能被正確的加載,但是只能通過三維坐標尋址。

12. GameByro的編輯器支持導出DX原格式的紋理,并在加載的時候不進行格式轉換。將DX格式的紋理直接交給DX處理。

引擎渲染系統分析

GameByro的渲染是由幀渲染系統(Frame Rendering System) 控制的,幀渲染系統封裝了每一個批次的繪制過程,這樣可以方便的控制整個渲染流程。

陰影系統:

GameByro的陰影系統是使用幀渲染系統的典范,通過對已有的類以繼承的方式進行功能擴展,實現了靈活的陰影渲染功能。GameByro自身支持三種光源的陰影圖生成,分別為點光源(全方向光)、平行光、聚光燈。

陰影系統統一由一個管理器負責控制。陰影的算法被封裝成了一個個類對象中。系統中同時存在著幾種陰影技術,即可以選擇使用,也可以同時使用幾種陰影技術作用于同一幾何體。陰影系統會自動裁剪掉那些沒有陰影接受體的光源,同時在計算每個光源所產生的陰影時,會裁剪掉那些不受此光源影響的幾何體,達到性能優化的目的。用戶很容易對陰影系統進行擴展,實現自己的陰影算法。

GameByro的陰影主要是基于shadowMap技術,點光源使用了立方體陰影圖,軟陰影則使用了方差陰影圖技術(VSM)。

GameByro的陰影系統集成到了場景編輯器中,可以在編輯器中直接為光源指定陰影效果,所見即所得,提高了開發效率。

clip_image002

(如圖所示,在編輯器中同時使用點光源陰影和方向光產生的軟陰影)

地形系統:

GameByro的terrain是簡單易用的,并且方便為其擴展,用以滿足項目的其他功能需求。

地形系統由以下幾部分組成:

clip_image004

1. NiTerrainComponent:是整個地形系統的入口,通過Terrain Interactor可以像訪問容器一樣訪問NiTerrainComponent所有的sub-component。

2. Terrain Interactor 地形迭代器,通過Terrain Interactor可以啟動所有的數據查詢,比如簡單的碰撞檢測,meta-data查詢,高度圖導入和文件加載。幾乎所有基于terrain系統的操作都是通過Terrain Interactor完成的。

3. NiTerrainSectorComponent 的內部主要包含一個負責組織地形數據塊的四叉樹。此對象負責從磁盤加載執行物體與地形的射線相交查詢,轉換地形幾何體,管理內部資源(包括共享的頂點流和shader)。同時NiTerrainSectorComponent還負責進行四叉樹的遮擋查詢和生成可見集。

4. Data Leaves and Blocks 四叉樹的切分等級是通過NiTerrainComponent設置的,四叉樹的每個節點都包含一個地形塊,塊的邊長必須是2的整數冪。四叉樹的根節點等級為N,葉節點為0,由高到底細節依次增加,等級為0的葉節點所包含的地形塊擁有最高的細節。

clip_image006

5. Material Layers:地形系統通過掩碼圖來為地形指定材質。掩碼的數據指定了地表的每個部分所對應的材質。同一地表最多支持四種材質,根據各自的權重進行混合,權重數據也是通過掩碼來獲得。

材質在地形的渲染系統中扮演著很特殊的角色,可以通過對材質指定meta-data來附載其他的信息(比如在雪地行走的聲音),同時也可以通過對材質的紋理貼圖為地表增加頂點或像素著色程序。此外每種材質可以包含如下指定類型的紋理貼圖:

l Diffuse/Base Map 反射貼圖,通過3或4個通道決定反射光的顏色。

l Detail Map 細節貼圖,為反射貼圖提供Alpha值。

l Normal Map 法線貼圖。

l Parallax Map 視差貼圖,用來保存表面像素的高度偏移信息。

此外GameByro還提供了簡單的地形射線追蹤和水面渲染。地形射線追蹤目前的實現很簡單,就是用一個射線查詢地表的三角形,以后會與Physics進行集成,支持通過物理引擎l實現物體與地表的碰撞檢測。水面渲染主要是用兩張紋理動畫混合而成,通過凹凸貼圖來表現水波。引擎為水面所在的地表生成一個灰度圖,保存地表距離水面的高度。這里預先定義了兩種顏色,深水顏色和淺水顏色,如果水面以下沒有地表就直接使用深水顏色。再像素著色器中可以對高度圖進行采樣,從而得出當前像素的水深,然后根據這個深度在深色和淺色之間進行差值,得到最終水的顏色。不過這個效果并不是很理想,如需更好的效果,還需要對其進行擴展,比如說,增加反射和折射等。

clip_image008

材質

GameByro的材質主要是通過3DMAX的插件進行編輯的,并提供了標準的材質節點。

(在GameByro中,材質節點的主要作用是負責根據著色過程生成相應的shader代碼)這個節點一共有9個通道,并提供了大量可供調整的參數,這樣就可以讓美術方便的使用逐像素光照、視差貼圖、環境體貼圖這些效果,在游戲中,GameByro通過不同的材質屬性和不同的光照環境編譯出不同的shader代碼,以二進制的形式保存在磁盤上,下次啟動時載入內存,這樣就不用重復編譯,但在第一次進入游戲中時會有些延遲。靈活強大的材質是次世代引擎的重要特征,GameByro在這方面做到了靈活,但是美術仍然不能通過可視化工具控制材質的處理過程,只能編輯資源和修改參數,編輯性還不夠強大。

Shader

GameByro提供了一個極具擴展性的shader系統,并將它與藝術創作工具緊密結合。GameByro定義了自己的shader格式,基于文本的.NSF文件和基于二進制的.NSB文件,.NSF文件編譯后生成.NSB文件,這個過程即可以在開發時完成,也可以在運行時進行。 .NSF文件使用的是GameByro自定義的語法,并使用自己的語法分析器將其編譯成相關平臺的代碼。實際上,GameByro的shader系統在應用程序和GPU程序之間做了一層封裝,屏蔽了不同平臺之間的差異,使得應用程序可以用相同的接口來與GPU之間進行交互,而GPU程序最終還是通過cg或hlsl來實現的,這樣做的好處是,當平臺發生改變時,只需要根據具體的平臺來編寫相應的shader程序,而不需要去修改應用程序。當然,shader系統也直接支持cg和hlsl格式的文件,使用方法同NSF、NSB文件相似。GameByro的Shader系統提供了一套完整的查錯機制,方便使用者對程序進行debug。

GameByro的shader系統集成到了所有的配套開發工具中,這樣就實現了所見即所得,美術在工具中就可以直接看到資源在游戲中的效果,從而提高了開發效率。

GameByro通過引入自己的shader文件格式為跨平臺提供了方便,同時也增加了系統的復雜性,使用起來稍微有點繁瑣,開發人員又不得不去熟悉它的語法,如果開發中不考慮跨平臺的話,想要自己開發特效,也可以不使用NSF文件,直接使用fx格式的文件。

引擎自帶的特殊材質

AdditiveLightMapsMaterial(附加光照圖材質,使用額外的光照圖紋理來混合當前場景光照計算的結果。下面的插圖是使用投射光照圖紋理的渲染效果。)

clip_image010

AlphaTextureBlender(紋理Alpha混合)

clip_image012

Aniso(各向異性光照,左下的飛機)、Halo(光暈效果。上面的飛機)

clip_image014

ASMSkinningLighting(參與光照計算的骨骼動畫蒙皮)

ASMSkinningNoLighting(不參與光照計算的骨骼動畫蒙皮,效率經過了優化)

BaseBumpWithSpatialGlow(帶有輝光效果的凹凸貼圖)

clip_image016

Chrome(金屬外表,使用基本紋理、漫反射cube map、鏡面反射cube map、法線貼圖等效果實現類似于金屬表面的光澤和質感,并支持基于此效果的蒙皮操作)

clip_image018

Colorize(使用一個自定義的屬性來動態的設置或者修改顏色)

clip_image020

FXSkinning and HLSLSkinning(使用可編程渲染管線進行骨骼動畫的蒙皮)

GeneralGlow(普通輝光效果)

GeneralDiffuseSpecularGlow(普通鏡面反射高光輝光)

clip_image022

GeneralDiffuseSpecular(普通鏡面反射高光,支持蒙皮操作)

clip_image024

Dot3BumpMap(凹凸貼圖,右圖為蒙皮效果)

clip_image026

Glass (玻璃效果)

clip_image028

OilyFilm(油狀薄膜)

clip_image030

LuminanceTransfer(類似于熱源偵測儀的效果)

clip_image032

Outlining(藍圖或草圖)

clip_image034

ParallaxMapping(視差貼圖,下面右圖是使用了ParallaxMapping的效果)

clip_image036

PerPixelLighting(逐像素光照,同時支持固定管線和可編程渲染管線)

clip_image038

SkinnedToonShadingWithOutline(卡通渲染,支持骨骼蒙皮、描邊)

clip_image040

紋理

GameByro的紋理系統支持多重紋理、投射紋理、動態紋理、特效紋理,并且使用紋理的一些高級特性是平臺無關的。當然GameByro中紋理的功能仍然受限于硬件特征。主要特性和限制見渲染器。

工具及插件:

GameByro提供了場景編輯器,資源瀏覽器,資源的物理模型瀏覽器、動畫編輯工具,字體創建工具,以及3DMAX、MAYA插件,材質編輯是在插件中進行的,這套工具包含了完整的3D資源開發流程。

物理系統

GameByro通過PhysX提供物理仿真模擬,只需幾行簡單的代碼就可以將GameByro的場景和PhysX建立起聯系,不過需要在顯式的調用相關接口來進行物理仿真對象和場景對象間的同步,即將物理仿真的結果作用于場景中的對象。同時,還可以通過參數來決定是否需要等待物理仿真運算的結果。這就保證了一定的靈活性,例如,用戶可以不對靜態物體進行同步,達到優化的目的。還可以通過把更新的接口放在下一次循環開始的時候調用,這樣可以減少由于等待物體仿真模擬造成線程的阻塞,充分的利用了CPU資源。

粒子系統

GameByro的粒子系統為3ds max 和 Maya等粒子生成工具提供了完整的插件系統,并完全支持軟粒子,即粒子會受到力的影響。

clip_image042

流處理引擎

GameByro實現了一個完全跨平臺的流處理引擎。使用者可以方便的利用它完成多線程任務,如資源的加載等,完全發揮多處理器平臺的威力,而不用關注底層細節。

效率分析:

為了對GameByro進行全面的評估,筆者試著對GameByro的渲染效率進行了簡單的測試,本人的機器配置如下:

l CPU:E2180

l GPU:2400PRO

l 內存:2GB

基本可以代表當前中低端玩家的配置。

場景一

下圖為一個大的室外地形場景,包括建筑物、水面,地表使用了法線貼圖,除了植被以外,基本包含MMORPG的大部分室外場景要素。最后測試的結果平均幀數為21幀。幀數偏低的原因是整個場景使用了逐像素光照,同時沒有采用LOD進行優化。

clip_image044

場景二

如圖所示場景中有100個角色在做不同的動畫,每個角色有51個骨骼,整個場景共有287900個多邊形和556600個頂點,并且場景中有一個點光源和平行光源,在沒有陰影的情況下幀數大約在27~28幀左右。這些骨骼動畫使用了GameByro提供的骨骼動畫優化方法,性能有一定提升。

clip_image046

由以上結果可以看出,GameByro的骨骼動畫渲染效率尚可,而室外地形渲染系統的性能稍顯不足,再沒有角色和植被的情況下,僅能達到22幀左右,如果在實際的游戲環境還要算上其他游戲系統(網絡、邏輯、UI等)的性能消耗,這是不足以讓玩家流暢進行游戲的,還需進一步手動的優化。

總結

GameByro擁有一套靈活的架構,便于使用和擴展,易于上手;配套的開發工具比較齊全,擁有完整的美術開發流程;完全支持跨平臺,便于游戲的移植;同時由于為了保證靈活性,在設計上面比較偏重于功能和擴展,而不是性能。

高度的可定制性帶來的是較低的整合,GameByro沒有提供游戲框架,地圖編輯器也僅僅實現了最通用的功能,即地表和物件的擺放。這就說明,如果要使用GameByro開發產品,就需要自己整合GameByro,并對其進行一定的修改和擴展。這也是它與UnrealEngine3區別最大的地方。

 

作者:葉起漣漪

Feedback

# re: GameByro 特性分析  回復  更多評論   

2009-04-22 16:50 by 巫云
商業的啊……

# re: GameByro 特性分析  回復  更多評論   

2009-04-24 07:51 by Timesking
這篇文章分析的很深入,繼續期待樓主的深入分析

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美在线播放视频| 亚洲韩国日本中文字幕| 日韩亚洲欧美成人| 亚洲级视频在线观看免费1级| 中文av字幕一区| 日韩视频一区二区三区在线播放 | 麻豆成人综合网| 午夜精品福利在线| 久久国产精品亚洲77777| 久久久噜噜噜久久中文字免| 噜噜噜躁狠狠躁狠狠精品视频| 久久久久久久高潮| 欧美aⅴ99久久黑人专区| 亚洲人久久久| 亚洲欧美韩国| 久久午夜精品| 欧美视频一区二区在线观看| 99精品国产在热久久| 亚洲视频在线一区观看| 久久九九国产精品怡红院| 免费欧美在线| 亚洲精品视频一区| 久久久久久国产精品mv| 国产精品成人在线| 中文亚洲视频在线| 欧美黑人在线观看| 久久午夜电影网| 韩国一区二区三区在线观看| 久久国产精品久久久久久久久久| 亚洲精品偷拍| 欧美日韩色综合| 亚洲综合成人在线| 亚洲色图制服丝袜| 伊人蜜桃色噜噜激情综合| 欧美成人精品1314www| 欧美成人亚洲| 99精品视频免费| 亚洲一区二区网站| 久久尤物视频| 亚洲网在线观看| 亚洲黄色视屏| 欧美日韩视频在线第一区| 一区二区三区高清在线| 亚洲视频在线视频| 国产一区二区按摩在线观看| 久久久久久网站| 欧美电影在线| 欧美一级在线视频| 免费欧美日韩国产三级电影| 日韩视频在线观看免费| 亚洲图片你懂的| 亚洲日本中文字幕免费在线不卡| 国产欧美韩日| 亚洲激情av| 韩国av一区二区三区在线观看| 亚洲国产二区| 国产一区二区三区精品欧美日韩一区二区三区| 久久九九精品99国产精品| 欧美顶级少妇做爰| 久久综合综合久久综合| 国产精自产拍久久久久久| 亚洲福利视频一区| 影音先锋欧美精品| 性欧美超级视频| 亚洲欧美日本日韩| 欧美激情国产精品| 亚洲日本va午夜在线影院| 亚洲高清视频在线| 女仆av观看一区| 欧美国产日韩xxxxx| 亚洲二区在线| 欧美高清视频| 在线综合+亚洲+欧美中文字幕| 亚洲日本电影| 国产精品国产三级国产aⅴ9色| 亚洲精品乱码久久久久久久久| 夜夜嗨一区二区| 国产精品蜜臀在线观看| 欧美伊人影院| 亚洲高清视频一区| 亚洲免费观看高清完整版在线观看熊| 老司机午夜精品| 99精品视频一区| 久久九九热re6这里有精品| 伊人精品成人久久综合软件| 免费久久99精品国产| 亚洲自拍三区| 亚洲国产美女精品久久久久∴| 亚洲一级片在线看| 久久久久久网站| 久久精品国产一区二区三区免费看| 国产精品免费一区二区三区在线观看| 亚洲综合成人婷婷小说| 免费欧美日韩国产三级电影| 亚洲一区二区三区午夜| 在线观看亚洲视频| 国产精品亚洲综合久久| 欧美剧在线观看| 久久久精品日韩欧美| 亚洲剧情一区二区| 亚洲国产导航| 最新国产精品拍自在线播放| 亚洲欧美精品中文字幕在线| 亚洲欧洲一区二区三区| 一色屋精品视频在线看| 国产欧美视频在线观看| 欧美性片在线观看| 欧美日韩不卡在线| 欧美日韩人人澡狠狠躁视频| 欧美韩国一区| 欧美日韩精品综合| 国产精品私房写真福利视频| 欧美色欧美亚洲另类七区| 欧美午夜性色大片在线观看| 欧美v日韩v国产v| 欧美激情欧美狂野欧美精品 | 久久超碰97人人做人人爱| 亚洲综合色婷婷| 久久久久久久波多野高潮日日 | 亚洲黑丝在线| 亚洲精品视频在线观看免费| 亚洲毛片在线免费观看| 亚洲欧美日韩久久精品| 久久人人爽爽爽人久久久| 亚洲精品护士| 久久久久青草大香线综合精品| 欧美亚洲综合另类| 国产精品久久久| 亚洲视频一区二区免费在线观看| 性欧美精品高清| 香港久久久电影| 国产精品va| 一区二区不卡在线视频 午夜欧美不卡在 | 久久精品国产99国产精品澳门| 欧美区亚洲区| 亚洲精品三级| 一区二区激情| 欧美日韩免费区域视频在线观看| 欧美激情一区二区久久久| 亚洲电影免费观看高清完整版在线观看| 欧美一区二区黄| 久久综合网络一区二区| 一区二区在线看| 免费观看一区| 亚洲精品久久久久久下一站| 99re6这里只有精品| 欧美美女视频| 亚洲视频在线看| 久久久精品性| ●精品国产综合乱码久久久久| 久久精品国产免费| 欧美va亚洲va香蕉在线| 亚洲日本va在线观看| 欧美黄色一级视频| 中文亚洲字幕| 免费欧美日韩| 国产精品99久久久久久久久| 国产精品电影网站| 久久av资源网| 91久久午夜| 午夜电影亚洲| 1000部国产精品成人观看| 欧美黄色aaaa| 亚洲在线观看视频网站| 久久全球大尺度高清视频| 亚洲乱亚洲高清| 国产精品二区三区四区| 久久精品国产77777蜜臀| 欧美国产一区在线| 亚洲女性喷水在线观看一区| 国内揄拍国内精品少妇国语| 欧美电影免费观看| 午夜久久影院| 亚洲精品一级| 乱人伦精品视频在线观看| 一本色道久久99精品综合| 国产一区二区三区久久悠悠色av | 中文成人激情娱乐网| 久久人人爽人人爽| 亚洲香蕉视频| 在线观看国产成人av片| 国产精品mv在线观看| 久久人人看视频| 一区二区三区四区五区精品视频| 久久久午夜视频| 亚洲一区国产精品| 亚洲国产一二三| 国产亚洲精品久| 欧美三级精品| 欧美高清在线视频| 国产伦精品一区二区三区照片91| 久久夜色精品亚洲噜噜国产mv | 日韩西西人体444www| 六月天综合网| 久久国产精品久久精品国产| 99国产一区| 亚洲人成啪啪网站| 激情欧美一区二区三区| 国产精一区二区三区| 欧美日韩在线大尺度|