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 安吉尔·奥尔蒂斯
特此免费授予获得本软件和相关文档文件(“软件”)副本的任何人不受限制地使用本软件,包括但不限于使用、复制、修改、合并的权利、发布、分发、再许可和/或销售软件的副本,并允许向其提供软件的人员这样做,但须满足以下条件:
上述版权声明和本许可声明应包含在本软件的所有副本或主要部分中。
本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途的适用性和不侵权的保证。在任何情况下,作者或版权持有者均不对因本软件或本软件中的使用或其他交易而产生或与之相关的任何索赔、损害或其他责任负责,无论是合同、侵权行为还是其他行为。软件。