- Rendering Engine
- Support for Multiple Graphics APIs : OpenGL | Vulkan | DirectX12 | DirectX11 | Metal
- Content Export Pipeline : Create Maya/Max Plugins to export meshes based on Renderers needs. (Assimp Commercial Licence -> Pay)
- Texture Compression Libraries
- Material System : Artists Configure shaders, textures, parameters to import in game
- Game-side Manager of Models/Materials/Lights
- Good Visibility System (Frustum/Occlusion) (VisibilityBuffers?)
- Multi-Threded Submission System to reduce cost of submission to GPU
- Lighting/Shadow Rendering System
- PostFX System
- Particle System
- Detailed Performance Profiling System
- Scene Graph (Spatial Partitioning)
- LOD / Tessellation
- Camera
- Animation
- Sorting
- Other Techniques
- Reflections, Ambient Occlusion, ...
- Non-Rendering
- Assets/Packaging
- Audio
- Collision
- Input
- Realtime update of Shaders, Materials, Textures
- Rendering APIs
- Render Context
- Swap Chain
- Vertex and Index Buffer
- Texture, Buffer
- Shaders (maps to Material above)
- States (Raster, Depth, ...)
- Pipelines
- Render Passess
- Framebuffers
- ----------- Modern APIs --------------
- Command Queue, Command Buffers
- Semaphore, Fence
- Descriptor Sets, Root Signatures, .... (Related to binding views/data to GPU Shaders)
-
Open Source Projects
- BGFX | Vulkan, OpenGl, DirectX12, Metal, WebGL, ...
- TheForge | Vulkan, Metal, DirectX12, DirectX11, PS4, XBOX, Stadia, ...
- DiligentEngine | Direct3D11, Direct3D12, Vulkan, OpenGL4.1, OpenGLES3.0+ | Intersting Engine Because:
- Good write ups and blogs on it's Rendering Architecture (links below)
- Autodesk Stringray Renderer | Not Opensourced but good blog posts
-
Blogs, Articles, Video Series
- Our Machinery | Engine developers with a passion for diversity, openness and knowledge sharing. Our previous work include the Stingray, Bitsquid and Diesel engines.
- Stingray / Bitsquid
- Stingray Renderer Walkthrough | 2017/02
- Overview
- Resources & Resource Contexts
- Render Contexts
- Sorting
- RenderDevice
- RenderInterface
- Data-driven rendering
- Stingray-renderer & Mini-renderer
- Shaders & Materials
- Stingray Renderer Walkthrough | 2017/02
- The Cherno - GameEngine Playlist | Developer at Frostbite with clean and good videos. (see Rendering Architecture Videos)
- Diligent Engine
-
Talks/Slides(GDC, Siggraph, ...)
- Destiny's Multithreaded Rendering Architecture | 2015 | Natalya Tatarchuk
- 'Destiny' Shader Pipeline | 2017 | Natalya Tatarchuk, Chris Tchou
- Optimizing The Graphics Pipeline with Compute | Frostbite
- Multithreading the Entire Destiny Engine | 2015 | Bungie's Barry Genova
- GPU-Driven Rendering Pipelines | Ubisoft | Assassin’s Creed Unity
- Designing a Modern GPU Interface | Brooke Hodgman
- Sascha Williems - Vulkan Examples
- I Am Graphics And So Can You | Dustin Land
- Vulkan Tutorial
- Vulkan in 30 Minutes | RenderDoc
- Modern Graphics APIs | Cool Pictures
- Niagara | Building a Vulkan Renderer
- Awsome Vulkan | Vulkan Resources
- Vulkan Hardware Info
- Performance Tweets Series: Root signature & descriptor sets - GPUOpen
- Descriptor binding: DX12 and Vulkan - Graphics and GPU Programming - GameDev.net
- Tips and Tricks: Vulkan Dos and Don'ts | NVIDIA Developer Blog
- Shader modules - Vulkan Tutorial
- Descriptor pool and sets - Vulkan Tutorial
- Choosing a binding model · Issue #19 · gpuweb/gpuweb · GitHub
- 13.2. Descriptor Sets
- Vulkan Memory Management | Developer.NVIDIA
- Vulkan Memory Management | The Khronos Group
- VulkanMemoryAllocator
- VULKAN MEMORY MANAGEMENT : HOW TO WRITE YOUR OWN ALLOCATOR
- Memory Management in Vulkan™ and DX12 | AMD
- Vulkanised 2018 - Memory Management in Vulkan | ARM
- Vulkan Device Memory - 5min read