Skip to main content

Overview

Godot Engine features a powerful and flexible rendering system that supports multiple rendering backends and techniques. The rendering architecture is built around the RenderingServer, which provides low-level access to all visual operations.

Rendering architecture

Godot uses a server-based architecture for rendering:

RenderingServer

The RenderingServer is the backend for all visual rendering. The entire scene system is built on top of it:
  • Completely opaque implementation
  • All rendering objects accessed via RIDs (Resource IDs)
  • Can bypass the scene system for maximum performance
  • Thread-safe operations via call_on_render_thread()
Using RenderingServer directly can improve performance when the scene system becomes a bottleneck, but won’t help if the GPU is already fully utilized.

Renderer types

Godot 4 offers three rendering backends, each optimized for different use cases:

Forward+ renderer

The default high-end renderer with advanced features: Features:
  • Clustered forward rendering
  • Unlimited lights and decals per scene
  • Advanced post-processing effects
  • Screen-space reflections (SSR)
  • Signed distance field global illumination (SDFGI)
  • VoxelGI for real-time global illumination
Best for:
  • Desktop and console games
  • High-end mobile devices
  • Projects requiring advanced lighting

Mobile renderer

Optimized for mobile devices while maintaining good visual quality: Features:
  • Forward rendering with optimizations
  • Limited lights per object
  • Mobile-optimized post-processing
  • Better battery life
  • Lower memory usage
Best for:
  • Mobile games (iOS, Android)
  • Lower-end devices
  • Battery-conscious applications
Limitations:
  • Maximum 8 lights affecting each object
  • No SDFGI
  • Simplified reflections

Compatibility renderer

OpenGL/WebGL-based renderer for maximum compatibility: Features:
  • OpenGL 3.3 / WebGL 2.0 support
  • Runs on older hardware
  • Web export support
  • Simplified rendering pipeline
Best for:
  • Web exports
  • Older computers
  • Maximum compatibility requirements
  • 2D projects
Limitations:
  • No advanced lighting features
  • Limited to basic post-processing
  • Lower performance ceiling
Choose your renderer carefully. Switching renderers requires restarting the editor and may require material adjustments.

Rendering pipeline

Understanding the rendering pipeline helps optimize your game:

3D rendering flow

1

Scene culling

Determine which objects are visible in the camera frustum using octree or other spatial structures.
2

Shadow mapping

Render shadow maps for directional, omni, and spot lights.
3

Opaque geometry

Render all opaque meshes with materials and lighting.
4

Sky rendering

Render the sky or background environment.
5

Transparent geometry

Render transparent objects in sorted order (back to front).
6

Post-processing

Apply effects like glow, DOF, tonemapping, and adjustments.

2D rendering flow

2D rendering uses a canvas-based system:

Viewports and scenarios

Viewports

Viewports are rendering targets that can display 3D or 2D content:

Scenarios (3D)

Scenarios are 3D world containers:

Canvas (2D)

Canvas is the 2D equivalent of scenarios:

Materials and shaders

Materials define how surfaces are rendered:

Lights and shadows

Light types

Shadow configuration

Rendering optimization

Occlusion culling

Level of detail (LOD)

Visibility ranges

Rendering layers

Control which objects are rendered by which cameras:

Performance monitoring

Common rendering settings

Configure in Project Settings > Rendering > Anti Aliasing:
  • MSAA (2x, 4x, 8x)
  • FXAA
  • TAA (Temporal Anti-Aliasing)
Available in Project Settings > Rendering > Environment:
  • Screen-space ambient occlusion (SSAO)
  • Screen-space indirect lighting (SSIL)
  • Screen-space reflections (SSR)
Options for indirect lighting:
  • SDFGI (Forward+ only)
  • VoxelGI probes
  • LightmapGI (baked lighting)
Adjust in Project Settings > Rendering > Quality:
  • Shadow quality
  • Texture filtering
  • Mesh level of detail

Headless mode

Run Godot without rendering:
In headless mode, most RenderingServer functions return dummy values. Useful for dedicated servers.

Best practices

Choose the right renderer

Match renderer to your target platform and visual requirements.

Use rendering layers

Separate objects into layers for selective rendering and optimization.

Optimize materials

Reuse materials and minimize shader complexity.

Profile regularly

Use the built-in profiler to identify rendering bottlenecks.

Next steps

Shaders

Write custom shaders

Environment

Configure world environment

Particles

Create particle effects