Added ability to shader features and shaderGen to create multiple instances of the same feature with the option of calling a static creation function that can take arguments in the form of a struct.
FEATUREMGR now has createFeature to take advantage of this.
The node editor requires this ability as the same node could be used multiple times with different arguments so in its update function we will be calling
```FEATUREMGR->registerFeature(feature_type, (optional default constructor), createFunction);```
then adding it to the feature set with the required arguments to build the shader feature.
```FeatureSet->add(feature_type, index, ParameterStruct);```
Adds the ground work for geometry shaders
Expands shaderData and gfxShader to allow for more shader types
note: when building a GFXShader in source you have to call setShaderStageFile with the shaderStage and the filepath for that stage.
Once we add compute shaders this will become more apparent as compute shaders are a stage of their own and do not require vertex and pixel files whereas other shaders sometimes do.
-Adds reversed depth projection model, dramatically increasing depth buffer effective resolution.
-Adds 32F depth 8U stencil format GFXFormatD32FS8X24 (following DX naming conventions). Note this is a 64-bit format, and likely not suitable for mobile platforms. Revert to GFXFormatD24S8 in renderManager.tscript for mobile & "ancient" platforms.
-Corrects alignment of texture type details array.
cliffsnotes:
$Core::WetnessTexture = "core/rendering/images/wetMap.png"; //for the influence degree map
probes/skylight have a new canDamp boolean, set to off for probes, on for skylight by default.
:levelinfo has a dampness multiplier (0-1)
kicked up numTextures from 8 to 16 for shaderdata and postfx since that hit the 8 texture-in prior limit, and we've already adopted apis that can handle the higher count
Adds missing disconnect/timeout handling callbacks to the clientServer core module
Adds page refresh function to UINavigation to be able to selectively nudge the current page to refresh its contents if needbe
Ensure that probes are masked to be rendered during bake passes so they can contribute during a bake allowing multibakes
Adjusted order of the connect data for the forward shaders to fix a mis-port issue
It was mixing vars up between it and forward. resolved by prefixing the forward vars with "in" as the rest are, as well as pointing the val at the const String ShaderGenVars::lightSpotParams("$inlightSpotParams");
1) we do *not* in fact want to early out in the presence of MFT_ImposterVert. it mangles the position-send.
2) dx sucessfuly handles the if ( !fd.features[MFT_NormalMap] ) case, so use the same for gl