Navigation

Ventuz Introduction

  • Introduction
  • Getting Started
  • Ventuz Editions
  • Ventuz Products
  • Realtime Rendering
  • Frequently Asked Questions
  • Common Mistakes
  • Deploying a Ventuz Presentation
  • Scene Performance and Tweaks

Quick Guides

  • Quick Guide Index
  • Business Logic
  • 3D Art
  • 2D Art
  • Programming
  • System Engineer

General

  • Index
  • What's New
  • Ventuz System Requirements
  • Communication Protocol Overview
  • Configuration Editor
  • Audio / Video Configuration
  • Machine Configuration
  • Web Configuration Editor and License Manager
  • GPI Configuration for Runtime or Director
  • Supported Formats
  • Supported Hardware
  • Multisampling / Anti-Aliasing
  • Input Subsystem
  • Ventuz Proprietary Files
  • Migrating Content to Ventuz 6
  • Migrating Content to Ventuz 5
  • Summary Shortcuts
  • Terminology
  • Manual Index

Ventuz Designer

  • Designer Indices
Introduction
  • Designer Introduction Index
  • Designer Overview
  • Realtime Rendering
  • Project Browser
  • Designer Interface
  • Designer Options
  • Working with Nodes
  • Hierarchy and Content Editors
  • 2D Workflow
  • 3D Workflow
  • Animation Workflow
  • Best Practices
  • Reading Data in Ventuz
  • Display Images and Movies
  • Scene Performance and Tweaks
  • Deploying a Ventuz Presentation
  • Render to Disk
User Interface
  • Designer User Interface Index
  • Designer Interface
  • Renderer Window
  • Layer Editor
  • Property Editor
  • Property Groups
  • Hierarchy Editor
  • Content Editor
  • Find and Replace
  • Toolbox
  • Animation Editor
  • Shader Editor
  • Text Editor
  • Message View
  • Scene Tree
  • Stage Editor
  • Container Outline
  • Watches Editor
  • Performance Statistics
2D Workflow
  • 2D Workflow Index
  • 2D Workflow
  • Layer Editor
  • Common Layer Properties
  • IPP Effects
  • Color Correction FX
  • Distortion FX
  • Filter FX
  • Hierarchy and Content Editors
  • Display Images and Movies
3D Workflow
  • 3D Workflow Index
  • 3D Workflow
  • Hierarchy and Content Editors
  • Renderer Window
  • Camera Navigation
  • Manipulate Objects with Gizmos
  • Layer Editor
  • Property Editor
  • Hierarchy Editor
  • Working with Nodes
  • Isolated Objects
  • Containers
  • Text Rendering
  • Character Sets
  • Geometry Import
  • Display Images and Movies
  • Particle System
  • Creating Realistic Reflections
  • Unreal Integration
  • Notch Integration
  • E2E Node Overview
Logic Workflow
  • Logic Workflow Index
  • Hierarchy and Content Editors
  • Content Editor
  • Hierarchy Editor
  • Working with Nodes
  • Property Editor
  • Containers
  • Project and Scene Data
  • Reading Data in Ventuz
  • Display Images and Movies
  • Input Subsystem
  • Multitouch
  • TUIO Protocol
  • Open Sound Control
  • Unreal Integration
  • Notch Integration
  • E2E Node Overview
Animation Workflow
  • Animation Workflow Index
  • Animation Workflow
  • Animation Editor
  • Content Editor
  • Hierarchy Editor
  • Property Editor
  • Animation and State Engine
  • Templates
  • Template Engine
  • Unreal Integration
  • Notch Integration
Project Structure
  • Project Structure Index
  • Annotations
  • Projects and Scenes
  • Project Properties
  • Project Maintenance
  • Project and Scene Data
  • Scene Management
  • Scene Statistics
  • Scene Tree
  • Performance Statistics
How Tos
  • Designer How to Index
  • How to Run Ventuz
  • How to Work with Designer
  • Ventuz Designer Drag&Drop Workflow
  • How to work with Shadows
  • How to Build Content for Multiple Screens
  • How to Use Emoijs
  • How to Build a Template
  • How to Use the Color Difference Keyer
  • How To Use the HDR Engine
  • How Create Lens Flares and Bloom
  • How to Create Visuals Loader Node
  • How to Remote Control with a Phone
  • How to use Head Mounted Displays
  • How to work with 3D Reference Layers
  • How to create a Firework Particle System
  • How to use DDS with new Block Compression modes
  • How to use the Substance Integration
  • How To Integrate Unreal
  • How To Integrate Notch
  • How To use the Vertex Integration
  • How To Control and Customize Ventuz
Reference
  • Available Nodes
  • Animation Nodes
  • Material&Color Nodes
  • Data Nodes
  • E2E Nodes
  • Geometry Nodes
  • Interaction Nodes
  • IO Nodes
  • Layers
  • Light Nodes
  • Logic Nodes
  • Render Option Nodes
  • Slides Nodes
  • Sound Nodes
  • Text Nodes
  • Texture Nodes
  • VR Nodes
  • World Nodes
  • Summary Shortcuts
  • Layer Editor Shortcuts
  • Hierarchy Editor Shortcuts
  • Content Editor Shortcuts
  • Animation Editor Shortcuts
  • Director Shortcuts

Ventuz Director

  • Index
  • Introduction
  • Environment
  • Show
  • User Interface
  • Assets
  • Taking Action
  • Property Editor
  • Shot Box
  • Project Data
  • Pages
  • Playlist
  • Timeline
  • Content References
  • Topology
  • Channels
  • Macros
  • Designing Templates
  • Plug-Ins
  • Shortcuts
  • Command Line Options
  • Application Settings
  • Glossary
  • GPI Configuration

Ventuz Runtime & Configuration

  • Runtime Index
  • Configuration Configuration Editor
  • Machine Configuration
  • Video/Audio Configuration
  • Web Configuration Editor and License Manager
  • Render Setup Editor
  • Warping and Soft-Edging Editor
  • Machine Clustering
  • Supported Hardware
  • Director Mode
  • Runtime How Tos Index
  • How to Configure Audio
  • How to Use Live Options
  • How To Play Out On Multiple Screens
  • How To Render on a Machine Cluster
  • How to Use Head Mounted Displays
  • How to Setup Spout with Ventuz
  • How to Use Newtek NDI
  • How to Use a Mixed Frame Rate Cluster
  • How to Use Tracking

How To

Designer
  • Designer How to Index
  • How to Run Ventuz
  • How to Work with Designer
  • Ventuz Designer Drag&Drop Workflow
  • How to work with Shadows
  • How to Build Content for Multiple Screens
  • How to Use Emoijs
  • How to Build a Template
  • How to Use the Color Difference Keyer
  • How To Use the HDR Engine
  • How Create Lens Flares and Bloom
  • How to Create Visuals Loader Node
  • How to Remote Control with a Phone
  • How to use Head Mounted Displays
  • How to work with 3D Reference Layers
  • How to create a Firework Particle System
  • How to use DDS with new Block Compression modes
  • How to use the Substance Integration
  • How To Integrate Unreal
  • How To Integrate Notch
  • How To build and playback Ventuz Content in Vertex
Runtime & Configuration
  • Runtime How Tos Index
  • How to Configure Audio
  • How to Use Live Options
  • How To Play Out On Multiple Screens
  • How To Render on a Machine Cluster
  • How to use Head Mounted Displays
  • How to setup Spout with Ventuz
  • How to use Newtek NDI
  • How to use a Mixed Frame Rate Cluster
  • How to use Tracking
  • How To Integrate Unreal
  • How To Integrate Notch
  • How To build and playback Ventuz Content in Vertex
Director
  • How To Control Multiple Graphics Independently From Each Other
  • How to use the Companion with Director

Ventuz Node Reference

ANIMATION
  • Mover
  • Alternator
  • Simple Control
  • Timeline Control
  • Anmation Rig
  • Keyframe Animation
  • Animation Group
COLOR/MATERIAL
  • Alpha
  • Fog
  • Ground Fog
  • Sky Box
  • Color to RGBA
  • HSLA to Color
  • RGBA to Color
  • Color Transformer
  • HLSL Shader
  • Color
  • Material
  • Color Picker
  • Substance Material
DATA
  • Database
  • Excel
  • JSON
  • RSS Feed
  • Resource Linker
  • Text File
  • XML
E2E
  • E2E Axis
  • E2E Data
  • E2E Control
  • E2E Layer
  • E2E Provider
  • E2E Node Overview
GEOMETRY
  • Rectangle
  • Rounded Rectangle
  • Gradient Rectangle
  • Overlay Rectangle
  • Cube
  • Circle
  • Sphere
  • Cylinder
  • Cone
  • Torus
  • Chart
  • Random Points
  • Mesh Loader
  • Geometry Import (Live)
  • Volume
  • Get Bounding Box
  • Arrow
  • Particle System
  • Path Renderer
  • Geometry Renderer
INTERACTION
  • Interaction Rect
  • Touch Button
  • Touch Excluder
  • Touch Marker
  • Touch Paint
  • Touch Pattern
  • Touch Proxy
  • Touch Ripples
  • Touch Transformations
  • Web Browser
  • Touch Teleport
  • Touch Simulator
INPUT/OUTPUT (I/O)
  • GPI
  • Joystick
  • Keyboard
  • MIDI
  • Mouse
  • Network
  • Open Sound Control
  • Serial
  • Timecode
  • DMX
  • HTTP
  • RamDiskWriter
LAYER
  • 3D Layers
  • 3D Layer Reference
  • 2D Layers
  • PSD Import Layer
  • E2E Layer
  • Others
LIGHT
  • Light Sources
LOGIC
  • Array Processing
  • Convert To Text
  • Cluster Synchronization
  • Counter
  • Date Time
  • Directory
  • Dispatcher
  • Enumeration
  • Expressions
  • Invert
  • Log
  • Loop Breaker
  • Math Effects
  • Matrix Operations
  • Scene Event
  • Script
  • String Operations
  • System ID
  • Text Splitter
  • Timer
  • Toggle
  • URL
  • Value Switch
  • Value Buffer
  • Variables
  • Visual Indexer
RENDER OPTIONS
  • Alpha Blending
  • Color Write
  • Alpha Testing
  • Clip Plane
  • Filter
  • Mask
  • Mirror
  • Effect
  • Render Cube Map
  • Draw Modes
  • Stencil
  • ZTesting
SOUND
  • Audio Clip
  • Sound
  • Volume Control
  • Audio Analysis
SLIDES
  • Slide Manager
  • Slide
  • Slide Port
  • Pivot
TEXT
  • Text Effects
  • Text Layouts
  • Text Rendering
TEXTURE
  • Background
  • Hatch
  • Image
  • Texture
  • SVG Loader
  • Gradient Texture
  • Live Video
  • Movie Stream
  • Movie Frame
  • Movie Clip
  • Texture Loader
  • Snapshot
  • Snapshot Framebuffer
  • Texture Saver
  • Video Source Selector
  • VIO Input
  • Spout Receiver
  • NDI Receiver
  • Substance Loader
  • QR Code
VR/AR
  • Tracked Devices
  • Draw Tracked Devices
WORLD
  • Axis
  • Billboard
  • GetWorld
  • SetWorld
  • Arrange
  • Ticker
  • Layout
  • Group
  • World Z Sort
  • YesNo
  • Switch
  • Spread
  • Filter Pass
  • Set Pass
  • Hierarchy Container
  • Scene Port
  • Content Container
  • Template Port
  • Container Info
  • Camera
  • Paths

Advanced and Development

  • Advanced and Development Index
  • Command Line Options
  • Ventuz IP Ports
  • Ventuz Machine Service
  • TUIO
  • .NET Scripting
  • HLSL Shader Programming
  • Ventuz API and SDK
  • Ventuz Extension API
  • Ventuz VIO API
  • Ventuz File Format (VFF)
  • Ventuz Stream Out API
  • Lens Calibration File for FreeD
  • E2E Node Overview
  • Unreal Integration
  • Notch Integration
Remoting
  • Remoting Index
  • Remoting Overview
  • How To Control and Customize Ventuz
  • Remoting 4
  • Remoting 4 via Websockets
  • Remoting 4 via HTTP
  • Director Remoting
  • Deprecated Remoting
  • Remoting Machine Signature

Misc

  • Presets
« Previous:
» Index «
Next: »

How To Use Shadows

Table of Contents

  1. Light Sources
  2. Shadow Casters
  3. Shadow Receivers
  4. Light Volume

In Ventuz, you are able to add and easily modify Dynamic Shadows. This page will explain how to create shadows and what to keep in mind while working with them.

First, enable your light sources in the scene to cast shadows on their respective Nodes. By default, all Objects in the Scene that are affected by its lighting will now cast and receive shadows. In Ventuz, this is done with the help of Shadow Maps that are rendered for each Light and then applied to all objects that receive shadows.

Light Sources

The Light Source Nodes are the starting point for creating dynamic shadows. You can cast shadows with every type of Light Source. As soon as you change the Property Group Shadows from None to Shadow Map, everything affected by that light will also cast and receive shadows.

Point Lights demand a lot of performance for Shadowing. This is because it needs to render one shadow map for each direction resulting in six extra rendering processes for each shadowing point light.

Directional Lights adjust their frustum size of the shadow map based on the maximum distance between the objects in your scene. The quality of the shadow map will be drastically affected by the size of your scene.

LightVolume can define the volume of within the Directional Light will cast shadows!

Amount will change the intensity of the shadow.
Resolution changes the size of the used Render Target for the Shadow Map. The higher the resolution the more detailed the results but the higher the performance and memory consumption.

Always keep the Resolution as low as possible as that may save a lot of performance.

DepthBias and SlopeBias change how the Shadow Map will be applied to the receiving objects in your scene. This can be used to remove artifacts (e.g. shadow acne) that appear through false self-shadowing of surfaces. This happens when the shader compares several depths against the same texel on the Shadow Map (see the Sphere on the left screenshot in the below table).
Depth Bias adds a Bias to that comparison to let it fail more often.
Slope Bias adjusts the depth bias based on the angle of the light hitting the surface. This reduces Shadow Acne even more on very flat angles. Most of the time you will need to adjust both values to get rid of these artifacts. It is trial and error for each light as too high values will prevent the shadow from rendering where the viewer would expect it (called peter panning).

No Bias
Shadow Acne

With Bias

Too Much Bias
Peter Panning

With the Select Property, you can use one of two different Groups for the shadow casting - shadows by this light will then only be cast by objects in the same group (see Shadow Casters).
Lastly, you have some Filtering Options to create better effects in exchange for performance. You can either sample 1, 4 or 8 times in the Filter property. The more samples you use, the smoother the result but the more performance it will take to sample from the shadow map. If using 4 or 8 samples you can also change the Anti Aliasing and Filter Scaling to adjust the result. The Anti Aliasing and Filter Scaling values are represented in Pixels. If you adjust the Anti Aliasing to have a size of 1 it means the Anti Aliasing will have a radius of 1 pixel - independent from the resolution, it will always be 1 pixel. The same goes for the Filter Scaling.

Shadow Casters

By default, all objects in the scene that are affected by shadow casting light will also cast and receive shadows. If this is not desirable or the shadowing is causing bottlenecks in performance, you can change which objects should cast or receive shadows for better results.

To exclude an object from casting shadows you can use the Shadow Filter Node. With its Condition property, you can change which pass the following objects should be rendered. Model Only will ignore them during the shadowing process so that they do not cast shadows. Shadow Only will ignore the model during the normal rendering so that they cast shadows but the model is not visible otherwise. Model and Shadow which is the default option will draw the objects both the model and the shadow.

To adjust which group of lights the following objects should cast shadows, you can use the Select property (see Light Sources).

To adjust the way the shadows of an object are cast you can use a Material Node and its Shadow Options Property Group. Change it from None to either Shadow Options or Shadow Options with Fade.
For shadow casters only, the Simple Caster Shader Property is of interest. The other options change the way an object receives shadows (see Shadow Receivers). With this property you can change whether or not to cast shadows in a simplified way. The Simple Caster Shader ignores the Alpha Channel of the surface. Vertices displaced by shaders are not processed; in exchange it saves some performance.
The effects can be seen below. In the first column you can see the results with simple shading while in the second column you see the results with normal shading. In the first row you see geometry with vertices displaced by a vertex noise shader and in the second row you see a simple rectangle with an alpha texture.

SimpleCasterShadow ON
(default)

SimpleCasterShadow OFF

Shadow Receivers

Lastly, you can change the way shadows are received by objects using the Material Node. Like on shadow casters you need to turn the Shadow Options Property Group from None to Shadow Options or Shadow Options with Fade.

The Receive flag turns on and off whether or not to receive shadows. This can be turned off for each geometry that does not receive shadows and to save performance.

The FadeDiffuse, FadeSpecular and FadeAmbient affect how much each channel of the Material fades out the Material. By default, all of these are set to 1. If one of these is turned down, the shadow is not affected anymore if the channel is affected other than through the shadowing light. In the screenshots below you can see a Sphere that is casting a shadow onto a rectangle that was cast by the spotlight above it. The Rectangle is also lighted by a Directional Light which is affecting the Rectangle's Diffuse Channel. On the left you see that scene with a FadeDiffuse value of 1 and on the right you see the same scene with a FadeDiffuse of 0. As you can see, the shadow is not as intense on the left as on the right, because it is affected by the Diffuse Channel of the Rectangle.

FadeDiffuse = 1
(default)

FadeDiffuse = 0

Light Volume

The Directional Light can have a LightVolume enabled. The volume can help where a shadow map will be generated. This is extremely helpful if your scene is very large and you want toto focus on a specified area. This way, you don't need to increase the shadow map resolution and can save performance; This prevents the boundaries of your shadow map from changing if objects are moved outside of your scene. For example, the shadow map calculation for a directional light will always take the outer boundaries of the scene, whenever these change because an object moves, and therefore increases the scene boundaries as shown by the screenshot below, it will resize the shadow map area. The result is a larger shadow map that scales the pixels accordingly.

As long as the objects are inside of a reasonable area, the shadow map will have good results at a resolution of 256px. As soon as an object moves toward the edge of the scene, the shadow map will also resize or extend to match the outer boundaries of the scene. The resolution stays the same at 256px, but the projection size of the map increases.

To visualize what happens:

All Objects inside the scene boundaries

One Object is moving and changes the scene boundaries

The result is a very pixilated shadow map. The shadow map will change its scale/size based on the scene size. Whenever you would have a moving object, you will see that the shadow map will change and recalculate each frame.

No LightVolume used:

And here we have defined a LightVolume which is a bit smaller than the rectangular groundplane. On one hand the Shadow Map crops right the shadow and on the other hand it prevents the scale of the Shadow Map so you don't the scrambling pixels.

You can get a much better and a more precise shadow map by defining the LightVolume of the Directional Light Source. Changing the translation of the Directional Light Source to the area of interest. Simply add an Axis in front of the Directional Light Source and reposition it. Also enable the LightVolume and change its properties to define the volume for the shadow.

See also:
  • Light Source Nodes
  • Shadow Filter Node
  • Material
  • ​MSDN: Common Techniques to Improve Shadow Depth Maps

« Previous:
» Index «
Next: »
Copyright 2022 Ventuz Technology