Anti-Aliasing
Visual Quality by Default
Nova aims to provide best-in-class visual quality for your UI content out of the box. The features developed to achieve this goal are unique per rendered UIBlock type.
Icon | UIBlock | Feature |
---|---|---|
UIBlock2D | Local Anti-Aliasing | |
TextBlock | Super Sampling | |
UIBlock3D | Geometric Precision |
This article discusses the details and configurations of the features in the table above, along with some other useful tips to help improve the legibility of your user interface.
Local Anti-Aliasing
On the UIBlock2D component, Nova uses advanced, local anti-aliasing to miniminze unsightly jagged edges and maximize the clarity of your content, all without requiring any additional post-processing techniques (e.g. full-screen AA).
In Nova, this advanced, local anti-aliasing is referred to as edge softening and can be toggled per UIBlock2D through the SoftenEdges property. When edge softening is enabled on a given UIBlock2D, the effect is the applied in the following locations:
- Body edges
- Body rounded corners
- Border edges
- Border rounded corners
Edge softening is also applied to content along the internal perimeter of a Clip Mask's body, ensuring a soft masking effect rather than a harsh cutout.
For further control over Nova's edge softening effect, the strength of the effect can be adjusted globally via:
Project Settings > Nova > Rendering > Edge Soften Width
For projects where significant aliasing is more likely to occur, such as VR experiences, increasing the strength may be particularly helpful. See EdgeSoftenWidth for more info.
Note
In situations where a UIBlock2D is rendering an image containing transparency along its perimeter, edge softening may lead to undesired artifacts where the image would otherwise be transparent. Guidance in this scenario is to simply disable SoftenEdges on that particular UIBlock2D.
Text
Super Sampling
In projects where significant aliasing is more likely to occur, such as VR experiences, text can often be a primary source of unwanted aliasing or shimmering.
For these scenarios, Nova supports super sampling, which can reduce such shimmering artifacts and can be globally enabled for TextBlocks via:
Project Settings > Nova > Rendering > Super Sample Text
See SuperSampleText for more info.
Extra Padding
Another technique we recommend, though not unique to Nova, which can make a drastic improvement in text legibility for VR applications is enabling extra padding on TextMeshPro components. In the context of Nova, the value should be set on each TMP component attached to a TextBlock.
Source: developer.oculus.com
3D Mesh Resolution
For UIBlock3Ds, Nova exposes a couple settings to specify the number of divisions used when creating the underlying mesh for UIBlock3D objects.
Project Settings > Nova > Rendering >
UIBlock3D Corner Divisions
UIBlock3D Edge Divisions
While far from an anti-aliasing technique, a higher division count around corners and edges of UIBlock3D objects will lead to a "rounder" shape, as opposed to a boxier and more jagged one.
Warning
More divisions means more polygons, which come at the cost of performance. Guidance here is to set the separate divisions to the minimum values which produce a shape you deem as "round enough" for your project.