本项目作为图书《开发一个图形渲染引擎》[Document/目录.md]的配套源代码发布
虽然图形渲染(Graphics Rendering)引擎在目前并没有标准定义,但是,与软件工程中很多其它领域的情况一样——比如LLVM框架已经成为了编译器领域事实上的标准——随着图形渲染技术在几十年间的发展,图形渲染引擎的功能不断趋于稳定,目前正是对图形渲染引擎未成文的事实上的标准进行一次系统性总结的最佳时机。
我们知道“程序=数据结构+算法”,图形渲染引擎可以认为由场景(Scene)和渲染流程(Rendering Pipeline)两部分组成。场景即程序中的数据结构部分,描述了我们输入到渲染流程的数据;而渲染流程即程序中的算法部分,对输入的场景进行处理,最终输出图像(Image)的过程(在一些文献中,图形渲染(Graphics Rendering)又被称为图像合成(Image Synthesis))。本书将会从场景和渲染流程两个方面对图形渲染引擎进行阐述。
- 1.并行编程框架——PatriotTBB
- 2.可移植分发——Bionic-based Linux //Bionic-based RenderDoc
-
1.材质系统——PatriotMaterialCompiler
-
2.开发适用于Direct3D12/Vulkan/Metal的内存分配器
参考文献:
- Intel TBB
[Hudson 2006] Richard L. Hudson, Bratin Saha, Ali-Reza Adl-Tabatabai, Benjamin C. Hertzberg. "McRT-Malloc: a scalable transactional memory allocator". ISMM 2006.
[Kukanov 2007] Alexey Kukanov, Michael J.Voss. "The Foundations for Scalable Multi-core Software in Intel Threading Building Blocks." Intel Technology Journal, Volume11, Issue 4 2007.- Vulkan Memory Allocator
- D3D12 Memory Allocator
- [Gelado 2019] Isaac Gelado, Michael Garland. "Throughput-Oriented GPU Memory Allocation." PPOPP 2019.
- 3.设计一套比较完整的实时全局光照解决方案
参考文献:
- 实时渲染
[Moller 2018] Tomas Akenine Moller, Eric Haines, Naty Hoffman, Angelo Pesce, Michal Iwanicki, Sebastien Hillaire. "Real-Time Rendering, Fourth Edition." A K Peters 2018. / 10 Local Illumination
[Moller 2018] Tomas Akenine Moller, Eric Haines, Naty Hoffman, Angelo Pesce, Michal Iwanicki, Sebastien Hillaire. "Real-Time Rendering, Fourth Edition." A K Peters 2018. / 11 Local Illumination- 光线追踪
[Pharr 2016] Matt Pharr, Wenzel Jakob, Greg Humphreys. "Physically based rendering: From theory to implementation, Third Edition." Morgan Kaufmann 2016.
[Haines 2019] Eric Haines, Tomas Akenine Moller. "Ray Tracing Gems." Apress 2019.
Intel Embree
AMD Radeon Rays- 辐射度
[Cohen 1993] Michael Cohen, John Wallace. "Radiosity and Realistic Image Synthesis." Morgan Kaufmann 1993.
[Coombe 2005] Greg Coombe, Mark Harris. "Global Illumination Using Progressive Refinement Radiosity." Chapter 39, GPU Gems 2, 2005.- 体素
[Moller 2018] Tomas Akenine Moller, Eric Haines, Naty Hoffman, Angelo Pesce, Michal Iwanicki, Sebastien Hillaire. "Real-Time Rendering, Fourth Edition." A K Peters 2018. / 13.10 Voxels
NVIDIA GVDB Voxels
OpenVDB- VXGI
[Crassin 2011] Cyril Crassin, Fabrice Neyret, Miguel Sainz, Simon Green, Elmar Eisemann. "Interactive Indirect Illumination Using Voxel Cone Tracing." SIGGRAPH 2011
NVIDIA VXGI- 材质
SONY OSL
NVIDIA MDL
- 1.场景管理:对NVIDIA SceniX、NvPro-Pipeline和Pixar Hydra的源码进行剖析,并设计符合Vulkan和Direct3D12用法的场景管理模块 //设计符合Vulkan和Direct3D12用法的渲染框架,尽可能在用法上统一Vulkan和Direct3D12
- 2.其它图形相关的需求在[Document/目录.md]中列出