Materials processing reaches beta – overview and more

After recent delays as the code passed through QA, the Materials Processing viewer unexpectedly reached beta release on Friday, May 31st with the release of version 3.6.0.275764, accompanied by a blog announcement from the Lab.

What is Materials Processing?

In case you’ve missed the news to date (if you already are, feel free to skip to the info on the viewer :)).

Materials processing brings normal and specular maps to object surfaces in Second Life (prims, sculpts and mesh – but not avatar skin / clothing layers). The capability has been developed as a collaborative effort between TPV developers (notably from the Exodus, Catznip and Firestorm teams), content creators and Linden Lab.

Note: The following two sections are not intended to be a technical discussion on computer graphics mapping or a detailed analysis of normal & specular maps. It is intended purely as a broad, non-technical of the latter.

Normal Maps in a Nutshell

Normal maps (sometimes referred to as bump maps, although they are more rightly the most common form of bump map) are a means of faking high levels of detail on an otherwise bland surface by means of simulating the bumps and dips that create the detail. Normal maps can be created in several ways.

For example, when working with 3D models, a common method is to make two models of the same object: one a very complex, highly detailed model with a high polygon count, the other a much lower polygon count model with significantly less detail. An overlay process is then used to generate a normal map of the detailed model’s surface features which can be applied to the less complex model, giving it the same appearance as the highly detailed model, but for just a fraction of the polygon count, reducing the amount of intensive processing required to render it.

Using a normal map to enhance the detail on a low-polygon model. The image on the left shows a model of some 4 million triangles. The centre image shows a model with just 500 triangles. The image on the right shows the 500-triangle model with a normal map taken from the model on the left applied to it (credit: Wikipedia)

Another common way to produce a normal map is to generate it directly from a texture file. Most modern 2D and 3D graphics programs provide the means to do this, either directly or through the use of a plug-in (such as the nVidia normal map filter for Photoshop or the GIMP normal map plugin). When combined with diffuse maps, the normal map creates the impression of surface detail far greater than can be achieved through the use of the texture alone.

Normal map from a texture: left – the original texture (diffuse map) and its normal map shown as a split view; right – the material resultant from applying both maps to surfaces inside a game (credit: Valve Corporation)

Specular Maps in a Nutshell

In the real world, every highlight we see in an object is actually the reflection of a light source. Surfaces and surface details reflect light differently to one another, depending on a range of factors (material, lighting source point(s), etc.). Specular maps provide a means of simulating this by allowing individual pixels in an object to have different levels of brightness applied to them, giving the illusion of different levels of light being reflected by different points on the object.

When life gives you lemons: a mesh lemon with (l) a normal map applied, and (r) a normal and a specular map together. Note how light is apparently being reflected across the surface of the latter (credit: Mind Test Studios)

Like normal maps, specular maps can be produced in a number of ways, both within 3D graphics modelling programs and in tools like PhotoShop. As shown above, they can be combined with normal maps and textures to add detail and realism to 3D models and flat surfaces.

Second Life itself already includes a very dynamic example of how materials can be combined to create in-world effects in the form of Linden Water. This is created using an animated normal map to create the wave-like effect for the water, while an animated specular map adds the highlights and reflections. The result is a very realistic simulation of moving water able to catch and reflect sunlight.

Some key points about materials processing:

  • Effects will currently only be visible when using the Materials Processing beta viewer
  • In order to be visible in your world view, whether you are creating objects using materials processing OR whether you simply want to see them in-world, you must have the Advanced Lighting Model (previously “Lighting and Shadows” and often referred to as “deferred rendering”) option in Preferences > Graphics enabled
    • Note that this does not mean you also have to enable shadows themselves – you can leave the drop-down set to None and still see materials in use in-world, thus minimising any impact on your frame rates
    • The Lab has done a lot of work on the rendering pipeline to improve performance; as such, if you’ve not run with the Advanced Lighting Model / deferred rendering enabled on your computer due to previous performance issues you might find you can now enable Advanced Lighting Model in your viewer without experiencing a dramatic loss of frame rates
  • When creating objects which use materials processing, note that they will automatically move to the “mesh” accounting system for land impact, which can affect  the impact value assigned objects and models
  • Materials capabilities do not work when under Linden water.

Continue reading “Materials processing reaches beta – overview and more”

SL projects update 22 (2): SSB/A issues, materials, server issues

Server Deployments – week 22

The server channel deployments were delayed 24 hours this week due to Monday May 27th being Memorial Day in the USA.  This being the case:

  • On Wednesday 29th May, the Main channel received the server maintenance project previously on Magnum. This includes bug fixes, comprising two for crash modes and one for BUG-2424 (Overriding “Sitting on Ground” animation while sitting on the ground makes “stand up” button disappear). This deployment also included the LSL support to create and parse JSON-formatted strings, which also included the bug fixes for this capability deployed to Magnum in week 21 (see my SL projects update report from week 21). Release notes
  • On Thursday 30th May, the three Release Candidate (RC) channels received the interest list improvement project deployed to LeTigre in week 21. The core change in this update should reduce scene loading time when entering a new region (again, please refer to my week 21 report for background information). Release notes (BlueSteel, but applicable to all three RCs).

Server-side Baking / Appearance

As noted in these pages, the Lab formally announced the forthcoming arrival of SSB/A on May 29th. This has prompted questions of “when?” Again, as I’ve previously reported, the Lab is proceeding cautiously towards a server-side deployment, even though they are encouraging people to swap to a version of their preferred viewer which is SSB/A-enabled sooner rather than later.

Currently, the two regions for TPV testing have been enabled with the new service and TPVs are putting the new capability through its places – and this has already revealed a reason for the Lab’s understandable reluctance to give out firm dates, as a potentially major issue has been identified.

SUN-74, raised on May 29th, shows that if you are wearing a MOD skin, hairbase or eyes and you enter an SSB/A-enabled region using a non-SSB/A enabled viewer, an alert will appear on your screen which, on clearing, is followed by an innocuous-looking prompt.

The alert and prompt which are displayed when using a non-SSB/A enabled viewer when entering an SSB/A-enabled region
The alert and prompt which are displayed when using a non-SSB/A enabled viewer when entering an SSB/A-enabled region (image courtesy of Whirly Fizzle)

Clicking YES in reply to the prompt can result in the currently worn skin / eyes / hairbase to become irreparably corrupted, with a skin turning  a mixture of black / invisible and eyes turning white. Rebaking will not fix the issue. Relogging to an SSB/A-enabled viewer seems to result in the avatar rendering as a cloud, and / or ending up with a default skin and ruthed. Replacing the affected items (skin and/or eyes and/or hairbase, depending on which has / have been corrupted) with others from you inventory will fix the issue, but re-wearing the corrupted item(s) results in the avatar once more appearing corrupted (and again ruthed, if running an SSB/A-enabled viewer).

Whirly Fizzle demonstrates the result of the SUN-74 issue
Whirly Fizzle demonstrates one aspect of the SUN-74 issue – on a non-SSB/A viewer, her MOD skin has turned black / invisible and her MOD eyes have turned white as a result of entering an SSB/A-enabled region and responding with YES to the given prompt.

Continue reading “SL projects update 22 (2): SSB/A issues, materials, server issues”

SL projects update week 20 (2): materials beta, SSB/A

Server Deployments – Week 20

As always, please refer to the release forum  thread on the weekly deployments for the latest updates and discussions.

Second Life Server (Main channel)

On Tuesday May 14th, the Main channel received the Experience Keys project. This means the project is now available across the grid, although there are no visible changes to be seen at this point. Release notes.

Release Candidate (RC) Channels – JSON Capabilities

On Wednesday May 15th, all three RC channels received a new server maintenance project (release notes (Bluesteel)).  The project is designed to fix two crash modes and two bugs, and introduce new LSL support creating and parsing of JSON-formatted strings – see part 1 of this week 20 report.

Commenting on the JSON capabilities at the Server Beta meeting on Thursday May 16th, Maestro Linden said, “There are some issues with this week’s Json functions… the keys in key-value pairs are not quoted, but should be and right now you’ll run into problems when you add stings which contain escaped quotes.”

In addition, a further confirmed bug has been found in the code on the three RC channels (BUG-2601), described by Lucia Nightfire as:

Seems that the release on the RC channels has brought about an annoying bug that affects control event triggering in attachment’s child prims after changing regions.

There are two different effects depending how you enter a version 13.05.14.275813 RC region.

After going into an RC region while using any controls, those controls will lock under execution and remain locked until you reset the script or the control perms or detach the object.

After going into an RC region without using controls like with a teleport, the control event will not trigger when attempting to use any controls until you re-request/re-grant control perms or go back to a main channel region.

Should this problem be encountered, returning to any Main channel region should restore the broken functionality.

Because of both of these issues, it is believed the code currently on the three RC channels will remain on them for a further week while fixes are developed and implemented.

SL Viewer Updates

Beta Viewer

The current SL beta viewer code, which contains the FMOD Ex updates is expected to be merged with viewer release shortly, prior to going to testing. Depending on the results of the testing, an updated SL release viewer should appear early in week 21.

Viewer Release Process

Because the version upgrading changes will move to the viewer release channel with the move of the current beta viewer, the viewer beta repository will stop being used, and viewer releases will start switching over to the new release process. As a part of this, two new wiki pages will be appearing in the next future (probably in week 22).

The first of these will be a revamped Alternate Viewers page on the wiki, which will list all the available LL project viewers and beta viewers and release candidates which are available, as well as the current viewer release, all of which will have download links and links to their respective release notes.

The second wiki page will have the same information together with pointers to which repository used to build the viewer, which changesets were used to build a viewer, and whether or not the repository is public.

The plan remains that under the new release process, all beta and release candidates will have public repositories, while project viewers many not initially have public repositories, but will have as they reach the later stages of their development.

Cocoa Project

The Cocoa project for Mac versions of the viewer has been largely stalled as a result of redeploying TPV assistance from that project to the materials project. It is anticipated that once materials moves to a beta viewer status, the emphasis will shift back on to the Cocoa viewer work

Materials Processing

Providing all goes according to plan, the Materials Processing code should move to a beta  status within its own repository and hopefully also make an appearance in week 21. Commenting on this, Oz Linden said at the TPV Developer meeting o Friday May 17th, “It’s still not 100% there; there’s still a few known bugs, but we think we’ve got all the serious ones and so we’re going to put it out where people can play with it.”

Once the materials viewer does reach beta, the anticipation is that it will remain there for “a little while” and the it will not be a one-spin beta release prior to moving on.

Detail on the hint of a Katana created entirely using the new materials capability. The sword is made by June Dion and has an LI of 7
Materials used to create details on the hilt of a Katana created by June Dion – soon to be visible in the Materials Processing beta viewer

Continue reading “SL projects update week 20 (2): materials beta, SSB/A”

SL projects update week 20 (1): server, JSON, viewer release process

Server Deployments – Week 20

As always, please refer to the release forum  thread on the weekly deployments for the latest updates and discussions.

Second Life Server (Main channel)

On Tuesday May 14th, the Main channel received the Experience Keys project which is widely regarded (and referred to by LL staff) as the “experience permissions”. This means the project is now available across the grid, although there are no visible changes to be seen at this point. Release notes.

Speculation is still running high on exactly what the new project is – and whether it is “just” the experience permissions to partner the existing advanced creation tools ot something more – as well as whether the capabilities will be available for use across the grid (i.e. on Mainland as well as private estates). Details will be forthcoming from the Lab in time; for the moment, they’re holding their cards close to their collective chest.

Release Candidate (RC) Channels – JSON Capabilities

On Wednesday May 15th, all three RC channels should receive a new server maintenance project (release notes (Bluesteel)).  The project is designed to fix two crash modes and two bugs, namely:

  • A fix for ‘Overriding “Sitting on Ground” animation while sitting on the ground makes “stand up” button disappear’ (BUG-2424)
  • A fix for ‘ApplyImpulse now works only in the root prim’ (SVC-8227)

In addition, this project introduces new LSL support creating and parsing for JSON-formatted strings. The new LSL functions comprise: 

  • list llJson2List(string json) – converts the top level of the json string to a list.
  • string llList2Json(string type, list values) 
    • Type is JSON_ARRAY or JSON_OBJECT
    • Converts either a strided list of key:value pairs to a JSON_OBJECT or a list of values to a JSON_ARRAY
  • string llJsonGetValue(string json, list specifiers) – gets the value indicated by spcifiers from the json string.
  • string llJsonSetValue(string json, list specifiers, string value) – returns a new json string that is the json given with the value indicated by specifiers set to value
  • string llJsonValueType(string json, list specifiers) – returns the type constant for the value in json indicated by specifiers.

At the time of writing, the RC deployments still had a question mark over them as testing was, according to Simon Linden when speaking at the Simulator User Group, “down to the wire, although it all looks good.”

Further information on the new LSL support for JSON can be found on the LSL JSON wiki page.

The project is being lead by Kelly Linden who described the reason for implementing them as being because he’s “keen on improving the ability to interface LSL with the larger web. The previous maintenance version expanded the content-type support of http-in and http-out which ties in with this.”

It is likely that further LSL support for JSON will be added in the future.

SL Viewer

Beta Viewer and the Viewer Release Process

A further beta viewer release was made on May 11th (3.5.2.275565) – see the release notes for details – in preparation for the deployment of the new viewer release process. The beta 3.5.2 viewer incorporates changes required by the new service.

While at the Open-source Dev meeting on Monday May 13th, I asked Oz Linden on the status of the new process. “Internally, we’re essentially already using it in that all projects are based on viewer-release,” he replied. “We’re starting system test of the server-side infrastructure changes this week… once those are tested, it’s just a matter of deploying them and we can fully switch over to the new process. ‘just deploying’ on our scale is always an understatement, incidentally.”

This does not mean the release process is about to be deployed, however. The server-side infrastructure testing is liable to be on-going for a while. One aspect which the Lab will be checking carefully is the changes made to the log-in process.

When a user logs-in to Second Life using an official viewer, a check is carried out to see if a mandatory upgrade is required. To prepare for the new release process, is check has been updated. “that’s not something one deploys without having taken every step one can think of to quadruple-check just a bit,” Oz explained.

How long the tests will take to complete is unclear, but it is unlikely the new release process will be deployed in week 20.

Materials Processing

May 8th saw the The materials project viewer updated with the release of version 3.5.2.275470, with the release notes available here.

Detail on the hint of a Katana created entirely using the new materials capability. The sword is made by June Dion and has an LI of 7
Detail on the hilt of a Katana created entirely using the new materials capability. The sword is made by June Dion and has an LI of 7

Work is continuing with the viewer, focusing on the UI issues which need to be resolved in order for the code to progress towards mainstream  release.

Continue reading “SL projects update week 20 (1): server, JSON, viewer release process”

Catch-up with Designing Worlds and the SSA / Materials special

If you missed the live premiere of the Designing Worlds special I blogged about as being shown on Monday May 13th at 14:00, you can now play catch-up here.

The show is also available on the Treet TV Designing Worlds channel.

Materials Processing and SSA – a Designing Worlds special

designing-worldsOn Monday May 13th at 14:00 SLT, Designing Worlds will be premiering a special show in their current series which explores some of the new Second Life shiny which is coming out of Linden Lab at the moment.

The show, recorded earlier in the month, features Brooke, Oz, Troy and Nyx Linden as they discuss the upcoming deployments of Server Side Baking/Appearance and Materials Processing in SL.

Nyx, Troy, Oz and Brooke Linden during the recording of the Designing Worlds show (image courtesy of Wildstar Beaumont)
From left-to-right): Nyx, Troy, Oz and Brooke Linden during the recording of the Designing Worlds show (image courtesy of Wildstar Beaumont / Designing Worlds)

As regular readers here will know, Nyx Linden has very much been the public face / lead of Server-side Baking, and he’s joined in the show by Troy Linden to explain what is going on with the project, and why people need to understand the importance of ensuring they are running a viewer which supports SSB/A.

Following this, Oz and Brooke Linden will be explaining about Materials Processing and the use of normal and specular maps in Second Life. They’ll also be demonstrating some of the capabilities of Materials Processing, using samples of various items on display at Hippotopolis. Just remember that if you want to go and see them for yourself, you’ll need to download, install and run the Materials Processing project viewer until such time as the necessary code is made more widely available in the main SL viewer and TPVs.

With and without: how materials will look when running a viewer in differed mode (top) and in non-deiffered mode (bottom). The differences are clear, but the in-world experience in non-differred mode is not in any way "broken"
How materials processing can alter the appearance of objects: the top image shows a series of objects which use material properties (normal and specular maps) as seen through a viewer which can render them. The lower image shows the same objects in a viewer which is not using the materials processing capabilities

All of the Lindens attending the show took time to answer questions put to them by the Designing Worlds team on behalf of users.

Saffia Widdershins, who co-hosts the show with Elrik Merlin, said to me in discussing the premiere, “We were really pleased to have been able to do this show and discuss the issues with people from the Lab. Changes like this can worry a lot of users, and it was good to have the issues and benefits clearly explained.”

Watch the Show Live

If you would like to watch the show, you can do so in one of two ways:

If you missed either of these, catch up with the broadcast via my blog, or via the  Designing World’s channel on Treet TV.

Related Links