Hover light — MRTK2

A HoverLight is a Fluent Design System paradigm that mimics a point light hovering near the surface of an object. Often used for far away interactions, the application can control the properties of a Hover Light via the HoverLight component.

For a material to be influenced by a HoverLight the Mixed Reality Toolkit/Standard shader must be used and the Hover Light property must be enabled.

Note

The MRTK/Standard shader supports up to two HoverLights by default, but will scale to support four and then ten as more lights are added to the scene.

Examples

Most scenes within MRTK utilize a HoverLight. The most common use case can be found on the MRTK/SDK/Features/UX/Prefabs/Cursors/DefaultCursor.prefab

The HoverLightExamples scene also demonstrates usage of HoverLight behaviors, and can be found at: MRTK/Examples/Demos/StandardShader/Scenes/

Advanced Usage

Only ten HoverLights can illuminate a material at a time. If your project requires more than ten HoverLights to influence a material the sample code below demonstrates how to achieve this.

Note

Having many HoverLights illuminate a material will increase pixel shader instructions and will impact performance. Please profile these changes within your project.

How to increase the number of available HoverLights from ten to twelve.

// 1) Within MRTK/Core/StandardAssets/Shaders/MixedRealityStandard.shader change:

#if defined(_HOVER_LIGHT_HIGH)
#define HOVER_LIGHT_COUNT 10

// to:

#if defined(_HOVER_LIGHT_HIGH)
#define HOVER_LIGHT_COUNT 12

// 2) Within MRTK/Core/Utilities/StandardShader/HoverLight.cs change:

private const int hoverLightCountHigh = 10;

// to:

private const int hoverLightCountHigh = 12;

Note

If Unity logs a warning similar to below then you must restart Unity before your changes will take effect.

Property (_HoverLightData) exceeds previous array size (24 vs 20). Cap to previous >size.

See also