It seems newer compilers have a different interpretation of exactly when to
engage LLSDArray's copy constructor. In particular, this assignment:
some_LLSD_map[key] = LLSDArray(...)(...)...;
used to convert the LLSDArray object directly to LLSD; now it first calls the
custom copy constructor, which embeds the intended array within an outer array
before assigning it into the containing map.
The newer llsd::array() function avoids that problem because what it returns
is already an LLSD object.
Taking inventory of LLSDArray assignments of that form turned up a number of
workarounds like LLSD(LLSDArray(...)). Replacing those with llsd::array() is
both simpler and more readable.
Tip of the hat to Chorazinallen for surfacing this issue!
(cherry picked from commit bb718155bd)
Fix light atten and transmittance calcs breaking ambient color contrib to fog.
Needs to be tested on DRTSIM-415 or better to get legacy viewer settings that match EEP.
Fix ambient light inputs to the renderer.
Fix 3rd sky shader w/ mistaken density mod conversion.
Make ambient clamp apply to all modes.
Tune ALM ambient clamp to match non-ALM.
Modify calc of sunlight to avoid clipping in gamma correct on values outside 0-1 range.
Modify shaders to put back ambient clamp tuned to be close to ambient contrib in low/mid lighting.
Re-fix sun/moon glow factor and make it depend on moon brightness.
Make cloud shaders use sunlight color exclusively for consistency when moon is up or down.
Make a distinct class3/lighting/lightV which boosts to WL levels (* 2.0)
and make lighting without WL atmo enabled use class 2 or below.
Make forward shaders (alpha and materialF with alpha-blend mode on) more consistent with deferred lighting.
Fix conversion of star brightness, density mult, and distance mult to legacy ranges.
Make settings look in both legacyhaze and top-level settings for haze params.
Make moon brightness env setting affect moon diffuse/ambient color combo so it affects in-world lighting.
Adjust how the moon brightness affects the moon disc texture rendering (washes out less).
Don't step on SUNLIGHT_COLOR uniform w/ syncLightState competing set.
Put drawpool alpha render loop lighting setup changes as they were
(this will give back some performance and possibly require reopening 10566).
Fix side-effects of having both sun and moon as potential directional light contributors.
We pass an int to the shader indicating which to prefer instead of making per-pixel decisions
and pass the moonlight color/di independently.
Obsolete llsettingssky fade color which was unused elsewhere and cached for no reason.
Fix bug with setting texture matrix for rigged mesh.
Fix z-fighting between sea and sky in ALM by cheating sky, stars, and moon using gl_FragDepth.
Fix handling of atmospheric haze glow w.r.t independent sun/moon positioning
(we can no longer depend on them being mutex to each other).