Second Life Windlight environment enhancements

As I recently reported, Linden Lab are starting on a set of Second Life environmental enhancements, including the ability to define the environment (sky, sun, moon, clouds) at the  parcel level. These changes to the environment controls are quite extensive, and wrap a number of ideas together into a single project.

On Tuesday, June 13th, Rider Linden, who is leading the work made a preliminary document on what is being considered available via the Simulator User Group meeting. In it, several enhancements to the windlight environment capabilities are outlined, and are summarised below – please read Rider’s document for the full details.

Environment Inventory Asset

A new asset type that can be stored, managed and traded through the Second Life inventory and the Marketplace. This asset type will:

  • Comprise a Sky asset for adjusting atmospheric effects, clouds, the sun,moon and stars; and a Water asset for controlling the environment under the surface of Linden water and the appearance of the surface of the water)
  • Allow users apply any environment settings, viewer-side (they will not affect how others see things) directly from inventory. When dismissed by the user, the environment reverts to the current parcel or regional environment settings.

Parcel-based Environment Settings

This will allow parcel owners to apply their own custom day cycles and environment settings independently of the region settings, and which will be applied to all viewers entering the parcel. Estate owners / managers will be able to explicitly disallow parcel owners in their estates from setting a custom environment.

Costa Blanco, Costa Blanco; Inara Pey, May 2017, on Flickr The new environmental inventory asset will soon make it possible for users to set the sky, lighting, etc., they see in their viewer directly from inventory, while parcel environment settings will allow parcel holder to set the environment in their parcel (subject to region override), which will be seen by all visitors to the parcel

Experience Based Environment Settings

Two new two script functions will allow LSL scripts to change the environment for an individual agent (avatar), providing the agent has accepted the associated experience. Setting the environment for an agent through LSL will override any region or parcel environmental settings and freeze the day cycle for the agent. Leaving a region will dismiss any changes made by either of these functions.

The two new functions are currently outlined as:

llSetAgentEnvironment(key agent_id, string environment, float transition)


  • agent_id: The participating agent’s UUID
  • environment: The name of an environment setting in the inventory of the prim. This item may be either a sky or water setting
  • transition: The number of seconds over which to gradually apply the new settings.

Sets the agent’s environment to match the environmental settings identified by environment. Passing a null key in environment_id will restore the environment to the parcel or region settings. A script may set water and sky settings independently.

llAdjustAgentEnvironment(key agent_id, list env_params, float transition_time)


  • agent_id: The participating agent’s UUID
  • env_params: A list of environment parameters to be applied to the agent. Any parameters omitted from the list are unchanged
  • transition: The number of seconds over which to gradually apply the new settings.

Sets specific environment settings for this agent. Environmental parameters not specified in the params list are taken from the current environment and frozen. Passing an empty list will restore the environment to the parcel or region settings.

Extended Day Cycle and Extended Environmental Settings Parameters

The day cycle for a region or parcel may be set between 4 and 168 hours (7 days), and may contain multiple sky and water settings spaced over the course of a day. The environment will smoothly interpolate from one setting to the next over the course of a day.

Further, all adjustable environment fields may be recorded in a sky or water settings object, and  in addition the following fields may also be changed:

  • cloud_noise – the UUID for texture describing cloud noise pattern
  • cloud_texture – UUID for a texture describing the base cloud texture
  • moon_texture – UUID of a texture used to render the moon
  • sun_texture – UUID of a texture used to render the sun
  • wave_texture – UUID of the normal map used to render waves.


Again, please note, all of the above are preliminary ideas for the work, and shouldn’t be necessarily taken as being set in stone. As Rider Linden said in the meeting:

[Here’s] what I’m planning scope wise in very broad strokes. I’d love to hear some feed back over the next couple weeks.

This being the case, those with an interest in contributing ideas and suggestions, etc., about the work are initially invited to do so through the forum of the weekly Simulator User Group meetings, which are held every Tuesday, between 12:00 noon and 13:00 SLT, in Denby. Details on the meetings can be found on the Simulator User Group wiki page.