Reflections



Reflections are part of physically based rendering. They make materials respond to their environment and are most visible on glossy surfaces such as car paint, glass, chrome, wet roads, polished floors, and metal parts.

In BeamNG, reflections can come from multiple sources depending on material settings, graphics settings, and the object being rendered.

Why reflections matter

Without reflections, materials can appear flat, dull, or disconnected from the scene. Good reflection setup improves:

  • More believable vehicle paint and glass
  • Better material readability
  • Improved sense of lighting and environment
  • More realistic wet, metallic, and glossy surfaces
  • Consistent appearance between levels and vehicles

Physically based materials depend on reflected light for roughness, metallic, and clear coat response.

Reflection sources

BeamNG supports several reflection sources:

  • Dynamic cubemaps
  • Static cubemaps
  • Level cubemaps / environment maps
  • Planar reflections

These systems work together. When one source is unavailable, the engine usually falls back to another source.

Dynamic cubemaps

Dynamic cubemaps are real-time reflection captures used for the player vehicle. They update during gameplay and provide accurate reflections of the surrounding environment.

Dynamic cubemaps are only available for the player vehicle. If dynamic reflections are disabled in graphics settings, materials fall back to the level cubemap instead.

Dynamic Reflections missing on the left, and enabled on the right. Dynamic Reflections missing on the left, and enabled on the right.

Dynamic cubemaps are controlled by graphics settings. Content should not rely exclusively on them, because users may disable them for performance.

Static cubemaps

Static cubemaps are pre-captured reflection maps. They do not update in real time, but they are cheaper to render and work well for fixed environments or specific materials.

Static cubemaps can be used in two main ways:

  • Per-material cubemaps
  • Per-level cubemaps / environment maps

Static Reflections missing on the left, and enabled on the right. Static Reflections missing on the left, and enabled on the right.

Per-material static cubemaps

A material can reference a specific cubemap directly. Use this when a material needs a controlled reflection source, such as a showroom object, special prop, or environment-specific surface.

Use per-material cubemaps when:

  • A material needs a custom reflection
  • The object is static
  • The default level cubemap does not match the desired look

To assign a material cubemap, select the material in Material Editor, set reflection mode to Cubemap, then assign the cubemap.

Level cubemaps / environment maps

Level cubemaps represent the general environment reflection for a level. They are used by materials when reflection mode is set to Level, and may also be used as fallback reflection data.

If a material reflection mode is set to None, level cubemap reflections can still be used when lighting quality is set to High or Ultra.

Use level cubemaps for:

  • General environment reflections
  • Static props
  • Buildings
  • Road surfaces
  • Materials that do not need unique cubemaps

To set the level cubemap, select the LevelInfo object in the scene tree, then assign the cubemap to globalEnviornmentMap.

Reflection modes

Materials can control which reflection source they use.

None

The material does not explicitly request a reflection source.

However, when Lighting Quality is set to High or Ultra, the material will still receive global level cubemap reflections.

Use this for materials where reflections are not needed or should be very subtle.

Level

The material uses the level cubemap environment map.

This is the recommended option for most static environment materials that need reflections without a custom cubemap.

Cubemap

The material uses a specific assigned cubemap.

Use this when the material needs a custom static reflection source.

Planar reflections

Planar reflections are used for flat reflective water surfaces. Unlike cubemaps, which capture the environment from a point, planar reflections render a mirrored view of the scene from the water surface. This makes them much more accurate for large flat surfaces.

Planar reflections are available only on select object types:

  • WaterPlane
  • WaterBlock
  • River

Use them mainly for water rendering, where reflections of the sky, terrain, vehicles, and nearby objects need to line up with the water surface.

Planar reflections require Shader Quality to be set to High. If Shader Quality is lower, water objects should use a fallback cubemap instead.

Compared to cubemaps or Screen Space Reflections, planar reflections are relatively expensive because the scene needs to be rendered again from the reflected view. Use them only where the visual improvement is worth the performance cost.

Planar Reflections missing on the left, and enabled on the right. Planar Reflections missing on the left, and enabled on the right.

Planar reflection settings:

  • cubemap - Fallback cubemap used when planar reflections are not available. This is used when fullReflect is disabled, when Shader Quality is below High, or when planar reflections cannot be rendered.
  • fullReflect - Enables planar reflections. When disabled, the water object uses the assigned fallback cubemap instead.
  • reflectivity - Controls how strong the reflection appears on the water surface. Higher values make reflections more visible.
  • reflectPriority - Controls update priority when multiple reflective water objects exist. Higher priority objects are more likely to be updated first.
  • reflectMaxRateMs - Minimum time between reflection updates, in milliseconds. Lower values update more often but cost more performance. Higher values are cheaper but may make reflections update less smoothly.
  • reflectDetailAdjust - Adjusts the rendered detail level used for the reflection view. Lower values can improve performance by reducing detail in the reflected scene.
  • reflectNormalUp - Forces reflection calculations to use an upward-facing normal. Useful for mostly flat water surfaces.
  • useOcclusionQuery - Uses occlusion queries to avoid rendering reflections when the water surface is not visible. This can improve performance.
  • reflectTexSize - Resolution of the planar reflection texture. Higher values improve reflection sharpness but increase GPU cost.
Planar reflections are object-specific and are only supported by water objects. Regular materials, props, and vehicle materials cannot use planar reflections.

Capturing cubemaps

Static cubemaps can be captured using:

World Editor → Window → Cubemap Editor

Cubemap Editor Window. Cubemap Editor Window.

A typical workflow:

  1. Open the level in the World Editor.
  2. Open Cubemap Editor.
  3. Select or create a cubemap.
  4. Press Capture and Assign.
  5. Save changes.

Capture cubemaps from locations that represent the surrounding environment. For large areas, use a neutral location that does not overrepresent one landmark or lighting condition.

Cubemap color, intensity and lighting

Static cubemaps can be normalized using ambient lighting / global illumination information. This keeps reflection intensity and color aligned with the level lighting instead of making cubemaps appear too bright or too dark.

Enable cubemap normalization per cubemap in Cubemap Editor.

Normalization Off

Normalization On

Evaluate reflections together with:

  • Time of day
  • Weather
  • Ambient lighting / Global illumination
  • Material roughness and metallic values

Best practices

  • Use Level reflections for most environment materials.
  • Use Cubemap only when a material needs a specific custom reflection.
  • Provide a fallback cubemap for water objects.
  • Test reflective materials with different lighting quality settings.
  • Check reflections at different times of day and weather conditions.
  • Use roughness to control reflection sharpness instead of disabling reflections entirely.
  • Remember that dynamic cubemaps are only available for the player vehicle.

Common issues

Reflections look missing

Possible causes:

  • Reflection mode is set incorrectly
  • No valid level cubemap is available
  • Graphics settings disable certain reflection features
  • Material roughness is too high

Reflections do not match the environment

Capture or assign a more appropriate cubemap.

Reflections differ between users

Reflection quality depends on graphics settings. Make sure materials have proper fallback behavior through level cubemaps.

Water reflections look incorrect

Possible causes:

  • Planar reflections are disabled or unsupported by the object type
  • Cubemap reflection is not set for water object
  • The water surface normal or wave settings make reflections appear distorted
Last modified: July 23, 2026

Any further questions?

Join our discord
Our documentation is currently incomplete and undergoing active development. If you have any questions or feedback, please visit this forum thread.