Verge3D for Blender: Lighting and Rendering — Soft8Soft
Description: How to configure environment lighting, lights and rendering properties in Verge3D for Blender.

# Lighting and Rendering / Blender

This page contains the information about lighting and rendering features which can be used with Verge3D for Blender.

- Renderers
- Environment Lighting
- Lights
  - Point Lights
  - Sun Lights
  - Spot Lights
  - Area Lights
- Spherical Light Probes
- Planar Light Probes
- Background
- Global Rendering Properties
  - Color Management Panel
  - Verge3D Settings Panel
- Ambient Occlusion
- Outline Rendering
- World Rendering Properties
- Per-Object Rendering Properties
- Rendering on HiDPI (aka Retina) Screens
- Visibility Breakpoints
- Material Rendering Properties
  - Settings Panel
  - Verge3D Settings Panel
- Line Rendering
- Clipping Planes

#

## Renderers

Verge3D is designed to represent Blender's Eevee renderer as closely as possible. It supports physically-based shading, lights, shadows and image-based lighting (IBL).

#

## Environment Lighting

Environment lighting is a very important component of Verge3D graphics pipeline. You can illuminate your entire scene with just an environment map alone, without using any light objects. See the Scooter demo as an example of this approach.

The default cube template provides an HDR texture for image-based lighting. You can replace this texture with your own file, or setup environment lighting from scratch. Here is the basic World nodes setup which uses the same texture for both environment lighting and background:

When using HDR textures, make sure you set the Color Space property to Linear Rec.709.

Also, to prevent excessive lighting coming from a fake sun light implicitly created by Blender Eevee, you should set the Sun →Threshold setting to `0`:

#

## Lights

In some cases, using just image-based lighting to illuminate your scene is not enough. If you'd like to simulate some additional light source, need dynamic shadows, or if you need to move your lights (as with car lights), you may use direct light sources.

Verge3D supports the following light types:

#

### Point Lights

Color, Power, Shadow (on/off only), and Custom Distance properties are supported in Verge3D. The Power property of point lights can be animated.

#

### Sun Lights

Color, Strength, Shadow (on/off only) properties are supported in Verge3D. The Strength property of sun lights can be animated.

#

### Spot Lights

Color, Power, Beam Shape: Size and Blend, Shadow (on/off only), Custom Distance properties are supported in Verge3D. The Power property of spot lights can be animated.

#

### Area Lights

Color, Power, Shadow (on/off only), Custom Distance, as well Size for Square-shaped and Size X/Size Y for Rectangular-shaped lights are supported in Verge3D. Disk and Ellipse shapes are not supported. The Power property of area lights can be animated.

In Verge3D, shadows casted from area lights look the same as from point lights.

### Shadow Properties

Since Blender's native shadows properties (except on/off checkbox) are not supported in Verge3D, you should assign shadow properties on the Verge3D Settings panel. See the corresponding section for more info.

#

## Spherical Light Probes

Spherical reflection light probes are objects intended for adding indirect lighting locally by generating a local reflection cubemap. This type of light probe objects add specular indirect lighting to a scene.

For usage example, check out the Light Probe demo (source files available in the Asset Store).

All properties except Falloff are supported in Verge3D.

Probe
  General probe settings:
  Type
    Type of the influence volume: Sphere or Box. Only objects located inside this volume are affected by the probe's lighting.
  Radius/Size
    Controls the size of the influence volume. You can also change object scaling and make the shape of the influence volume non-uniform.
Capture
  Capture probe settings:
  Clipping Start
    Near clip distance. Objects located closer than this value won't be rendered into the reflection cubemap.
  Clipping End
    Far clip distance. Objects located further than this value won't be rendered into the reflection cubemap.
Custom Parallax
  Enable custom settings for the parallax correction. This group of settings defines a parallax volume, which is used to project the lighting captured by the probe. If Custom Parallax not enabled the parallax effect is calculated based on Type and Radius/Size of the influence volume.
  Type
    Type of the parallax volume: Sphere or Box.
  Radius/Size
    The size of the parallax volume.
Verge3D Settings
  Verge3D-specific settings:
  Intensity
    The intensity of the indirect lighting. Any value different from `1.0` is not physically correct.
  Visibility Collection
    Limit objects that should appear in the light probe cubemap to this collection. If not specified all scene objects are used.
  Invert Visibility Collection
    Invert the selection of objects visible to this probe if Visibility Collection is specified.
  Custom Influence
    Enable custom influence settings. This group of settings allows defining a collection of objects that will be affected by this light probe. Influence Collection (if specified) will be used instead of the Type and Radius/Distance general probe settings.
    Influence Collection
      Limit objects that should be affected by this light probe to this collection. If specified it is used instead of the Type and Radius/Distance general probe settings.
    Invert Influence Collection
      Invert the selection of objects affected by this probe if Influence Collection is specified.

Similarly to global environment lighting, the Env. Map Size property controls the size of the cubemap texture used by spherical light probes.

The IBL Env. Mode setting also affects cubemaps generated by Reflection Cubemap objects.

Due to implementation specifics there are differences of how Sphere light probes behave in Blender and in Verge3D:

- Blender supports multiple light probes per object while Verge3D only a single one. That's why objects in Verge3D use a single cubemap either from a Reflection Cubemap object or from the world environment. Falloff is not supported.
- Blender doesn't use Backface Culling for meshes by default while Verge3D does. Hence in Blender objects placed inside the probe's influence volume can appear on the reflection cubemap as black spots due to back faces being rendered if the Clipping Start/Clipping End settings are not properly adjusted. This doesn't happen in Verge3D by default.
- When rendering objects into a light probe's cubemap (baking) Blender considers only the diffuse component of an object's material, while Verge3D renders them no different from how they are rendered on the main scene. That's why for example fully metallic objects are rendered black in Blender, but in Verge3D they still reflect the world environment.
- For the Visibility Collection property to work in Blender it's required that the specified collection is also linked to the scene. It's not needed in Verge3D and it's enough to just assign an object to a collection.

#

## Planar Light Probes

Planar reflection light probes is an effective way to apply real-time reflections (indirect lighting) to planar objects, such as mirrors, floors, walls, etc.

Reflection planes are used to render the floor reflections in the Load Unload demo.

For usage example, check out the Light Probe demo (source files available in the Asset Store).

The following properties are supported:

Distance
  Influence distance of the probe.
Clipping Offset
  Near camera clipping for objects rendered in the light probe.
Falloff
  Controls how fast the probe influence decreases.
Visibility Collection
  Collection of the objects visible for the probe.

Planar reflection probes can greatly reduce performance of your scene, since they multiply the number of draw calls by a factor N+1. To make rendering faster, specify a limited set of objects as the Visibility Collection property.

#

## Background

By default Blender and Verge3D render the same image for background and environment lighting. To render them separate, use the advanced World nodes setup based on Is Camera Ray output of the Light Path node. For example, to set the background color to solid grey and continue using the HDR map for environment lighting:

#

## Global Rendering Properties

Verge3D supports the following properties accessible on the Blender's Render Properties panel.

#

### Color Management Panel

View Transform
  Additional color correction (tone mapping) applied to Verge3D renderings:
  Standard
    No additional color correction applied. Switch to this method if you don't need color correction as it works faster than AgX or Filmic.
  Khronos PBR Neutral
    Uses quite efficient algorithm in terms of performance.
  AgX
    Blender's default method in version 4.0 and above.
  Filmic
    This was Blender's default method before version 4.0.
  ACES, Filmic Log, Raw, False Color
    Unsupported, if specified Verge3D will fall back to the Standard method.
Look
  Only None and Punchy (for AgX view transform) values supported by Verge3D.
Exposure
  Exposure applied before display transform. It allows you to conveniently adjust rendering brightness for the entire scene.

#

### Verge3D Settings Panel

In addition, there is a panel with Verge3D-specific rendering/export properties:

Copyright
  Assign if you want your copyright info to be present in all exported files.
Export Constraints
  Export constraints assigned on Blender objects. Read more about constraints supported in Verge3D here.
Export Custom Props
  Export custom properties assigned on Blender objects. Check out this page to learn how to retreive these properties in Verge3D.
Bake Modifiers
  Verge3D does not support Blender modifiers in run-time, however you can automatically bake them before export by enabling this property.
Bake Text
  Whether to export Font objects as is or bake them to geometry meshes. Read more about these two modes in the Text Rendering section of this manual.
LZMA Compression
  Enable LZMA compression for exported glTF files. Check out the Asset Compression section for more info.
Compress Textures
  Store exported textures in KTX2 compression format.
Optimize Mesh Attrs
  Remove unused geometry attributes (such as tangents) from exported meshes.
Anti-Aliasing
  Select anti-aliasing algorithm used to render the scene:
  Auto
    Use system default method. In most cases this would be MSAA 4x.
  MSAA 4x
    Prefer multisample anti-aliasing with 4x samples if the target hardware supports it. Provides decent quality and performance.
  MSAA 8x
    Prefer multisample anti-aliasing with 8x samples if the target hardware supports it. This algorithm provides better AA quality at the expense of reduced performance.
  MSAA 16x
    Prefer multisample anti-aliasing with 16x samples if the target hardware supports it. This algorithm provides way better AA quality compared to MSAA 4x/8x but has the worst performance.
  FXAA
    Force fast approximate anti-aliasing (FXAA). Enable this algorithm if you experience aliasing issues with procedural textures.
  None
    Disable anti-aliasing. Use this option as an aggressive performance optimization when quality does not matter.
Use HDR Rendering

  Enable high-dynamic-range rendering.

  If activated, Verge3D will use 16-bit float textures as rendering buffers. This feature can significantly improve rendering of the Bloom post-processing as well as smoothness of node-based gradient textures. The downside of this — increased GPU memory consumption and reduced performance.

  This feature is not related to .hdr textures which are commonly used to produce image-based lighting, thus activating it won't improve rendering of such textures.

Order-Indep. Transparency
  Enable Order-Independent Transparency (OIT) rendering technique, which solves most transparency issues. Read more about this here.
Env. Map Size
  Texture size to use for environment lighting:
  64, 128
    Do not use, 256 is the minimum value supported by Verge3D.
  256
    Optimum quality with low memory consumption (recommended).
  512
    Better quality with moderate memory consumption and reduced performance. Use it to render high quality reflections e.g for rendering jewelry.
  1024
    Best quality with high memory consumption and low performance (generally not recommended).
  2048, 4096
    Do not use, 1024 is the maximum value supported in Verge3D.
IBL Env. Mode

  Algorithm to use for image-based environment lighting.

  PMREM (best)
    Use prefiltered, mipmapped radiance environment maps (PMREMs). This property is selected by default because it offers the highest quality and decent performance at the same time.
  Light Probe (fast)
    Disable image-based specular reflections altogether, still the diffuse component will be applied. This mode is fast but provides decent quality for non-metallic surfaces only (e.g. rendered with BSDF Diffuse shader).
  None (fastest)
    Disable image-based lighting for both specular and diffuse reflections. This is the fastest mode among all. It is perfect if you use shadeless (emissive) surfaces or rely solely on light sources to shade your scene.
Animation
  Global animation properties. Read more about these here.
Shadows
  Shadow properties. Read more about these here.
Ambient Occlusion
  Ambient occlusion properties. See below.
Outline Effect
  Outline effect properties. See below.
Export Collections
  Select collections of the objects you want to see in the exported glTF file.

#

## Ambient Occlusion

Ambient Occlusion is a rendering technique that improves a scene's realism by adding soft shadows from indirect (ambient) lighting based on how much the point is exposed to the light sources.

Blender uses Ground Truth Ambient Occlusion (GTAO) and Verge3D Implements the same technique under the hood.

Verge3D supports the following AO settings which can be found in the Ambient Occlusion section on the Verge3D Settings panel:

Ambient Occlusion
  Enable Ambient Occlusion in the scene.
Distance
  The radius (in system units) within which to calculate ambient occlusion. Higher values make the effect more noticeable by over-darkening and expanding the area of it, but also can decrease performance. Lower values make occlusion less noticeable.
Factor
  The strength of the occlusion effect.
Trace Precision
  Higher precision means more accurate occlusion at increased performance cost. Lower precision means better performance but the effect appears less prominent.
Bent Normals
  Use modified (or "bent") normals to sample the environment instead of the original ones. The modified normals represent the least occluded direction and make environment lighting a bit more realistic.

For usage example, check out the Ambient Occlusion demo (source files available in the Asset Store).

#

## Outline Rendering

Outline rendering (aka silhouette edge rendering) is a common non-photorealistic rendering (NPR) technique that can significantly enhance the visual perception of your scene. This effect can be used for various applications such as e-learning, games, architecture visualization, and technical drawing.

Outline effect used to highlight selections in the Industrial Robot demo.

To use object outlining (and optional glowing) in your Verge3D application, first enable the effect on the Blender's Render Properties panel:

then use the outline puzzle to apply it to your object(s).

The outline rendering does not work inside AR/VR sessions. Use other methods to highlight your objects, such as animation or changing material's color.

You can tweak outlining using the following properties:

Edge Strength
  Outlining strength factor.
Edge Glow
  Intensity of additional glowing (rendered beyond the main outline edge).
Edge Thickness
  Outline edge thickness factor.
Pulse Period
  Pulse period in seconds. Specify to make the effect animated.
Visible Edge Color
  Visible edge color.
Hidden Edge Color
  Color of the outline edge being rendered behind any other scene objects.
Render Hidden Edge
  Enable/disable rendering of the outline edge behind other scene objects.

Though it's possible to render glowing objects, in the most cases the outline rendering is used to improve visual clarity of your scene. If you need glowing from lamps or another bright objects, consider using the bloom post-processing instead.

#

## World Rendering Properties

Dithering
  Enable dithering to reduce banding artifacts when using darker shading or gradients.

#

## Per-Object Rendering Properties

Verge3D supports the following additional rendering properties for your geometry objects:

Render Order
  Modifies the rendering order for a particular object. The smaller the index, the earlier the object will be rendered. In most cases, you need to tweak this value when using Blend transparency to eliminate transparency artifacts.
Frustum Culling
  Enables/disables frustum culling optimization for the object. Uncheck this option if you have some skinned object which can move beyond the screen space to prevent it from being culled.
Receive Shadows
  Render or not shadows on the given object. See here for more info.
HiDPI Compositing
  Render object using HiDPI compositing pass. See below for more info.
Fix Ortho Zoom
  Apply inverse orthographic camera zoom as scaling factor for this object. Enable this property for object parented to ortho camera, so they don't move/scale when the user zooms the camera.

  If your object is still zoomed in/out, clear its Parent Inverse matrix:

#

## Rendering on HiDPI (aka Retina) Screens

As of today, most mobile and many desktop screens have high pixel density (so called "Retina" displays). These displays allow you to substantially increase quality of your renderings. The downside of rendering many pixels is reduced performance.

There are two approaches how to make your content look better and do not make your scenes really slow:

- Using somewhat better resolution, e.g by setting screen scaling factor to 1.5 or so. See here for more info.
- Using HiDPI rendering only for important content, such as text, screen-space UI elements, etc.

The latter approach can be easily achieved by enabling the HiDPI Compositing property located on the Verge3D Settings panel (Object Properties tab):

HiDPI compositing is used to display the UI controls and text in the E-learning demo.

However, rendering HiDPI content in a separate pass has some limitations:

- You can't apply any post-processing effects to the objects rendered in HiDPI pass.
- Objects are not affected by the depth of the objects rendered before them. This may produce artifacts like on the screenshot below (green — regular object, blue — HiDPI object, but in reality the green one is nearest to the viewer):

This basically means that the HiDPI Compositing should be used primarily for UI elements or camera-parented objects.

For usage example, check out the Ring demo (source files available in the Asset Store).

#

## Visibility Breakpoints

Visibility Breakpoints allow you to show/hide content depending on 3D viewport width/height or orientation settings. The most important use case of this feature — adapting your scene to different screen sizes and orientations. E.g you may have two different models for portrait and landscape screen orientations.

If assigned to the current camera, tries to switch to an alternative camera (must have acceptable visibility breakpoints) in the scene, if no alternative camera is found, does nothing.

Use the Duplicate Linked Blender feature to share geometry among two objects. One object will be rendered in portrait mode while another in landscape mode. This way you can save a lot of GPU memory and decrease app loading time.

You can configure the breakpoints on the Object Properties panel:

Min Width
  Minimum canvas width the object stays visible.
Max Width
  Maximum canvas width the object stays visible.
Min Height
  Minimum canvas height the object stays visible.
Max Height
  Maximum canvas height the object stays visible.
Orientation
  Screen orientation the object stays visible.

#

## Material Rendering Properties

The following properties common to all Blender materials are supported in Verge3D. For shader nodes and corresponding settings, see the Shader Nodes Reference.

#

### Settings Panel

Pass Index
  Material pass index. In Verge3D, this value is used exclusively to provide data to the Object Info node.

#

### Verge3D Settings Panel

Blend Mode
  Transparency mode. See more in the transparency section of this manual.
Clip Threshold
  Clipping threshold for Alpha Clip materials.
Transparency Hack
  Hack to remove/reduce transparency artifacts. See more here.
Render Side
  Being a real-time engine, Verge3D uses the back-face culling technique to optimize performance. By default, only the front side of the polygons is rendered. If you need it to behave differently, change the Render Side property.
Depth Write
  Disable depth write to implement the additive blending mode.
Depth Test
  Disable depth test and raise the Render Order property for planar objects such as sprites or decals if you want them rendered above all objects.
Dithering
  Enable dithering to reduce banding artifacts when using darker shading or gradients. Dithering can also be enabled on world shader.
glTF 2.0 compatible
  Make the material glTF-compatible. See the corresponding section of this manual for more information.

#

## Line Rendering

With this feature you can render Blender objects by using lines. The most common use case of Line Rendering is drawing curve objects, which do not have any geometry on their own. However, you can also apply this technique to regular meshes and surfaces:

Object wireframes displayed with the line rendering feature.

Line Rendering is activated in Verge3D Settings located on the Object Data Properties panel:

Here you can also assign color and width of the rendered lines. In Verge3D lines are rendered with the Emission shader.

For usage example, check out the Lines demo (source files available in the Asset Store).

#

## Clipping Planes

Clipping planes (aka section planes, cross-section planes, mesh sections) is a technique used to show internal arrangement of complex objects, such as buildings, cars, appliances, gadgets, machines etc.

Clipping planes used to show the internals of a kitchen appliance.

To add a new clipping plane, use the Clipping Plane menu item from the Blender's Add Object menu:

The objects on your scene will be clipped in the negative Z direction of the clipping plane object.

Clipping planes have the following properties:

Affected Objects
  Collection of the objects clipped by the plane. If empty, all scene objects will be clipped.
Negated
  Swap clipped and unclipped sides.
Clip Shadows
  Clip shadows cast from the clipped objects.
Union Planes
  Construct a union from all the clipping planes, affecting the object, not their intersection.
Filled Cross-Section
  Fill cross-section between the clipping plane and the affected objects.
Color
  Cross-section diffuse color and opacity.
Render Side
  Cross-section render side. Specify Double-sided to render complex geometry with cuts and holes.
Plane Size
  Cross-section plane size. Increase this value if you use larger scene size.

For usage example, check out the Clipping Planes demo (source files available in the Asset Store).

## Got Questions?

Feel free to ask on the forums!