# Material Preview

## Overview

Material preview is a UI feature which displays a lit spherical preview of a PBR material. It can be found in the following UIs:

- The material picker swatch
    - In the build floater, in the Texture tab, when applying a PBR material
    - (If the feature is enabled) In the Region/Estate floater, in the Terrain tab, when applying PBR materials to terrain
- In the floater to select a material from inventory, which can be opened by clicking the material picker swatch

## Known Issues

These are known issues that the current implementation of this feature does not address:

- Material swatch preview is a preview of the base material ID only, and ignores other properties on the prim face like material overrides
- Alpha mask previews as alpha blend
- Double-sided previews as single-sided
- Material swatch preview inherits some of its lighting from the current environment, and reflections from the default reflection probe

## General Regression Testing

- Check that the material preview swatch looks OK with different materials selected
- Check that the material preview swatch runs reasonably well on different systems, especially when the select material from inventory floater is also open
    - In particular: AMD, MacOS, minimum spec machines
- Watch out for regressions in rendering caused by opening a floater with a material preview swatch

## Bug Fixes

### Disappearing Objects Fix Test

This test is recommended for verifying that secondlife/viewer-issues#72 is fixed.

#### Symptoms

The following types of objects could randomly disappear until relog in the main view when the bug occured:

- Objects
- Water level in current region
- Adjacent region/void water

Note: Disappearing objects in reflections have a different root cause and are not covered by the fix.

#### Bug Reproduction Steps

Verify the disappearing objects bug does not reproduce, given the following steps:

- Runtime prerequisites: Material preview swatch is enabled ("UIPreviewMaterial") by visiting a test region with the feature enabled, or by manually enabling "UIPreviewMaterial" in the advanced settings for the current session
- Region prerequisites: Unknown, but a region with lots of stuff in it (like Rumpus Room 2048 on Aditi) seems to increase repro rate
- Right click an object and select, "Edit item"
- Go to texture tab, select PBR Metallic Roughness from dropdown, and click the button to select material from inventory
- Ensure "Apply now" is checked in the inventory selection floater
- Alternate between different materials from the inventory selection floater
- Look around the world and check for permanently disappeared objects.

### Dynamic Exposure Influence Fix Test

This test is recommended for verifying that secondlife/viewer-issues#72 is fixed.

#### Symptoms

Dynamic exposure in the world could be influenced by the material preview being displayed. If a material preview was being generated in a given frame, then, depending on the current environment, the user would observe an unpleasant flashing effect in the environment:

- The world view could suddenly get darker and then fade back to normal exposure levels
- The world view could suddenly get brighter and then fade back to normal exposure levels

#### Bug Reproduction Steps

Verify the dynamic exposure influence bug does not reproduce. Test using a few environment presets such as Default Midday, Sunset, and Midnight.

- Right click an object and select, "Edit item"
- Go to texture tab, select PBR Metallic Roughness from dropdown, and click the button to select material from inventory
- Alternate between different materials from the inventory selection floater

#### Regression Testing

Dynamic exposure in the world should continue to work correctly. In particular:

- Exposure should fade gradually from high exposure to low exposure and back as needed
- Exposure should decrease in brighter environments
- Exposure should increase in darker environments
