Make vograss objects set their face vert/index counts to 0 when setting
the number of blades to 0 to disable rendering so we don't allocate space
and then skip setting it up with actual index data in getGeometry.
Given that mShaderObjects only ever expects one copy of a given shader object (leading to lots of "shaderV" and "shaderF"), it made having utility shaders a bit more difficult to incorporate.
This change makes sure the two are separated. Using this over a multimap largely for readibility.
Also, actually, you know, use this functionality.
--HG--
branch : OPEN-340
Further tweaking of directional shadow sampling to balance between peter-panning and shadow acne.
Move stars to just this side of the sky some to reduce parallax.
Remove decodeNormF and uses of decode_normal in favor of unified use of getNorm
(try to help the Intel HD x000 compiler learn to link correctly).
Fix class 1 and 2 transport/gamma funcs and made usage consistent across all shaders.
Fix class1\environment\waterV reverting to old d1/d2 names for wave directions.
Fix binding of current/next sun/moon textures.
Remove redundant code in GLSLShader determination of tex uniform bindings.
Unhack mix calls in sun/moon shaders to reverse sense of blending (was working around reversed bindings).
Add plumbing facilities to allow current and next moon textures to be passed to moon shader.
Modify moon shader to blend between current and next moon textures by blend factor.
and unify on using the version that works on OSX.
Add more logging to shader loading about fallbacks and loading succcess.
Add frag shaders for sharing sRGB and normal encode/decode via GL shader linkage.
You can't legitimately perform an ordered comparison between a pointer and an
int, even 0. Fix a number of 'if (ptr > 0)' to plain 'if (ptr)'.
Fix LLEditWearableDictionary::WearableEntry constructor to avoid varargs
mechanism. It used to accept three different counts, followed by three
different lists of enums, fetched in each case as 'int' -- dubious in itself.
The constructor body performed three different loops to populate those enums
into three different member vectors.
Instead, make the constructor accept three vectors and initialize the member
vectors from the passed vectors. Now that C++ has inline vector
initialization, change existing constructor calls to pass temporary vectors
initialized with what used to be the varargs enum values.