HRE 是一個即時、基於物理的叢集渲染器,使用 OpenGL 構建,並基於 Ola Olsson、Markus Billeter 和 Ulf Assarsson 的論文 Clustered Deferred and Forward shading 中描述的技術。該專案的目的是建立一個測試框架來展示延遲和前向圖形技術(因此是混合部分)並檢查叢集著色的優勢。我寫了一篇很長的部落格文章,裡面充滿了很酷的動畫,可以作為高效渲染演算法的介紹,以及我的集群著色實現的詳細指南,所以一定要在這裡查看!
選擇該演算法是因為其相對於傳統延遲/平鋪解決方案的兩大優勢:它允許更自由地根據需要選擇前向或延遲著色路徑,並且更適合現代 GPU 性能趨勢的長期發展。它已經在過去幾年的一些最精美的遊戲中成功實現,其中一些著名的例子是:《DOOM 2016》、《正當防衛 3》和《底特律:成為人類》。
不幸的是這個項目不再維護。發布這篇文章後不久,我就被聘為 Rockstar Games 的圖形程式設計師,但我沒有時間再從事這種規模的副專案了。我計劃繼續保持下去(以及我的其他主要圖形項目 SSGE),以便其他人可以看到我是如何進入這個行業的。我仍然會幫助任何遇到任何問題或對此有任何疑問的人。請隨時在此處或在我的 Twitter 上聯繫我,討論此問題或您想談論的任何其他 GFX 主題!感謝所有檢查該項目的人! :D
穩定版本可以在 HRE 版本頁面上找到。
目前僅支援 Windows 平台。
第一個開發週期於 2018 年 9 月開始,並於 2018 年 12 月結束,其中包含基於影像的照明並發布了第一個穩定版本:HRE 0.01「Aachen」。在接下來的幾個月中,我將解決「專案」部分中概述的問題,首先修復剩餘的非關鍵錯誤,然後繼續對材料系統進行重大重寫。以下是我計劃在未來幾個月內包含的引擎功能列表,它顯然可能會發生變化以及所有這些內容。
我將在每個主要里程碑的末尾撰寫隨附的部落格文章,概述新功能及其實現以及我在此過程中發現的任何複雜情況。同時,這是第一篇文章,其中包含其他傳統渲染演算法的概述並建立了叢集渲染的案例。
Hybrid Rendering Engine
| -- assets
| | -- models # Meshes and textures
| | -- scenes # Scene description files in JSON format
| | -- shaders
| | | -- computeShaders # Compute shaders for clustered forward
| | | -- OldShaders # Shaders not currently in use
| | ` -- currentShaders # Shaders for the current rendering pipeline
| ` -- skyboxes # Skyboxes in either cubemap or equirectangular map form
| -- build # CMake compile
| -- include # Project header files
| -- libs # Check dependencies section for descriptions & links
| | -- ASSIMP
| | -- Dear imgui
| | -- Glad
| | -- Json c++
| | -- GLI
| | -- GLM
| | -- stb_image
| ` -- SDL2
| -- modules # CMake lib setup scripts
|-- src # C++ implementation files
` -- CMakeLists.txt # CMake build script
在我之前的專案 SSGE 中,我努力將依賴項數量減少到最低限度。然而,這一次,鐘擺向另一個方向擺動,我沒有對我可以在專案中包含哪些函式庫做出任何限制(在合理範圍內)。我這樣做是因為我想更熟悉在 C++ 中包含和使用外部函式庫的過程。
以下是項目中目前包含的庫的清單:
以下是未包含的庫的清單:
所有包含的庫都在其各自的許可證下表示,可以在上面的連結或 libs 資料夾中的 licenses.txt 文件中找到。
在 wiki 的此頁面中,我或多或少地保持了該項目的綜合索引參考列表。然而,當我發現自己經常返回其中的一部分以進一步閱讀或需要靈感時,因此我在下面添加了連結來分享它們並傳播它們的精彩之處。檢查一下!
感謝所有 3D 和紋理藝術家,他們讓自己的資源免費使用,而且看起來非常漂亮。如果不是你們,我可能還是會整天盯著那個無聊的猶他州茶壺!
如果我錯誤確認、錯誤歸因或遺漏了任何參考資料,請建立一個新的 GitHub 問題或在 Twitter 上向我發送 DM,我將確保立即修復它。
感謝 Kostas Anagnostou 和 Eric Arnebäck 在過去幾個月花時間回答我的所有問題,你們的解釋讓我更容易理解每個令人畏懼的話題!
麻省理工學院許可證
版權所有 (c) 2018 安吉爾‧奧爾蒂斯
特此免費授予任何獲得本軟體和相關文件文件(「軟體」)副本的人不受限制地使用本軟體,包括但不限於使用、複製、修改、合併的權利、發布、分發、再授權和/或銷售軟體的副本,並允許向其提供軟體的人員這樣做,但須滿足以下條件:
上述版權聲明和本授權聲明應包含在本軟體的所有副本或主要部分中。
本軟體以「現況」提供,不提供任何明示或暗示的保證,包括但不限於適銷性、特定用途的適用性和不侵權的保證。 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE軟體.