2022 CCUG meeting week #24 summary: Materials, ALM

Luane’s World, May 2022 – blog post

The following notes were taken from my audio recording and chat log of the Content Creation User Group (CCUG) meeting held on Thursday, June 16th 2022 at 13:00 SLT. These meetings are chaired by Vir Linden, and their dates and times can be obtained from the SL Public Calendar.

This is a summary of the key topics discussed in the meeting and is not intended to be a full transcript.

Official Viewers Update

No changes to the list of official viewer through until Thursday, June 16th, leaving them as:

  • Release viewer: version 6.6.0.571939 – formerly the Performance Improvements viewer, dated May 25th – no change.
  • Release channel cohorts (please see my notes on manually installing RC viewer versions if you wish to install any release candidate(s) yourself).
    • Nomayo Maintenance RC (Maintenance N) viewer, version 6.6.1.572179, June 1.
    • Makgeolli Maintenance RC viewer (Maintenance M) viewer, version 6.5.6.571575, May 12.
  • Project viewers:
    • Performance Floater project viewer, version 6.5.4.571296, May 10.
    • Mesh Optimizer project viewer, version 6.5.2.566858, dated January 5, issued after January 10.
    • Legacy Profiles viewer, version 6.4.11.550519, dated October 26, 2020.
    • Copy / Paste viewer, version 6.3.5.533365, dated December 9, 2019.

General Viewer Status

  • Bugs are still being ironed-out of the release version of the Performance Improvements viewer.
  • It is hoped the Legacy Profiles project viewer will start to move forwards once more.
  • There’s a further dedicated graphics project viewer in the wings, which may be appearing in the near future.

Materials and PBR Work

Please also see previous CCUG meeting summaries for further background on this work, with notes specific to the reflection probe work available in my week #22 and week #20 meeting summaries.

Outline of Work

  • Work on an implementation of reflection probes which can be used both with PDR shading and with legacy content.
    • The overall aim of this work is to provide a means to support more physically accurate reflections in SL than can be currently generated (seen as a requirement for PBR support).
    • It applies to both PBR generated content, once available, and to legacy content.
  • Creating a materials type with an associated inventory asset. This  will initially comprise the ability to copy a texture entry (with its specific parameters) to inventory, to be followed by initial work to work implement a PBR graphics pipe in the viewer.

Reflection Probes Progress

  • Simulator-side support for reflection probes has been on test using an experimental view and simulator-side updates available on Aditi through the DRTSIM542 channel (Materials 1, Rumpus Room, Rumpus Room 2, and Materials Adult).

Materials Progress

  • Prototype Materials editor

    Work is continuing on glTF materials import, and the hope is to have something that is functional within “the next week or two”. This uses the same unpacking mechanism as Unreal 4.

  • Materials will be uploaded with an additional editor (shown right), which will allow some manipulation and delivery the materials as an inventory item when uploaded.
  • Supported textures / capabilities:
    • RGB albedo + transparency.
    • RGB Occlusion/Roughness/Metalness: R = occlusion, G = roughness; Blue = metalness.
    • RGB emissive.
    • RGB normal (- alpha).
    • Double-sized supported (disables backface calling before issuing the draw call).
    • Two-sided lighting (so if the back of a triangle is visible, it flips the normal around).
  • Functionality not initially supported will be the ability to change the UVU wrapping Mode (so everything will sill be repeat); no ability to change the metification / magnification filter per texture;
  • The process separates the materials from the mesh, so the materials can’t know if things like tangents are present.
  • Texture will initially have to be packed by a creator’s preferred toolset; once the project gets to a state of polishing, the importer should re-pack the textures itself, unless importing from a non-glTF source, in which case self-packing will still be required.
  • Normals will likely be MikkTSpace, as per the glTF specification, but work needs to be done to see if supporting this could lead to clashes with the current normal maps rendering. This does mean that current Normal maps will not work on PBR materials.
  • Uploads will be L$10 per texture, so L$40 if all four used.
  • Brad Linden is working on getting the import into inventory working.

ALM Proposal / Work

At the #week #23 TPVD Developer Meeting (notes here), it was indicated that LL are “leaning” towards removal of the non-Advanced Lighting Model (ALM) (aka “forward rendering”) rendering path from the viewer, leaving just ALM rendering (aka deferred rendering”).

  • This was triggered as a result of a bug report which initially appeared to suggest the Performance Improvements viewer unintentionally alters the render order of object faces. While it later proved that the issue was more an edge-case in the way a piece of content had been created, efforts to try to correct it and to ensure it rendered as desired in both ALM and non-ALM rendering, raised the question as to whether it would simply be easier to remove the non-ALM path.
  • Were non-ALM rendering to be removed from the viewer, it would:
    • Only be done if it can be shown that this does not adversely impact performance (e.g. ALM runs roughly as well as non-ALM for those using the latter) on the broad cross-section of hardware most commonly operated by SL users.
    • Include a slider to manage the number of rendered local lights, as these are unlimited under ALM but can cause performance issues on low-end systems; thus a slider will help those on lower spec hardware to determine how many local lights they wish to have rendered.
    • Likely include a “data saving mode” that will prevent the download of materials for those on metered connections (to reduce the amount of data crossing their connection) and / or help those who find that materials loading can impact performance. This will have a UI warning that when employed, some objects may not look the way they are supposed to look.
  • In terms of the last point above and “data saving mode” the focus is currently on how many users would need it *if* the Lab goes forward with the idea. This will help determine how much the mode is needed and how best to approach it.
  • Given the ongoing work to support PBR and a more rounded set of materials, moving to deferred (ALM) rendering without fallbacks to non-ALM rendering – providing, again, the caveats noted above can be met / implemented – will help ensure a more reliable / consistent viewing experience.

Rigged Attachment Render Order

In terms of render order of object faces on rigged meshes, LL are considering adding a “render order number” that can be used by creators to ensure the orderly rendering of faces for transparent rigged attachments (thus allowing pre-loading of textures on “invisible” faces, etc.).

  • This would hopefully overcome issues of implicit render ordering (which may change due to other viewer dependencies), and of interpretations of the rendering order by creators that can lead to the kind of issue noted in the ALM discussion above.
  • There are complications in attempting this -e.g. render order is not per object, but per mesh, and is part of an overall schema for rigged attachments (attach order, linkset order, face index order); questions around overall outfit changes, where multiple attachments are being made, etc.
  • Providing such an approach does not break masses of existing content, it would allow creators to continue to use the implicit ordering (and risk odd behaviours should LL make changes in the future that affect the order), or use the ordering system to explicitly set the order, no matter what changes might occur down the line.
  • None of this work should impact the attachment order, but could significantly reduce the number of avatar draw calls.

Next Meeting

  • Thursday June 30th, 2022.

2022 CCUG meeting week #22 summary: reflection probes update

Deer River Spring, April 2022 – blog post

The following notes were taken from my audio recording and chat log of the Content Creation User Group (CCUG) meeting held on Thursday, June 2nd 2022 at 13:00 SLT. These meetings are chaired by Vir Linden, and their dates and times can be obtained from the SL Public Calendar.

This is a summary of the key topics discussed in the meeting and is not intended to be a full transcript.

Official Viewers Update

  • A new Maintenance RC viewer – Maintenance N, code-named Nomayo – version 6.6.1.572179 – was issued on June 1st. The viewer should offer improvements on media playback of web content, etc.

The rest of the official viewers remain as:

  • Release viewer: version 6.6.0.571939 – formerly the Performance Improvements viewer, dated May 25th – NEW.
  • Release channel cohorts:
    • Makgeolli Maintenance RC viewer (Maintenance M) viewer, version 6.5.6.571575, May 12.
  • Project viewers:
    • Performance Floater project viewer, version 6.5.4.571296, May 10.
    • Mesh Optimizer project viewer, version 6.5.2.566858, dated January 5, issued after January 10.
    • Legacy Profiles viewer, version 6.4.11.550519, dated October 26, 2020.
    • Copy / Paste viewer, version 6.3.5.533365, dated December 9, 2019.

Reflection Probes

Additional information available within my week #20 CCUG meeting summary.

  • A reflection probe will be a sphere or cube (mesh, prim or sculpt) set within a scene with specific properties allowing it to create a cube map of all objects within its bounding box. Anything within that bounding box with a “reflective” (shiny) surface (with the possible exception of worn attachments) will then offer “reflections” based on that cube map.
  • Cube maps for probes are a purely viewer-side artefact, and are updated approx. once every 30 seconds at 60 fps, although this will “get smarter” in the future and be based on actual probe location (e.g. in or out of the current field of view, etc.).
  • So, think of probes as mapping where reflections should be coming from in a scene, not as a tool for deciding which object should be reflecting things.
  • The viewer will hopefully be able to handle up to 256 probes at any one time (the number of probes in a region can be unlimited), each with a (current) maximum effective draw distance of 64 m.
  • Probes will:
    • Be detected by the viewer on load, much like lights already are (reflection probes use a lot of the code originally developed for light state management), with revisions to prevent issues associated with lighting such as flickering.
    • Have an influence volume, an ambience setting (which overrides the environment ambience) and a “near clip” parameter to help control what is rendered into the cube map (e.g. so items close to the centre of the probe and which might otherwise dominate any generated reflections, are not rendered into the cube map).
    • Require “PBR enabled”, and when this is set, legacy objects using glossiness and / or environment shine will render the reflection generated by a cube map respectively in accordance with the degree of glossiness / the sky environment, as well as any objects using the upcoming PBR materials.
      • There are a lot of nuances with the above bullet point such that legacy content won’t simply “work” with reflection probes, some degree of adjustment on object glossiness / shine might be required.
    • Work independently of LOD.
  • Probes will not be designed for use as attachments.

In Brief

  • Custom pivot point work: currently awaiting simulator updates & will require viewer-side changes; the focus is slowly moving towards trying to move the latter part of the work forward “in the not too distant future”.
  • It was noted that the mesh optimiser (as in the current release viewer) still has issues that need to be addressed,
    • One such issue is when the LOD generator is implicitly asked to simplify a model, and it cannot hit a target without destroying UV seams, it will destroy the UV seams (whereas GLOD will delete triangles, leaving holes in models). This appears to be happening on models with a lot of UV islands, resulting in texels becoming visible when they should never be drawn.
    • LL acknowledges that neither the optimiser issue nor the GLOD issue are ideal.
    • Issues with the mesh uploader are requested via Jira with objects included, if possible.
  • In response to a question, LL currently have no plans to alter the LI calculations for Animesh, however, with the performance improvements (and given part of the LI “penalty” was to compensate for the performance hit of animating Animesh characters), there is a suggestion it should perhaps be re-visited, particularly given most at the meeting with an opinion felt the 15LI penalty was a “blocker” to developing Animesh content.
  • The above points led to a general discussion on LODs, decimation, Land Impact based on size, the ARCTan project (still something LL would “like to get back to”), the impacts of draw calls over poly counts, etc., but with no actionable points raised.
  • There is a fork in the texture rendering pipeline underdevelopment that should, once available, ensure that only the required texture resolution is loaded when it is required (e.g. so the tiny buttons and the little broach and the earring etc., on an avatar won’t all be displayed at 1024×1024 all the time, but the system will only ever download at use a 128×128 version of the textures used).
  • Work is also in progress to ensure the official viewer uses all available video memory. This will eventually see the VRAM slider in Preferences → Graphics vanish.
    • Note that this is available video memory – not necessarily the total on your system; obviously, running SL and multiple browser tabs and other windows will impact how much memory the viewer can actually access, leading to the potential of textures being uploaded.

Next Meeting

  • Thursday June 16th, 2022.

2022 CCUG meeting week #20 summary: reflection probes update

Lemon Trees Mediterranean – blog post

The following notes were taken from my audio recording and chat log of the Content Creation User Group (CCUG) meeting held on Thursday, May 19th 2022 at 13:00 SLT. These meetings are chaired by Vir Linden, and their dates and times can be obtained from the SL Public Calendar.

This is a summary of the key topics discussed in the meeting and is not intended to be a full transcript.

Official Viewers Update

  • On Wednesday, May 18th, the Performance Improvements RC viewer updated to version 6.6.0.571869.

The rest of the official viewers remain as:

  • Release viewer: version version 6.5.5.571282, – formerly the MFA RC viewer, dated April 26, promoted Wednesday, May 4th – Non change.
  • Release channel cohorts:.
    • Makgeolli Maintenance RC viewer (Maintenance M) viewer, version 6.5.6.571575, May 12.
  • Project viewers:
    • Performance Floater project viewer, version 6.5.4.571296, May 10.
    • Mesh Optimizer project viewer, version 6.5.2.566858, dated January 5, issued after January 10.
    • Legacy Profiles viewer, version 6.4.11.550519, dated October 26, 2020.
    • Copy / Paste viewer, version 6.3.5.533365, dated December 9, 2019.

Materials and PBR Work

Please also see previous CCUG meeting summaries for further background on this work. In summary:

Three core elements of work:

  • Work on an implementation of reflection probes which can be used both with PDR shading and with legacy content. This formed the focus of this meeting.
    • The overall aim of this work is to provide a means to support more physically accurate reflections in SL than can be currently generated (seen as a requirement for PBR support).
    • It applies to both PBR generated content, once available, and to legacy content.
  • Foundational work in creating a materials type with an associated inventory asset, as per the week #16 meeting. This  will initially comprise the ability to copy a texture entry (with its specific parameters) to inventory, to be followed by
  • Initial work to work implement a PBR graphics pipe in the viewer.

Reflection Probes

  • Additional information available within the week #18 CCUG meeting summary.
  • This work is close to feature complete.
    • The viewer gets to work with 256 reflection probes, which take the form of spheres or boxes within a region.
    • Anything within a sphere or box will receive reflections from the cube map rendered from the centre of the sphere / box.
    • Some of these probes will be automatically placed in open areas of land where there are objects, etc., by the viewer.
    • Additional probes can be created by users using prims tagged as probes and placed where they want to influence the reflections being generated (e.g. inside rooms, etc.).
    • Baking for reflection probes will be automatic, and updates will be handled at least once every 30 seconds.
  • There is a performance hit with the capability, and this is still being adjusted so that it will hopefully not be overly onerous.
  • Elizabeth Jarvinen (Polysail) is working  on the current light shader to enable legacy content to receive the reflection probes without looking “too different” and look like it belongs in the environment along with PBR content.

Materials /PBR Work

  • Progress continues in developing a “materials” type with an associated inventory asset capable for containing PBR materials data.
    • LSL access to said materials is regarded as being “tricky”, simply because the materials will be an asset type loaded by the viewer.
    • What is being proposed is to have the ability to “override” elements of the asset (e.g. colour or texture) via LSL by applying the changes to the properties of the object face to which the materials is applied.
      • So, for example, the LSL override says, “OK. I know this material has a texture UUID inside it – I don’t know what it is, but I want this face to use MY texture UUID instead” – so the material asset itself is not changed / updated, but the UUID defined by the LSL code is displayed, rather than the texture UUID defined by the asset.
      • If the materials asset type subsequently be changed, then the overrides applied via LSL to the object face are automatically dropped until such time as new overrides are applied.
    • This is seen as the most flexible approach, as it protects the integrity of the materials asset (in a similar manner to texture data) whilst also allowing the flexibility of using colour variants against an asset type (such as in the case of a sweater using a single materials asset, but with multiple colour options in the pack or in allow a HUD to alter the tint of an object that uses a materials asset).
  • Nothing of significance to report on the PDR shader work.

In Brief

  • Custom pivot point work: currently awaiting simulator updates & will require viewer-side changes.
  • A fix has been implemented in the viewer to speed-up opening media / web floaters (such as search). This should be surfacing in the next Maintenance RC viewer (“Maint N” to follow the Makgeolli  Maintenance RC).
    • An upcoming simulator release should have a fix for objects failure to rez when users first log-in. .

Next Meeting

  • Thursday June 2nd, 2022.

2022 CCUG meeting week #18 summary: reflection probes

Cherishville, March 2022 – blog post

The following notes were taken from my audio recording and chat log of the Content Creation User Group (CCUG) meeting held on Thursday, May 4th 2022 at 13:00 SLT. These meetings are chaired by Vir Linden, and their dates and times can be obtained from the SL Public Calendar.

This is a summary of the key topics discussed in the meeting and is not intended to be a full transcript.

Official Viewers Update

  • On Wednesday, May 4th, the de facto release viewer was updated to version 6.5.5.571282, formerly the MFA RC viewer, dated April 26. See my notes on this viewer here.
  • On Thursday, May 5th, the Performance Improvements RC viewer updated to version 6.6.0.571507.
    • The focus for this viewer is now bug and crash fixes, rather than adding functionality.
    • This update also sees the viewer merged with the release viewer MFA code base, and so will require anyone who uses MFA and who has not logged-in to Second Life using an MFA token to do so -follow the link above for details.

The rest of the official viewers remain as:

  • Release channel cohorts:
    • Makgeolli Maintenance RC viewer (Maintenance M) viewer, version 6.5.5.570983, April 26.
  • Project viewers:
    • Performance Floater project viewer, version 6.5.4.569531, March 18.
    • Mesh Optimizer project viewer, version 6.5.2.566858, dated January 5, issued after January 10.
    • Legacy Profiles viewer, version 6.4.11.550519, dated October 26, 2020.
    • Copy / Paste viewer, version 6.3.5.533365, dated December 9, 2019.

Graphics Update

  • During the previous CCUG meeting, the potential direction for Physically Based Rendering (PBR) materials support was discussed at length, and concerns were raised that for PBR to be effective, SL’s lighting / reflections model would need to be updated.
  • As a result, these branches of work have commenced:
    • The foundational work in creating a materials type with an associated inventory asset, as per the week #16 meeting. This  will initially comprise the ability to copy a texture entry (with its specific parameters) to inventory.
    • Foundational work on the PBR graphics pipe in the viewer.
    • Work on an implementation of reflection probes which can be used both with PDR shading and with legacy content. This formed the focus of this meeting.

Reflection Probes

  • Runitai Linden envisages two forms of reflection probes:
    • Those that are part of a scene’s environment and are automatically placed, but which can (hopefully) be adjustable by scene builders – this is the current focus of the work, with the reflection probes married to the octree so they will align with octree nodes.
    • Reflection probes which can be specifically placed within structures by their creators (e.g. a probe within each room of a house) or which can be created and added to a legacy structure.
      • These would override “environment reflection probes” to prevent clashes (so that, for example, your nice shiny kitchen worktop is not reflecting the sky outside, but is offering reflections of the static objects on and around it.
      • Their size would be based on the volume they are attached to, which would allow for parallax correction, allowing the reflections to be accurately generated within a room space.
“Environment reflection probes” used with legacy content: on the left, shiny surfaces of a prop engine as most of us are used to seeing them today. Right: the same engine but with its shiny surfaces now showing reflections generated via a reflection probe in the scene. Credit: Runitai Linden
  • These probes:
    • Comprise an object (prim) defined as a reflection probe which essentially uses the 360º snapshot code viewer to produce a cube map of its surroundings with each face set to 512×512 resolution (so 6 x 512×512), which can then be used to generate object “reflections” on surfaces within their volume of control.
      • This will require some additional checkboxes to be added to the build floater / viewer, but otherwise means probes can be inserted into “indoor” scenes using the existing build toolset.
    • Capture everything except avatars (so no reflections of your avatar walking past a shiny surface).
    • Initially trigger the generation of their cube maps by the viewer on entering a scene.
      • Maps are cached on disk, with up to 64 held in memory.
      • Currently only 8 maps are active at any one time. However, given sampling of just 8 maps for rendering can take up to 70% of an RTX 3080 GPU, this number is likely to be dropped to 4, unless a more targeted means of sampling for a given pixel can be determined.
    • Are updated whenever the number of objects in them changes or the Day Cycle changes, although the update rate is no more than one probe per frame.
    • Include Fresnel calculations when generating cube maps.
Glossiness and reflection probes: in this image, the centre left row of spheres have a white face, and the centre right all have black faces. Each pair, front-to-back, has a matching and increasing level of glossiness applied. Note how the greater the amount of glossiness, the sharper the reflections of the probe’s cube map. Credit: Runitai Linden. 
  • The overall aim of this work is to provide a means to support more physically accurate reflections in SL than can be currently generated (seen as a requirement for PBR support). This work can then both:
    • Be integrated into the PBR work as that is added to Second Life.
    • Improve the existing SL environment map so that legacy content does not clash with PBR content as badly as might otherwise be the case – although it will not be a perfect blending of the two.
    • However, it will be “very, very hard for this to not break [some] content”, although the overall result should improve so SL looks.
    • Given this, the capability will need a lost of assistance with testing.
  • Concern has been raised about how to limit / control the use of probes so as not to cause potential performance issues (e.g. by creators including a probe with all of their products that have a shiny / reflective surface).
    • The plan is to have every single pixel in a rendered scene covered by at least one probe via the automatic placement, so objects that are outside certainly should not need their own reflection probes.
    • Even so, it has been suggested that time is taken to produce a “best practices” guide to using reflection probes and to provide examples of bad probe set-ups.
  • It was also suggested that a flag for “do not reflect” should be provided to help control what is included in a cube map in a given setting. It was not clear if this would be possible, so the question was set aside for the next meeting.
  • General Notes:
    • This work is still in its early stages, and elements may change.
    • Several aspects of reflection generation have yet to be tackled (e.g. handling 100% transparent and 100% alpha textured surfaces).
    • The work has yet to be tied-into the existing graphics controls in the viewer so that everything works consistently and logically.
    • Some of the additional work required for generating reflections might be compensated for by optimising other elements of the shader system as this work progresses.
    • At some point this work will be available within a project viewer for testing on Aditi.

Note: while reflection probes formed the core of this meeting, this does not mean this work will be shipped ahead of the more PBR-related work. All three project branches are in their early stages, and so no decision on prioritisation among them has been taken.

PBR-Specific Work

  • The PBR graphics pipe is still being plumbed-in.
  • No work has really started with the PBR shader set.
  • The plan is still to follow the glTF specification.
    • As this embraces the PBR Metallic Roughness workflow, this will be the first to be supported.
    • If demand surfaces, LL might add Specular Glossiness as a follow-up.

Next Meeting

  • Thursday May 19th, 2022.

2022 CCUG + TPVD meetings week #16 summary (PBR)

Seagull Rock, March 2022 – blog post

The following notes were taken from:

  • My audio recording and chat log of the Content Creation User Group (CCUG) meeting held on Thursday, April 21st 2022 at 13:00 SLT.
  • The video recording by Pantera (embedded at the end of this piece, my thanks to her as always for recording the meetings) from the Third-Party Viewer Developer (TPVD) meeting on Friday, April 22nd, 2022 at 13:00  SLT.

These meetings are chaired by Vir Linden, and their respective dates and times can be obtained from the SL Public Calendar.

This is a summary of the key topics discussed in each meeting and is not intended to be a full transcript of either. However, the video does provide a complete recording of the TPVD meeting, and timestamps to the relevant points within it are included in the notes below.

Available Viewers

[Video: 0:22-2:00 + notes from CCUG meeting]

The list below reflects the rest of the currently available official Second Life viewers:

  • Release viewer: version version 6.5.4.570575 – formerly the Lao-Lao Maintenance RC viewer, promoted Monday, April 18.
  • Release channel cohorts:
    • Performance Improvements RC viewer version 6.6.0.570163, dated April 4, issued April 14(?).
    • MFA RC viewer, update to version 6.5.4.569725, on March 24.
  • Project viewers:
    • Performance Floater project viewer, version 6.5.4.569531, March 18.
    • Mesh Optimizer project viewer, version 6.5.2.566858, dated January 5, issued after January 10.
    • Legacy Profiles viewer, version 6.4.11.550519, dated October 26, 2020.
    • Copy / Paste viewer, version 6.3.5.533365, dated December 9, 2019.

General Viewer Notes

  • The focus remains on fixing the bugs reported on the Performance Improvements RC viewer so that it can be the next viewer promoted to de facto release status. The RC version has been updated but has yet to be issued.
  • The promotion of the Lao-Lao viewer to release status means the current RC viewers are going through the merge with that codebase, and a new Maintenance RC should be appearing soon.
  • The Copy / Paste project viewer has been languishing in project viewer hell for some time whilst the focus on viewer work has been elsewhere. It is hoped that this well move forward once more Soon™.
  • [Video 6:26-7:35] Additional work is being carried out on the Legacy Profiles viewer (such as allowing the avatar UUID to be accessed via scripts by the likes of greeters that display the avatar image, etc.).

CCUG: Additional Materials Support / PBR: Hitting the RESET Button – CCUG Meeting

This formed the core of the CCUG meeting. The notes below should also be referenced with my notes from the previous CCUG meeting.

  • As previously noted LL had proposed a two-step approach towards moved to “full” Physically Based Rendering (PBR) materials support to give a high fidelity to SL rendering where PBR materials are used.
  • Significant concerns were raised about this approach at the last two meetings (e.g. a lot of creators do not use PBR-based workflows – a requirement for glTF – and so moving in this direction could create extensive issues for those creators).
  • As a result of the feedback, discussions at the Lab have been focused on an alternate approach:
    • Creation of a materials inventory type with an associated asset which could potentially have different forms (e.g. in one state it could be associated with PBR, another simply specify the legacy texture / materials parameters)
      • Where the PBR materials are specified, render using a  new “PBR render path”; if the legacy parameters are used, render via the existing render path.
    • Move directly to a PBR implementation.
    • This would initially be limited to the materials aspect of glTF and not support any geometry for objects that can also be held by a glTF file (so no uploading for uploading complete mesh objects as glTF) – which is not to stay upload support for other formats wouldn’t be added at some point in the undefined future).
  • However – the above bullet points are all still under discussion at the Lab, so no final decision on the overall approach has been made.
    • It has also been noted that whatever happens, a significant requirement will be to provide specifications on which materials types are going to be supported, and what people can expect.
    • It is hoped that at least some of the Lab’s approach can built off of existing specifications rather than reinventing the wheel, then extended into those “optional” materials should be supported.

Cube Maps / Reflection Model

  • A concern was raised that current cube mapping used by SL is limited, and would need to be updated to a higher resolution for PBR support to be effective.
    • LL are aware of the limitations of the current cube map and would be “looking to address that” – although indicated this may not be done for the initial release of any related work.
    • This led to concerns that any release of PBR materials support without any corresponding update to SL’s cube mapping will result in creators attempting to implement their own workarounds to perceived limitations, resulting in content at odds with any cube mapping updates the Lab does make.
    • This latter point wasn’t seen as a problem, as LL’s view is that any updates to SL’s cube map will only be relevant to content created after the update, and it was further suggested that any “initial” updates to support PBR (and sans cube maps updates, environment maps, etc., might not even be user-facing, but purely for internal use / testing.
  • A similar concern was raised over the current reflection model + environment maps – that if not considered / managed as a part of the PBR project, it will lead to very poor results or limit the use of PDR materials.
    • Again, LL’s view is that reflection map / probes / environment maps re something that will be tackled “later”; some creators are of the opinion that it needs to be tackled as a core element of the work.
    • LL suggested that they might offer support of static environment maps initially, and then move towards the ability to cast reflection probes to allow reflections to be dynamically generated. However, all of this is still being discussed internally at the Lab.
  • It was also pointed out that lighting / reflections in PBR are calculated on physical properties (e.g. lumen equivalency) – which currently isn’t possible in SL without significant update to the rendering system. This was again seen as something that could be handled “later”.
  • Concerns were also voiced over the idea of things being set aside for “later” on the basis that LL has a long track record of breaking projects down into “iterative phases” – only to deliver the first one or two, and then push further work off into the future for assorted reasons (Examples:. the original materials project, Animesh, Experience Keys, EEP, the in-world aspect of ARCTan (allowing for the fact ARCTan as a whole seems to have become stuck)), with the results they become “someday / never”.

General Questions

  • Will the addition of broader materials support with PBR lead to alterations to the land impact formula?
    • Potentially for content using PBR, but this has yet to be fully determined. The feeling among creators is that a re-balancing of the LI formula would be required.
    • However, LI calculations themselves are in need of overhaul to more accurately reflect the cost of rendering objects (something the Lab has planned to do as “phase 2” of adjusting rendering calculations as a whole under project ARCTan, so while not intrinsic to PBR, LI / rendering costs might be reviewed as an adjunct to this work.
  • Will this lead to an increase in region land capacities? No.
  • Will it apply to all new content, post implementation? Yes, with the exception of system avatars and content requiring the the Bake Service.
  • Will this approach allow scripted update / changes to materials on faces? That is something that will likely have to be “tackled latter”.
  • Will this mean further updates to the uploader? most likely, yes.

TPVD: Off-line Friendship / Group Offers + Simulator Capabilities

[Video: 3:22-6:14]

  • Monty Linden has been working to fix issues of off-line friendship and Group invitation offers failing.
  • This has required a complete overhaul of the related capabilities for handling such offers, with the focus being primarily on getting them working again. Although “at some future time” the functionality might be revisited to do “something bolder and more interesting with it.”
  • This work is going to QA, and will be moving to Aditi (DRTSIM-537) for further testing.
  • At the same time, Monty has also be updating the Simulator Capabilities wiki page
    • The focus had been on making sure the list of capabilities in up-to-date.
    • Work will now be going forward to update / provide the underpinning documentation for all the capabilities. This will be done on an as time permits basis.

TPV In Brief

  • [Video 7:38-26:00] Extensive discussion on updating / refactoring the viewer code, updating the viewer build process, LL’s thinking on moving to more recent graphics APIs (e.g. Vulkan) and the problems involved,
    • Some of this has been covered previously in these summaries (e.g. options for future graphics APIs, the number of users running systems unable to run Vulcan, etc).
    • Much of the discussion is well into the long grass of viewer code, etc., and thus you are referred to the video.
  • [Video: 26:25-37:10] Accessibility options (close captions for when Voice is being used; text to speech, etc).
    • Accessibility is something that is looked at during general UI design work, but there is no project looking at specific questions of accessibility. However, it is recognised that perhaps a more formalised approach to handling accessibility should be adopted.
    • The issue of allowing Voice to be set so that all speakers can be heard equally irrespective of distance from the listener (as once supported by several TPVS, see: BUG-23172) is apparently difficult to implement in the current Vivox implementation and so has been subject to discussions between LL and Vivox.
    • The question was asked if TPVs felt effort should be pushed into a significant Vivox update.
      • A suggested response was given that any attempt to update to Vivox 5 would require a “wholesale change” to the Voice service, LL might be better looking at alternative offerings that offer better means of support.
      • Based on feedback from the meeting, Mojo suggested the keenness for LL to focus on  large Voice related project isn’t there.
  • [Video: 37:43-43:05] Pathfinding:
    • It was suggested that Pathfinding could be improved if the options in the viewer were all moved to a single tab on the Build / Edit floater. LL agreed this would be beneficial and requested a Jira on the idea.
    • LL more broadly noted that Pathfinding could benefit from a re-visit / update, although there are no current plans for any work. Some ideas for potential work have been submitted via BUG-229442. This in turn leads to a broader discussion on some of the additional issues with Pathfinding (lack of cohesive documentation, complexity of use, lack of automatic region rebakes, etc.).
  • [Video: 43:05-46:49] The above flows into a discussion on custom pivot points, some that was being worked on by LL but has been on the shelf of late, and the complexities involved.
  • [Video: 48:15-60:00] A general discussion on land impact calculations and making them more reflective of the cost of rendering (particularly textures, etc.).
    • This touches upon the ARCTan project, which was originally initiated to overall the formulas used to calculate both avatar complexity and the complexity of in-world objects – the latter of which may have led to adjustment in LI calculations, although ARCTan went on to initially focus on avatar complexity prior to being suspended altogether.
    • Folded into this is further discussion of alternate methods of calculating LI (e.g. through object geometry – although this doesn’t necessarily account for draw calls, which tend to be a big hit for the viewer), and ideas for encouraging best practices / finding a balance between control and offering the ability to create and upload.
  • There is further informal discussion after the meeting has ended. Please refer to the video if interested.

 

2022 CCUG + TPVD meetings week #14 summary

Bella’s Lullaby, March 2022 – blog post

The following notes were taken from:

  • My audio recording and chat log of the Content Creation User Group (CCUG) meeting held on Thursday, April 7th 2022 at 13:00 SLT.
  • The video recording by Pantera (embedded at the end of this piece, my thanks to her as always for recording the meetings) from the Third-Party Viewer Developer (TPVD) meeting on Friday, April 8th, 2022 at 13:00  SLT.

These meetings are chaired by Vir Linden, and their respective dates and times can be obtained from the SL Public Calendar.

This is a summary of the key topics discussed in each meeting and is not intended to be a full transcript of either. However, the video does provide a complete recording of the TPVD meeting, and timestamps to the relevant points within it are included in the notes below.

Available Viewers

[Video: 0:00-1:11 and 2:05-243] + notes from CCUG]

The list below reflects the rest of the currently available official Second Life viewers:

  • Release viewer: version version 6.5.3.568554 – formerly the Maintenance J&K RC viewer, promoted Monday, February 28 – No Change
  • Release channel cohorts (please see my notes on manually installing RC viewer versions if you wish to install any release candidate(s) yourself).
    • MFA RC viewer, update to version 6.5.4.569725, on March 24.
    • Performance Improvements RC viewer version 6.6.0.569349, dated March 14.
    • Lao-Lao Maintenance RC viewer, version 6.5.4.569191, issued on March 11.
  • Project viewers:
    • Performance Floater project viewer, version 6.5.4.569531, March 18.
    • Mesh Optimizer project viewer, version 6.5.2.566858, dated January 5, issued after January 10.
    • Legacy Profiles viewer, version 6.4.11.550519, dated October 26, 2020.
    • Copy / Paste viewer, version 6.3.5.533365, dated December 9, 2019.

General Viewer Notes

  • The focus is on fixing the bugs reported on the Performance Improvements RC viewer so that it can be the next viewer promoted to de facto release status. The RC version has been updated but has yet to be issued.
  • The Performance Floater project viewer includes the auto-FPS capability that is similar in nature to Firestorm’s Auto Tune capability designed to help maintain a given viewer frame rate (see here for more), and the aim is to try to sync these two approaches up before the Lab’s viewer moves to RC status.
  • The server-side work required for the Legacy Profiles viewer had been deployed, so that viewer should be updated and appearing soon.

Additional Materials Support – CCUG Meeting

Please also refer to my notes from the previous CCUG meeting.

  • The basic idea remains:
    • Providing the ability to import a glTF file with is single material within it containing all the textures / maps and colour parameters for a given face. Exactly which maps (normal, specular, emissive, roughness, albedo, occlusion, etc.) is still being defined.
    • When uploaded, the material then becomes an inventory asset.
    • When the asset is applied to the face of an object, it overrides the texture parameters for that face (diffuse, normal spec maps, full bright, etc.), with the options to edit these parameters in the Build / Edit tool disabled until such time as the material is removed from that face.
      • However, the face-related options – rotation, repeats per metre, offsets, etc., – would remain accessible.
    • This approach would faces to be textured under the existing system and have a materials asset applied so that viewers without the new materials code would render the “legacy” texture parameters for the object face, whilst viewers with the updated code would render the settings specified by material.
  • What is the benefit of this?
    • It moves SL towards proper support for PBR and the improvements that will bring.
    • Very simply put from an end-user perspective: it will help add depth to Second Life by improving the way surfaces appear be giving them improved surface texturing, reflectivity, and so on; and it will no longer require end-users fiddling around with textures and normal / specular maps to achieve something; they’ll have a simple asset they apply to (say) a wall, and that’s it.
  • The first pass of this work will provide support for Adobe Substance 3D Painter, and as such, LL are looking for feedback from creators who use Substance Painter in terms of how they use it, what kind of materials they are creating, and how they would like those materials represented in Second Life, what maps they would ideally like to see supported.
  • A concern raised with this approach is that glTF does not natively support non-PBR workflows, which is a problem for those who use Substance Painter “non-PBR” (such as clothing creators), and this needs to be taken into consideration.
    • One route around this is the suggestion that the materials actually be built at import time, rather than just built within Substance Painter and exported to glTF for import.
  • It was requested that some form of UI element should be added to the viewer to allow material assets to at least be inspected. While this is something that will be provided, it will not be in the first phase of the work.
  • Rendering for these “new” materials will be entirely separate to the existing rendering path for SL’s existing materials system, allowing for a more “industry standard” approach to be used with the new materials.
  • Whether or not a fee is to be charged for importing these materials is still TBD (and somewhat complex, if the importer is to support using texture files previously uploaded to SL, rather than having to import them again).
  • Longer-term the idea is at when PBR support is added, it will only work with these material assets; texture entries will continue to be handed as they are now (as noted above).
    • PBR itself is a complex issue both technically and in terms of content, and it is already envisaged that it will give rise to differing environments in-world (e.g. locations that are “PBR enabled” and require people to be running viewers capable of supporting PBR).
    • This is because SL content being what it is, there is no easy way to “PBR-ify” it all, and gain a uniform (or even desirable) result – particularly where content has been designed under the existing rendering capabilities to produce a specific result.
  • Given the complexities / impact of such a project, LL recognises there is a need to provide the means for ongoing real-time exchange of ideas / gathering creator input.
    • Neither the CCUG nor the SL forums are seen as a good fit for this kind of interaction.
    • The preferred option voiced in the meeting was to use Discord as a host. Server details TBD at this time, if this is selected.

From the TPVD Meeting

  • [Video: 4:41-9:10] It has been pointed out the 30-day validity period for an MFA token seems unusually long, and a request has been made to reduce it.
    • In particular, testing the MFA code and token refresh when looking at the viewer code is more difficult when the tester has to wait a month between tests and checks / retries.
  • [Video: 11:54-20:10] Beq Janus and Vaalith Jinn are working on “temp mesh” – a means to preview mesh and rigged mesh in-world without necessarily having to log to the Beta grid and upload there. As per the video, there are some issues (such as the temporary creation of linksets), but overall it is hoped with work will result in a usable capability.
    • This conversation folds into itself a broader discussion on purely viewer-side rendering (as opposed to rendering asset data coming via the CDN)
  • [Video: 20:12-25:16] Bandwidth setting confusion:  A claim was made the turning up the official viewer’s network bandwidth setting improves texture download speeds for those on faster Internet connections, prompting a request for the default setting being turned up.
    • Given that the network bandwidth setting is supposedly only for UDP messaging, and all assets, including textures, are transmitted via HTTP via CDN(s), some understandable doubt was cast on this.
    • While not ruling out changing the bandwidth setting causing a degree of improvement, Runitai’s thoughts on the matter (through looking at the code) fall into two areas:
      • Any actual delay in texture fetching is more likely to be with some of the background thread handling which has yet to be updated.
      • It is more likely that issues in texture loading / handling may be related to a number of issues, including a) the viewer mistakenly believing it is running out of VRAM (due to some coding errors) and immediately loading / unloading textures on the background threats; b) changes in how texture are actually downloaded and passed to the decode thread as a result of the move to HTTP that may be having an impact.
    • [Video: 28:53-29:35] In respect of this last bullet point above, it was indicated that TPVs tend to handle texture decoding, etc., somewhat differently, this is not believed to be an issue. A request has been made for a TPV to consider making a code contribution on this, so that LL can investigate making similar changes.
    • [Video: 32:53-44:20] Further discussion on texture fetching and the way the viewer code is generally conservative in this area.
      • [Video: 36:41-41:28] (overlapping with the above)] there is a restatement of the concern that raising the UDP bandwidth setting “because higher is better” could trigger a microburst buffer overrun on the server-side routers were the setting to be raised across all viewers. It is believed the servers are fairly well protected, but this needs to be confirmed by the infrastructure team before any such change is made.
  • [Video: 25:55-30:48] VRAM detection / use: changes are being tested (on Windows at present) whereby rather than setting a minimum default for VRAM (512 MB, a long-time sticking point for many users), LL are shifting to having the viewer query the operating system as to how much VRAM is free.
    • As an example of the potential improvement this has given, a system with 10 GB VRAM will see the viewer use as much of that VRAM as is available, whereas previously, the viewer would get up to using around 1.5 GB and then switch to texture paging.
    • Finding a similar solution for Mac system is somewhat more difficult due to the fact the only reliable report OS X provides is on the amount of installed VRAM, not how much may actually be available for an application to use / how much a process is using.
  • [Video: 45:14-47:16] does increasing the bandwidth setting improve teleporting between region?
    • Anecdotally, this appears to be the case for some.
    • However, whether there is a direct correlation between increasing the UDP bandwidth and inter-region TPs improving is hard to prove, although it is possible a message packet related to TPs is hitting the throttle and getting dropped without any attempted re-try.
  • [Video: 49:11-54:43] custom chat ranges: server-side support for extending chat ranges within regions beyond the default 20 metres (seen as useful for venues hosting meetings, presentations, etc.), was deployed some time ago, but is currently only available on Linden-controlled regions.
    • Wider availability of the capability has hit some privacy concerns (e.g. people believing their chat is limited to 20m in a public region being overheard by someone on the other side of the region). As such, the capability is awaiting viewer-side updates that make it clear to people entering regions where the chat range has been extended that this is the case.
    • This information is actually being sent to the viewer (RegionInfo in the RegionInfo 5 block), but the IU to handle it has yet to be added (and TPVs may not have been aware of its availability so they could create their own notifications).