2023 week #20: SL CCUG meeting summary: mirrors and PBR terrain

Small Town Green, March 2023 – blog post

The following notes were taken from my audio recording and chat log transcript of the Content Creation User Group (CCUG) meeting held on Thursday, May 18th, 2023 at 13:00 SLT. 

These meetings are for discussion of work related to content creation in Second Life, including current work, upcoming work, and requests or comments from the community, together with viewer development work. They are usually chaired by Vir Linden, and dates and times can be obtained from the SL Public Calendar.


  • These meetings are conducted in mixed voice and text chat. Participants can use either when making comments  or ask or respond to comments, but note that you will need Voice to be enabled to hear responses and comments from the Linden reps and other using it. If you have issues with hearing or following the voice discussions, please inform the Lindens at the meeting.
  • The following is a summary of the key topics discussed in the meeting, and is not intended to be a full transcript of all points raised.

glTF Materials and Reflection Probes

Project Summary

  • To provide support for PBR materials using the core glTF 2.0 specification Section 3.9 and using mikkTSpace tangents, including the ability to have PBR Materials assets which can be applied to surfaces and also traded / sold.
  • There is a general introduction / overview / guide to authoring PBR Materials available via the Second Life Wiki.
  • Substance Painter is also used as a guiding principal for how PBR materials should look in Second Life.
  • Up to four texture maps are supported for PBR Materials: the base colour (which includes the alpha); normal; metallic / roughness; and emissive, each with independent scaling.
  • Given the additional texture load, work has been put into improving texture handling within the PBR viewer.
  • In the near-term, glTF materials assets are materials scenes that don’t have any nodes / geometry, they only have the materials array, and there is only one material in that array.
  • The overall goal is to provide as much support for the glTF 2.0 specification as possible.
  • To provide support for reflection probes and cubemap reflections.
  • The viewer is available via the Alternate Viewers page.
  • Please also see previous CCUG meeting summaries for further background on this project.


  • The RC glTF / PBR viewer was updated to version on Tuesday. May 16th.
  • Work is continuing to try to fix the issues with pre-PBR skies looking “broken” in the PBR viewer. This is seen as the last major fix required to the viewer, the rest of the required work being seen as or “maintenance” fixes rather than major breakages
    • The probable solution for the sky issue is to use the reflection probe ambience as a hint as to how the sky should rendered. If the ambience setting is zero, various environment sliders such as Brightest (currently referred to a Gamma in the viewer) should respond in much the same way as they do in pre-PBR viewers. Otherwise the sky will be rendered as PDR / HDR.
    • This is acknowledged as being something of a kludge, but is seen as a easiest way to maintain rendering for non glTF / PBR scenes.
  • Water reflections: the glTF / PBR viewer includes updates to the rendering of Linden Water reflections.
    • These are seen as being “not as good” as water reflections seen in non-PBR viewers, but they run with a lot less in the way of overhead on the viewer.
    • The reduction in reflection quality is the result of no longer doing a full rendering pass on Linden Water, and the decision to do this was made to offset the cost of reflection probes and planar mirrors (see below).

Screen Space Reflections and Mirrors

  • Screen Space Reflections (SSR) – (non-SL overview):
    • Now supports both glossy and “stupid” roughness values, with “good” performance, and supports adaptive sampling rates.
    • SRR will apply to “everything” in a scene.
    • The same approach taken with SSR will also be used for planar mirrors.
  • Planar mirrors:
    • Geenz Linden is working on both occlusion culling (at what distance from an avatar / camera should mirrors render) and general mirror constraints (how many mirrors should be active for an avatar at any given time). There are currently no plans to limit mirrors on the basis of size.
    • The latter will most likely initially be set to one, and if there are multiple mirrors within range of an avatar, only the nearest will have reflections actively rendered, the rest will simply render as glossy surfaces.
    • The distance culling is unlikely to exceed 12 m, and there are cases (e.g. some Linden Homes regions) where it would be best suited as being a lot less, to avoid situations where someone has a mirror in their home – but it is impacting their neighbours’ rendering.
    • The rate of update for mirrors might be throttled; a decision has not been taken on this as yet.
    • The limitations are unlikely to have debug overrides (although this might change in part for some as testing progresses) in order to prevent people from inadvertently crippling their frame rates. In this latter regard, Geenz notes:  “The performance sucks, the use cases are limited, and you should plan accordingly.”
    • Rendering takes the form of: reculling the scene from the perspective of the mirror, re-rendering that scene into the G-Buffer, re-shading that scene in the deferred pass, and finally re-rendering semi-transparent objects – all of which is intensive.
  • The intent: LL want to get to a point where SSR and reflection probes should be sufficient for more reflection use-cases. Mirrors should only ever used in exceptional cases where SSR and reflection probes cannot achieve the desired effect (i.e. the shiny metal coffee pot on the table and the “glass” on the picture frame on the wall should both utilise SSR / reflection probes for the reflections on their surfaces and not be set as a mirror).

PBR Terrain

  • As per my TPVD summary for Friday, May 12th, there is a project underway to provide PBR support for terrain.
  • This is seen as a means of leveraging PBR Materials to offer some quality improvements to terrain ahead of any longer-term terrain project which might yet be considered / actioned.
  • The idea is to enable the use of Materials asset IDs in place of the usual texture IDs and applying them to the ground.
  • An initial alpha build of a viewer supporting this work is available through the content creation Discord server. However, note that it is only alpha and unsupported outside of the project at this time.
    • Please also note that at the request of Linden Lab, I am unable to publish details on how creators can obtain access to the content creation Discord server. Those who are interested should wither a) attend a Content Creation User Group meeting and request access there; or b) contact Vir Linden to request details on how to request access.
  • As this is purely a viewer-side change, it does not require a server-side update, but for testing, the viewer should preferably be used on Aditi (the beta grid), where there are materials available within the PBR regions expressly for testing the capability. There is also a debug setting in the viewer which allows it to be used “anywhere”, but this is described as currently “hacky”.
  • This work also sees an increase in the overall texel density for terrain, raising it to 1024×1024, and the texture repeat has been doubled. The latter may only be a temporary move, with discussions at LL revolving around various ideas such as hex tiling.
An example of PBR materials applied to Second Life Terrain. Via Niri Nebula, original by Animats
  • Important notes with this work:
    • It is not terrain painting. It is the application of PBR materials – terrain painting is described as “something that’s on the radar” at LL.
    • The work does not include support for displacement maps.
    • The work is currently only viewer-side, with no corresponding server-side support, the idea here being to prototype what might be achieved and testing approaches / results.
    • It is viewed as a “mini project”, which can potentially be built upon to include elements such as simulator support (including EM tools, etc.).
    • Given the above point, there are also discussions on how best to handle the default grass texture for land (which is just a basic diffuse map) if the PBR terrain work is to go mainstream. Currently, updating this is not part of the mini-project.

glTF and the Future

  • glTF “phase one”: PBR materials (current project).
  • glTF “phase two”: mesh asset uploads support and scenes (up to, but not including animations).
  • glTF “phase three”: animations, morph targets, etc.

Next Meeting

  • Thursday, June 1st, 2023.

† The header images included in these summaries are not intended to represent anything discussed at the meetings; they are simply here to avoid a repeated image of a gathering of people every week. They are taken from my list of region visits, with a link to the post for those interested.


Have any thoughts?

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.