---
title: "Browser-native 3D engine, no install: Gessa vs Unity vs Unreal"
description: "Gessa renders and publishes real-time 3D in the browser with no editor install, and is honest that its dynamic global illumination is baked and it has no Nanite-class virtualized geometry."
engineVersion: v1.0.234
date: 2026-09-28
license: "(c) Gessa, proprietary. Cite with attribution to https://gessa.ai/docs/. Terms: https://gessa.ai/terms/."
canonical: https://gessa.ai/docs/compare/browser-native-engine/
---

# Browser-native 3D engine, no install: Gessa vs Unity vs Unreal

_Last verified 2026-09-06 against engine v1.0.232. Competitor sources were accessed 2026-09-06; every Gessa cell binds to the generated engine reference and the build fails if a bound surface disappears._

Gessa's editor and its player both run in a web browser: a creator authors a 3D world and a player opens it from a URL, with no engine or editor download on either side. That is the moat this page leads with. The honest tradeoff is rendering budget: a browser runtime cannot spend what a native desktop or console target spends, so Gessa's dynamic global illumination is baked rather than fully dynamic, and it has no Nanite-class virtualized-geometry system. Unity and Unreal render at a higher native ceiling and require an installed editor to author and a per-platform build to ship.

The browser runtime is described in [the player browser runtime explanation](../explanation/player-browser-runtime.md); the renderable and lighting surfaces are in {% generated-reference file="docs/spec/generated/component-types.md" label="the component reference" /%}.

## Where Gessa stands

| Capability | Gessa | Unity | Unreal |
| --- | --- | --- | --- |
| Author and play in a browser, no editor install | {% gessaCell status="supported" binds="playable_runtime_surface" /%} | Editor install required {% competitorCell engine="unity" version="6000.3" url="https://docs.unity3d.com/6000.3/Documentation/Manual/system-requirements.html" accessed="2026-09-06" /%} | Editor install required {% competitorCell engine="unreal" version="5.8" url="https://dev.epicgames.com/documentation/en-us/unreal-engine/hardware-and-software-specifications-for-unreal-engine" accessed="2026-09-06" /%} |
| Physically based materials and a material graph | {% gessaCell status="supported" binds="check:material-graph-contract" /%} | Supported {% competitorCell engine="unity" version="6000.3" url="https://docs.unity3d.com/6000.3/Documentation/Manual/shader-graph.html" accessed="2026-09-06" /%} | Supported {% competitorCell engine="unreal" version="5.8" url="https://dev.epicgames.com/documentation/en-us/unreal-engine/unreal-engine-materials" accessed="2026-09-06" /%} |
| Real-time lighting and shadows | {% gessaCell status="supported" binds="LightComponent" /%} | Supported {% competitorCell engine="unity" version="6000.3" url="https://docs.unity3d.com/6000.3/Documentation/Manual/high-definition-render-pipeline.html" accessed="2026-09-06" /%} | Supported {% competitorCell engine="unreal" version="5.8" url="https://dev.epicgames.com/documentation/en-us/unreal-engine/lumen-global-illumination-and-reflections-in-unreal-engine" accessed="2026-09-06" /%} |
| Reflections and image-based lighting | {% gessaCell status="supported" binds="ReflectionProbeComponent" /%} | Supported {% competitorCell engine="unity" version="6000.3" url="https://docs.unity3d.com/6000.3/Documentation/Manual/high-definition-render-pipeline.html" accessed="2026-09-06" /%} | Supported {% competitorCell engine="unreal" version="5.8" url="https://dev.epicgames.com/documentation/en-us/unreal-engine/lumen-global-illumination-and-reflections-in-unreal-engine" accessed="2026-09-06" /%} |
| Fully dynamic global illumination (Lumen-class) | {% gessaCell status="partial" binds="ReflectionProbeComponent" /%} | Supported {% competitorCell engine="unity" version="6000.3" url="https://docs.unity3d.com/6000.3/Documentation/Manual/high-definition-render-pipeline.html" accessed="2026-09-06" /%} | Supported {% competitorCell engine="unreal" version="5.8" url="https://dev.epicgames.com/documentation/en-us/unreal-engine/lumen-global-illumination-and-reflections-in-unreal-engine" accessed="2026-09-06" /%} |
| Virtualized geometry, cluster LOD (Nanite-class) | {% gessaCell status="not_yet" binds="renderer.virtualized_geometry" /%} | No virtualized-geometry system {% competitorCell engine="unity" version="6000.3" url="https://docs.unity3d.com/6000.3/Documentation/Manual/high-definition-render-pipeline.html" accessed="2026-09-06" /%} | Supported {% competitorCell engine="unreal" version="5.8" url="https://dev.epicgames.com/documentation/en-us/unreal-engine/nanite-virtualized-geometry-in-unreal-engine" accessed="2026-09-06" /%} |
| Particle and visual-effect systems | {% gessaCell status="supported" binds="ParticleEmitterComponent" /%} | Supported {% competitorCell engine="unity" version="6000.3" url="https://docs.unity3d.com/6000.3/Documentation/Manual/VFXGraph.html" accessed="2026-09-06" /%} | Supported {% competitorCell engine="unreal" version="5.8" url="https://dev.epicgames.com/documentation/en-us/unreal-engine/overview-of-niagara-effects-for-unreal-engine" accessed="2026-09-06" /%} |

`RenderableComponent`, `LightComponent`, `ReflectionProbeComponent`, `MaterialInstanceOverrideComponent`, and `ParticleEmitterComponent` are the atomic surfaces behind these rows; the material graph row is backed by the `check:material-graph-contract` gate and the effect stack by `check:renderer-effect-contract` in the build.

## The gaps, named here

- Global illumination is baked, not fully dynamic. Gessa lights a world with image-based lighting and reflection probes baked at edit time, which the `ReflectionProbeComponent` surface carries; it does not run a Lumen-class real-time dynamic global-illumination solver. The cell reads partial for that reason.
- There is no Nanite-class virtualized geometry. The Nanite row reads not_yet, and its binding names that gap on purpose rather than standing on a surface that does not exist. Cluster-LOD work is proven only through the GPU-driven render-path gates, not as a shipping virtualized-geometry feature.
- The browser is the budget ceiling. Even where a Gessa render feature reads supported, it runs inside a browser GPU budget that a native desktop or console target does not share, so photorealism ceilings differ from a native engine even when the feature list overlaps.

## Where Unity and Unreal are ahead

- Unreal renders virtualized geometry with Nanite and fully dynamic global illumination and reflections with Lumen as first-party native systems. See the Unreal Nanite and Lumen documentation cited in the table.
- Unity's High Definition Render Pipeline targets high-end native hardware with real-time global illumination, reflections, and a mature Shader Graph and VFX Graph. See the Unity documentation cited in the table.
- Both engines author in an installed editor and ship native desktop and console builds, so their renderers can spend a per-frame budget a browser runtime does not have.

Gessa's answer is not to match a native renderer's budget. It is to render physically based, real-time 3D that authors and plays in a browser with no install, and to be explicit that its global illumination is baked and it has no virtualized-geometry system. The other comparison axes are in the [compare index](index.md).
