Skip to content

Instantly share code, notes, and snippets.

@Erfan-Ahmadi
Last active March 19, 2024 03:46
Show Gist options
  • Save Erfan-Ahmadi/defe4ab99af97f624b68e0dccb0712ea to your computer and use it in GitHub Desktop.
Save Erfan-Ahmadi/defe4ab99af97f624b68e0dccb0712ea to your computer and use it in GitHub Desktop.
Rendering Engine Development

1. What does the Rendering Engine Need?

  • 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

2. Rendering API Side

  • 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)

3. Resources

4. Vulkan Resources

General Links

Vulkan Descriptor Binding

Vulkan Synchronization

Vulkan Memory Management

SPIRV

PBR

Other

5. Data-Driven Rendering

6. GPU Hardware Optimizations and Architectures

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment