CE3和UE3在多執行緒渲染方面的簡單對比

2021-06-28 19:24:09 字數 1018 閱讀 8829

由於剛剛開始看ce3,對很多細節都還不是很熟,所以下面的有的針對ce3的描述可能是不準確的,在此先表歉意。

ce3和ue3都支援多執行緒渲染,即有乙個單獨的渲染執行緒,當然它們都可以通過簡單的辦法來開關,ce3通過r_multithreaded的值來控制,ue3傳遞命令列-onethread即可關閉多執行緒渲染。在某些情況下,比如需要使用perfhud來除錯程式的時候,需要關閉多執行緒渲染。另外ue無論是在編輯器還是遊戲中,都預設開啟多執行緒渲染,而ce在編輯器中是禁止多執行緒渲染的。

整體架構上來說,在這方面ue3還是佔優勢的,ue3很好的處理了主線程資源和渲染資源之間的關係,比如ue3中的基本渲染單元是primitivecomponent,那麼它在渲染執行緒中有乙個輕量級的通用場景代表:primitivesceneinfo,以及用於渲染的針對不同primitivecomponent不同的proxy:primitivesceneproxy;primitivesceneproxy被primitivesceneinfo控制。這樣的好處就在於主線程無須關心渲染執行緒的資源是如何處理的,至少對於上層編碼來說,是這樣的。而對於渲染執行緒來說,它也無須向主線程交代什麼,比如說主線程要動態建立乙個模型,那麼主線程無須關心渲染執行緒是如何處理的,也不需要主線程的staticmeshactor去管理渲染執行緒擁有的vertexbuffer、indexbuffer、inputlayout。

ce3在這方面相對要單薄的多,不像ue3那樣的清晰,如果在ce中主線程需要建立乙個諸如texture,vb之類的資源,就需要先把命令序列化到命令緩衝中,然後在同步等待渲染執行緒完成操作。毫無疑問,這不如ue3的架構合理。不過ce3通過一些「大指令」比如init指令來讓渲染執行緒一次執行許多的操作,比如分類vb,ib,建立texture等等,這樣使得大量的操作全部在渲染執行緒完成,這樣可以顯著減少需要同步的次數。

另外ce裡面debug模式下感覺開啟多執行緒渲染之後,幀率提公升也算是較為明顯的,不過ce的debug模式確實相當的卡,目前還沒有去看它到底為什麼卡,或許跟ogre的debug一樣吧,哈哈。release下面的ce效率真的挺高的,如果ue能有這樣的效率,那它就不是ue了,它是uce。。。

CE3和UE3在多執行緒渲染方面的簡單對比

由於剛剛開始看ce3,對很多細節都還不是很熟,所以下面的有的針對ce3的描述可能是不準確的,在此先表歉意。ce3和ue3都支援多執行緒渲染,即有乙個單獨的渲染執行緒,當然它們都可以通過簡單的辦法來開關,ce3通過r multithreaded的值來控制,ue3傳遞命令列 onethread即可關閉多...

UE3 光照 陰影

對於建立高水準環境而言,關卡中幾何體的照明方式起著至關重要的作用。人類眼睛和腦袋希望光源能夠通過特定方式與表面進行互動,填充乙個房間或投射陰影。任何背離這條原則的東西都可能會破壞使用者的帶入感體驗。虛幻引擎 3 的光照系統是非常靈活的,可以協調地使用所有不同的光源和陰影型別,為所有遊戲建立剛好合適的...

UE3 距離場陰影

文件變更記錄 由 daniel wright 建立。請檢視技術部落格檢視關於 主定向光源 dominant directional light 的更多資訊。距離場陰影是基於一篇最近在經過 alpha 測試的放大功能 作者 valve software 上的 實現的。它的原理是使用到最近陰影過渡的距離...