This page covers:

  • What lighting is, in the context of Keysight
  • Types of lighting
  • Lighting channels
  • Some useful tricks with lighting

What is lighting?

Anything in Keysight can only be visible if it:

Important aspects to lighting include:

  • Colour: a light can only be a single colour at any given time
  • Type: lights can be rectangular, point-based, or infinite-distance and "directional"
  • Radius: unlike physical lights, lighting in Keysight must have a limit to its area of influence
  • Channel: lights will only illuminate objects on corresponding lighting channels

Dynamic lighting is one of the most performance-expensive(*) aspects of Keysight. Understanding how to limit usage of lighting and lighting radius can be critical to achieving good performance on low-end devices. As a general rule, the larger a light source's radius of lighting influence is, the more expensive that light will be to render (as lighting must be calculated across more objects in the scene).

Note that despite materials being able to emit their own light, this does not behave as a light source in Keysight for the rest of the scene. The appearance of lighting is local to the surface emitting light only.

Types of lighting

Scene-based lighting

This section outlines any lights that are always active and not tied to any MIDI events.(*)

Ambient lighting

(Advanced) > Scene > Lighting, "Ambience" section

This is a legacy form of lighting (present since version 1.0), and not really intended to be used. Ambient lighting is derived from a cubemap of a bright photo studio:

Cubemap

It does not cast shadows, or cost much performance to enable. It is the only thing that can grant objects in Keysight an "accurate" environment reflection, but is completely non-configurable outside of having a Colour tint applied. An example of just using a 1.00 brightness Ambient light strength on the "Plain (default)" preset with any preset lighting disabled:

Ambient lighting

It is often much more preferable to use Scene lights to build up specifically-authored lighting reflections.

Scene lights

Widgets > Scene lights

Scene lights (added in version 1.6) are intended to fill the role of ambient lighting and grant lighting, and lighting reflections, across the scene for minimal performance cost. Scene lights can use lighting channels and have individual colours and rotations, making them far more flexible than ambient lighting. They also use a brightness multiplier to make increasing and decreasing the strength of the entire scene light(*) collection convenient.

Scene lights are "directional" lights. They are simulated as having no lighting fall-off over distance, are infinitely far away from the scene, and have no shadow casting. The following is an example of Scene lights used to provide some subtle lighting highlights to the piano:

Scene lighting

Light bar lights

(Advanced) Widgets > Light bars > [Specific light bar] > Components > Light

Light bar lights are a component of Light bars. These are usually very performance-expensive to render, and are usually used to highlight the Piano with locational lighting. Light bar lights

Light bar lights(*) are "rectangular" lights. They have a number of important properties:

  • A position in space
  • A length (determined by Light bar layout settings)
  • A lighting influence sphere diameter 1.5 times larger than their length
  • A width of 1.0cm

And behave in the following ways:

  • They do not cast shadows
  • They always face "downwards" into the scene, and only cast light from one face
  • The light itself is invisible to the camera, but will be visible in reflections from surface materials
  • They use lighting channels

The position of a Light bar light(*) will have an enormous impact on how it appears. Moving the light upwards, away from objects, will make the lighting more diffuse. Light bar light height

Dynamic lighting

This section outlines any lights that are tied to MIDI events(*) and are not always present.

Note lights

Effects > Note lights

Note lights are tied to the size and position of Note objects, and are intended to provide highlighting to notes. Even if Note objects are disabled, Note lights will still follow the missing notes' sizes and positions:

Note lights

Note lights are "rectangular" lights, and behave the same as Light bar lights except with position and size determined by their paired Note object. These are very performance-expensive to render. The Concentration slider controls the Z-height of Note lights, and thus how diffuse their lighting is around Note objects.

Note light concentration

Impact lights

Effects > Impact lights

Impact lights are primarily intended to show which keys are currently being played and add extra visual impact to on-keypress effects.

Impact lights

Impact lights are "point" lights, and have a number of important properties:

  • A position (horizontal position determined by note index(*), Y and Z by impact settings)
  • A lighting radius (in cm)
  • A lighting falloff speed, measured as an exponent (1.00 is linear brightness reduction over radius, 2.00 is r^2 reduction)

And behave in the following ways:

  • They are the only lighting to (potentially) cast shadows
  • They cast light in all directions
  • The light itself is invisible to the camera, but will be visible in reflections from surface materials
  • They have a maximum brightness, but actual brightness is calculated from Note activity(*)
  • They use lighting channels

The performance cost of Impact lights is heavily dependent on whether shadows are enabled, and how wide the lighting radius is. Impact lights are very configurable, with the ability to:

When shadow casting is enabled, Properties > Z-height above backdrop is critical to defining the look of the shadows. Lowering the Z-height (and thus bringing Impact lights closer to the Piano) will lengthen shadows cast by the black keys. The following is an example of 3.50 Z-height compared to 8.00

Impact light height

Bloom

(Advanced) > Scene > Lighting, "Bloom" section

This is technically not a type of lighting, but it is lighting-adjacent and found under the Lighting options. Bloom is a visual effect added on top of the base Keysight render to make bright objects appear bright by causing overspill of colour from that object.

Keysight produces an SDR (Standard-Dynamic-Range) image with R/G/B pixel values between 0-255. Without bloom, even if an object was internally at an incredibly intense colour value, it would end up just rendering as white and not look very bright at all. The following is an example of no Bloom versus Bloom on very bright cyan note objects: Bloom

Bloom is applied to every rendered pixel, and brighter pixels will cause more Bloom based on the given Bloom strength. As this is a whole-scene effect, higher Bloom strength values tend to make a scene look brighter and "hazy", which can be a cool effect but often undesirable. The following is using Bloom strength 1.00 versus 20.0:

Bloom strength

The Bloom shape slider is very subtle and best seen on small, bright specks such as particles. While a sliding scale, it is best set to either -0.80 (horizontal bloom), 0.00 (circular bloom), or 0.80 (cross bloom, default). Comparison:

Bloom shape

Void colour

(Advanced) > Scene > Lighting, "Ambience" section

Similar to Bloom, this is not a type of lighting, but it is found under Lighting options and is lighting-adjacent. "Void" refers to what is shown to the camera if it is not otherwise rendering any objects, and is most commonly seen when disabling the Backdrop, or using a non-standard Layout. The following uses a blue Void colour: Void "The Void" is a giant sphere that encircles the Keysight scene, with a simple Material that shows the given colour. Due to using an incredibly simple material, it is cheaper to render than even a Basic mode Backdrop material, and thus may be desirable when going for the highest possible performance and only using a flat colour for the background. The Low Graphics preset's default presets often use this trick.

Be aware that due to tonemapping, camera field-of-view and the way shaders work: the Void colour specified will not be perfectly represented and will have some vignetting, as seen above.

Lighting channels

Every light (other than Ambient lighting) uses Lighting channels as a means to control which objects are affected by the light source. There are three Lighting channels: "Backdrop", "Note" and "Piano".

In order for an object to be illuminated, both the light source and the object need to be set to use that Lighting channel. Almost every object can have its Lighting channel adjusted as desired, but their default settings should intuitively match the correct channel (for example: Note objects are set to use only the "Note" Lighting channel). The only objects that are non-configurable are:

Setting an object to use no Lighting channels will make it completely unresponsive to all lighting other than Ambient lighting. Setting a light source to use no Lighting channels will simply disable that light source from doing anything, but it may still cost performance.

Useful tricks with lighting

Restricting lighting channels

Carefully considering how you want each object to be illuminated and adjusting Lighting channels is an important aspect of designing a preset. One common trick (as seen in this Autumn preset) is to have Note objects use some kind of self-emissive or Reflection to become self-illuminated, but keep Note lights enabled to add some glow around Note objects.

Bypassing need for certain lights

Due to every object in the Keysight scene being capable of being self-emissive, all lighting is fundamentally optional. Reducing the number of lights can massively improve Performance, and keep a preset more readable. For example, this preset does not use Note lights as the Note objects are more than glowy enough as it is.

Scene lights and keypresses

There is a known (and unfixable) bug with using multiple Scene lights illuminating Keypresses that use Lighting channels and have any kind of opacity fade-in/fade-out behaviour. This is an incredibly rare edge case, since Keypresses are configured to not use Lighting channels by default and are usually self-emissive.

Info

In order to perform opacity modification, Keypress materials are unique in that they use a different material domain within Unreal Engine. This Surface ForwardShading mode does not support multiple directional lights, and shining multiple directional lights (ie. Scene lights) on such a surface will cause the surface to randomly choose one of the lights to be affected by, causing flickering and missing lighting as the surface switches between lights over time.

Setting Keypresses to not take any time to fade in and out will fix this, as the Keypress then uses standard material domains rather than Surface ForwardShading.

TL;DR: don't illuminate Keypresses with multiple Scene lights!