[Community Update] 3D Rendering Overhaul β PBR, Post-Processing & WebGPU Roadmap
Hey everyone ![]()
Iβve been experimenting with a major rendering upgrade for GDevelopβs 3D pipeline. This is still early-stage work and nothing is finalized yet β but I wanted to share the vision, the current progress, and open the door for anyone who wants to contribute.
ββββββββββββββββββββββββββββββββββββββββ
WHERE WE ARE NOW
ββββββββββββββββββββββββββββββββββββββββ
The current experimental build is genuinely working well.
PBR materials, post-processing effects, TAA, and an
automatic performance system are all functional and testable.
But βworkingβ is not the goal β the goal is:
β Higher visual quality
β Better performance
β Smoother, artifact-free shaders
Weβre not there yet. This is a foundation, not a finish line.
ββββββββββββββββββββββββββββββββββββββββ
WHAT HAS BEEN BUILT SO FAR (EXPERIMENTAL)
ββββββββββββββββββββββββββββββββββββββββ
Three.js upgraded to 0.183.2 with WebGL2 baseline
Physically-based lighting enabled by default
Full PBR Material System (Scene3D::PBRMaterial)
metalness / roughness / normalMap / aoMap / albedo
PMREM environment fallback
Post-Processing Stack
Bloom, SSR, SSAO, DoF, Volumetric Fog,
Chromatic Aberration, Color Grading, Rim Light,
Tone Mapping (ACES Filmic)
SSR integrated with real PBR roughness per surface
Per-object SSR exclusion (Scene3D::SSRExclude)
Temporal Anti-Aliasing (Halton 8 samples + history reset)
Performance Orchestrator (auto quality switching by FPS)
Editor preview matches runtime output
ββββββββββββββββββββββββββββββββββββββββ
GRAPHICS COMPARISON
ββββββββββββββββββββββββββββββββββββββββ
LIGHTING & MATERIALS:
βββββββββββββββββββββββ¬βββββββββββββββββββ¬βββββββββββββββββββββββ
β Feature β Before β After (experimental) β
βββββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββββ€
β Lighting Model β Phong/Blinn β Physically Based β
β Tone Mapping β Linear/Basic β ACES Filmic β
β Color Space β Inconsistent β Linear β sRGB output β
β Environment Light β None β PMREM / IBL β
β Material System β Basic color only β Full PBR β
β Metalness β Not available β 0β1 real β
β Roughness β Not available β 0β1 real β
β Normal Map β Not available β
β
β AO Map β Not available β
β
β SSR Roughness β Heuristic only β Real per-surface β
βββββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββββββ
POST-PROCESSING:
βββββββββββββββββββββββ¬βββββββββββββββββββ¬βββββββββββββββββββββββ
β Effect β Before β After (experimental) β
βββββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββββ€
β Bloom β None β
quality modes β
β SSR β None β
PBR integrated β
β SSAO β None β
with denoise β
β Depth of Field β None β
real bokeh β
β Volumetric Fog β None β
light scatter β
β Chromatic Aberrationβ None β
β
β Color Grading β None β
β
β Rim Light β None β
shader injection β
β Tone Mapping β None β
ACES Filmic β
β Anti-Aliasing β Inconsistent β
SMAA + TAA β
βββββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββββββ
PERFORMANCE:
βββββββββββββββββββββββ¬βββββββββββββββββββ¬βββββββββββββββββββββββ
β Metric β Before β After (experimental) β
βββββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββββββ€
β Render Targets β Per-effect β Single shared β
β Default Resolution β Full 1.0Γ β 0.75Γ with upscale β
β ms per effect β ~12ms β Target <4ms medium β
β Quality Control β None β low/medium/high β
β Auto Quality Switch β None β
Orchestrator β
β SSR on vegetation β Full cost β
excluded via mask β
βββββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββ
THE FULL ROADMAP
ββββββββββββββββββββββββββββββββββββββββ
Phase 1 β Foundation (current, experimental)
WebGL2 baseline
PBR material system
Post-processing stack
TAA + Performance Orchestrator
Linear color pipeline
Phase 2 β Quality & Performance Push (next)
β Roughness/Metalness texture maps per material
β HDR skybox support (real HDRI, not fallback)
β Clearcoat / Transmission for glass and car paint
β Bilateral blur denoise for SSAO
β Hexagonal bokeh DoF (tile-based, target <3ms)
β Temporal distribution across effects
(compute each effect every N frames, accumulate)
β Light maps support for static scenes
Phase 3 β WebGPU Preparation
β Decouple effects from WebGL-specific APIs
β Prepare shaders for WGSL transpilation
β Test Three.js WebGPU renderer locally
β Compute shaders for SSR, SSAO, TAA
β Target: same visual quality at half the GPU cost
Phase 4 β WebGPU Native (future)
β Full compute pipeline
β Hardware-accelerated ray tracing prep
β Motion vectors for true temporal effects
β Real-time global illumination exploration
ββββββββββββββββββββββββββββββββββββββββ
WHAT WE NEED HELP WITH
ββββββββββββββββββββββββββββββββββββββββ
This is a community effort. If you have experience in
any of the following areas, your contribution would
make a real difference:
GLSL / WGSL shader writing
Better SSR, cleaner AO, temporal effects
Three.js internals
Render pipeline, WebGPU renderer, material system
Performance profiling
GPU timing, draw call analysis, memory optimization
Visual testing
Testing effects on real game projects and reporting
artifacts, performance numbers, and edge cases
WebGPU experience
Anyone who has worked with the Three.js WebGPU
renderer or written compute shaders
If you want to contribute, drop a reply here or open
a PR/issue on the experimental repo.
ββββββββββββββββββββββββββββββββββββββββ
HONEST ASSESSMENT
ββββββββββββββββββββββββββββββββββββββββ
The current build works and the visuals are a real
improvement over the baseline. But we want more:
β Shaders need to be smoother with fewer artifacts
β Performance needs to be better especially on mid-range hardware
β The pipeline needs to be ready for WebGPU
Weβre not releasing this as βdoneβ β weβre sharing it
as a work in progress that needs community input
to reach the quality bar weβre aiming for.
Every report helps prioritize what gets worked on next.
Thanks for following this ![]()
β Carrotstudio0