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.
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.
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.
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. .
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.
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.
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.
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
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.
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.
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.
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.
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.
[Video: 30:53-31:55] This viewer also includes a fix for handling object occlusion.
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.
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).
Where Our Journey Begins, February 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, March 31st 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 the meeting and is not intended to be a full transcript.
Available Viewers
Current SL viewer pipelines:
Release viewer: version version 6.5.3.568554 – formerly the Maintenance J&K RC viewer, promoted Monday, February 28 – No Change
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
There is a general request out that people try the Performance Improvements RC viewer even if they are not in the cohort to auto-receive it as a viewer update.
Additional Materials Support – CCUG Meeting
LL are actively considering expanding the SL materials system to handle materials surfaces (imported in glTF format).
The initial idea is that when done, it will result in a “materials asset” containing all the settings that can be stored in inventory and re-used on object faces.
The primary motivators for this are a) to help people who are creating content in the likes of Substance 3D Painter, so that then can import and then adjust the parameters are required; and b) to act as a foundational step as SL moves towards supporting PBR, as PBR will require additional texture channels, etc., and LL believe this approach offers a means to start holing that additional information.
However, as assets, materials, while copyable / reusable, would not initially be editable in-world when in use.
To start this off, LL are looking to:
Better understand “typical” workflows used by content creators (notably the specific tools creators would like to see supported), and how they might better support those workflows.
Gain feedback on how creators might want to use an expanded materials system.
It is felt that to be of value, the entire SL reflection model would require an extensive overhaul to better support specularity handling. However, LL are still determining overall support for materials, and have suggested specularity could be handled in one of two ways:
The glTF could be adapted to the existing SL texture entry parameter;
Or (seen as preferable) add glTF support to the render engine for materials exactly as they come out of Substance 3D Painter and similar tools, allowing reflection models produced within them to be properly represented.
Support for the latter is already available within the viewer, but is not currently readily accessible for use.
Some form of user group may well be established to help manage discussions going forward and help understand how different tools implement glTF and how creators utilise those tools.
Provision of materials support for Bakes on Mesh is not a part of this work.
In Brief
A lot of general discussion on a number of topics, none of which is currently the focus of any Lab project, including:
“Flexi-mesh”: .a frequent request to have mesh react to physics in the same manner as flexiprims.
Technically this could be made possible by treating the flexiprim physics as part of the skeleton rather than as just a primitive path.
However, there is a real risk that were this to be done, it would break existing flexiprim content.
Currently, there are no plans to touch the flexiprim code; or offer support for “flexi-mesh”. However, if a well-conceived feature request on the subject is submitted, then it might be something that the Lab could look at in the future to see how it might be addressed.
Physics enhancements (e.g. altering the rate at which an avatar sinks in Linden Water so as to be more realistic) – no plans at present to touch the physics system.
There has been a request to completely overhaul the mesh importer to provide a much better means of previewing models prior to upload (e.g. see things like lighting effects, how textures appear, etc.).
Doing so is seen as assisting workflows by allowing models to be previewed without the need to log-in to the beta grid (for free uploads), easing the workflow when working on the Main grid.
Again, shy of a detailed feature request, there are no plans to overhaul the mesh importer in a dramatic way.
BUG-231985 “LL Incoming Damage Cap” is a new feature request to make the SL damage system more flexible to creators of combat, etc., environments / games when damage is a factor (e.g. by allowing a max damage per hit cap to be set for a region / parcel, so that players aren’t automatically “dead” on the first hit).
Setting animation priority via script: frequently requested, but not yet on the roadmap, although LL are aware of the popularity of the request.