Skip to content
EclipsedMango edited this page Apr 21, 2026 · 1 revision

MangoRendering Engine Documentation

Welcome to the MangoRendering Engine documentation. This guide covers the core concepts and features needed to work with the engine effectively.

What is MangoRendering?

MangoRendering is a modern 3D rendering engine built in C++ with OpenGL. It provides a complete rendering solution with advanced features like physically-based rendering (PBR), dynamic lighting with real-time shadows, skeletal animation, and an intuitive node-based scene system.

Quick Navigation

Core Concepts

Scene Graph

The engine uses a hierarchical node-based scene graph where every object is a Node3d. This provides intuitive parent-child relationships and makes managing complex scenes straightforward.

PBR Materials

Materials follow physically-based rendering principles, allowing realistic lighting interactions. Standard texture maps include: albedo, normal, roughness, metallic, ambient occlusion, displacement, and emissive.

Dynamic Lighting

The engine supports Directional, Point, and Spot lights. Lighting is computed using a cluster-based light culling system for efficiency. Shadow mapping provides real-time shadows with specific limitations per light type.

Rendering Pipeline

The rendering pipeline is built on OpenGL and features:

  • Z-prepass for efficient visibility determination
  • Forward rendering with per-pixel light culling
  • Cluster-based light culling system for efficient lighting
  • Post-processing with tone mapping operators
  • Portal rendering for complex visibility

Platform Requirements

  • OpenGL 4.3+
  • C++17 or later
  • SDL3 for windowing and input
  • GLM for mathematics

Learning Path

  1. Start with Getting Started to understand basic engine concepts
  2. Learn about Nodes and Scene to structure your scenes
  3. Explore Lighting and Shadows to add atmosphere
  4. Master Materials and Rendering for visual polish
  5. Implement cameras as covered in Cameras

Next Steps

Ready to dive in? Start with the Getting Started guide to learn the fundamentals!

Clone this wiki locally