summaryrefslogtreecommitdiff
path: root/indra/newview/llviewershadermgr.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llviewershadermgr.h')
-rw-r--r--indra/newview/llviewershadermgr.h607
1 files changed, 303 insertions, 304 deletions
diff --git a/indra/newview/llviewershadermgr.h b/indra/newview/llviewershadermgr.h
index 62ed963749..7f989f281e 100644
--- a/indra/newview/llviewershadermgr.h
+++ b/indra/newview/llviewershadermgr.h
@@ -24,307 +24,306 @@
* $/LicenseInfo$
*/
- #ifndef LL_VIEWER_SHADER_MGR_H
- #define LL_VIEWER_SHADER_MGR_H
-
- #include "llshadermgr.h"
- #include "llmaterial.h"
-
- #define LL_DEFERRED_MULTI_LIGHT_COUNT 16
-
- class LLViewerShaderMgr: public LLShaderMgr
- {
- public:
- static bool sInitialized;
- static bool sSkipReload;
-
- LLViewerShaderMgr();
- /* virtual */ ~LLViewerShaderMgr();
-
- // Add shaders to mShaderList for later uniform propagation
- // Will assert on redundant shader entries in debug builds
- void finalizeShaderList();
-
- // singleton pattern implementation
- static LLViewerShaderMgr * instance();
- static void releaseInstance();
-
- void initAttribsAndUniforms(void);
- void setShaders();
- void unloadShaders();
- S32 getShaderLevel(S32 type);
-
- // loadBasicShaders in case of a failure returns
- // name of a file error happened at, otherwise
- // returns an empty string
- std::string loadBasicShaders();
- bool loadShadersEffects();
- bool loadShadersDeferred();
- bool loadShadersObject();
- bool loadShadersAvatar();
- bool loadShadersWater();
- bool loadShadersInterface();
-
- std::vector<S32> mShaderLevel;
- S32 mMaxAvatarShaderLevel;
-
- enum EShaderClass
- {
- SHADER_LIGHTING,
- SHADER_OBJECT,
- SHADER_AVATAR,
- SHADER_ENVIRONMENT,
- SHADER_INTERFACE,
- SHADER_EFFECT,
- SHADER_WINDLIGHT,
- SHADER_WATER,
- SHADER_DEFERRED,
- SHADER_COUNT
- };
-
- // simple model of forward iterator
- // http://www.sgi.com/tech/stl/ForwardIterator.html
- class shader_iter
- {
- private:
- friend bool operator == (shader_iter const & a, shader_iter const & b);
- friend bool operator != (shader_iter const & a, shader_iter const & b);
-
- typedef std::vector<LLGLSLShader *>::const_iterator base_iter_t;
- public:
- shader_iter()
- {
- }
-
- shader_iter(base_iter_t iter) : mIter(iter)
- {
- }
-
- LLGLSLShader & operator * () const
- {
- return **mIter;
- }
-
- LLGLSLShader * operator -> () const
- {
- return *mIter;
- }
-
- shader_iter & operator++ ()
- {
- ++mIter;
- return *this;
- }
-
- shader_iter operator++ (int)
- {
- return mIter++;
- }
-
- private:
- base_iter_t mIter;
- };
-
- shader_iter beginShaders() const;
- shader_iter endShaders() const;
-
- /* virtual */ std::string getShaderDirPrefix(void);
-
- /* virtual */ void updateShaderUniforms(LLGLSLShader * shader);
-
- private:
- // the list of shaders we need to propagate parameters to.
- std::vector<LLGLSLShader *> mShaderList;
-
- }; //LLViewerShaderMgr
-
- inline bool operator == (LLViewerShaderMgr::shader_iter const & a, LLViewerShaderMgr::shader_iter const & b)
- {
- return a.mIter == b.mIter;
- }
-
- inline bool operator != (LLViewerShaderMgr::shader_iter const & a, LLViewerShaderMgr::shader_iter const & b)
- {
- return a.mIter != b.mIter;
- }
-
- extern LLVector4 gShinyOrigin;
-
- //utility shaders
- extern LLGLSLShader gOcclusionProgram;
- extern LLGLSLShader gOcclusionCubeProgram;
- extern LLGLSLShader gGlowCombineProgram;
- extern LLGLSLShader gReflectionMipProgram;
- extern LLGLSLShader gGaussianProgram;
- extern LLGLSLShader gRadianceGenProgram;
- extern LLGLSLShader gHeroRadianceGenProgram;
- extern LLGLSLShader gIrradianceGenProgram;
- extern LLGLSLShader gGlowCombineFXAAProgram;
- extern LLGLSLShader gDebugProgram;
- enum NormalDebugShaderVariant : S32
- {
- NORMAL_DEBUG_SHADER_DEFAULT,
- NORMAL_DEBUG_SHADER_WITH_TANGENTS,
- NORMAL_DEBUG_SHADER_COUNT
- };
- extern LLGLSLShader gNormalDebugProgram[NORMAL_DEBUG_SHADER_COUNT];
- extern LLGLSLShader gSkinnedNormalDebugProgram[NORMAL_DEBUG_SHADER_COUNT];
- extern LLGLSLShader gClipProgram;
- extern LLGLSLShader gBenchmarkProgram;
- extern LLGLSLShader gReflectionProbeDisplayProgram;
- extern LLGLSLShader gCopyProgram;
- extern LLGLSLShader gCopyDepthProgram;
- extern LLGLSLShader gPBRTerrainBakeProgram;
- extern LLGLSLShader gDrawColorProgram;
-
- //output tex0[tc0] - tex1[tc1]
- extern LLGLSLShader gTwoTextureCompareProgram;
- //discard some fragments based on user-set color tolerance
- extern LLGLSLShader gOneTextureFilterProgram;
-
-
- //object shaders
- extern LLGLSLShader gObjectPreviewProgram;
- extern LLGLSLShader gPhysicsPreviewProgram;
- extern LLGLSLShader gObjectBumpProgram;
- extern LLGLSLShader gSkinnedObjectBumpProgram;
- extern LLGLSLShader gObjectAlphaMaskNoColorProgram;
-
- //environment shaders
- extern LLGLSLShader gWaterProgram;
- extern LLGLSLShader gUnderWaterProgram;
- extern LLGLSLShader gGlowProgram;
- extern LLGLSLShader gGlowExtractProgram;
-
- //interface shaders
- extern LLGLSLShader gHighlightProgram;
- extern LLGLSLShader gHighlightNormalProgram;
- extern LLGLSLShader gHighlightSpecularProgram;
-
- extern LLGLSLShader gDeferredHighlightProgram;
-
- extern LLGLSLShader gPathfindingProgram;
- extern LLGLSLShader gPathfindingNoNormalsProgram;
-
- // avatar shader handles
- extern LLGLSLShader gAvatarProgram;
- extern LLGLSLShader gAvatarEyeballProgram;
- extern LLGLSLShader gImpostorProgram;
-
- // Post Process Shaders
- extern LLGLSLShader gPostScreenSpaceReflectionProgram;
-
- // Deferred rendering shaders
- extern LLGLSLShader gDeferredImpostorProgram;
- extern LLGLSLShader gDeferredDiffuseProgram;
- extern LLGLSLShader gDeferredDiffuseAlphaMaskProgram;
- extern LLGLSLShader gDeferredNonIndexedDiffuseAlphaMaskProgram;
- extern LLGLSLShader gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram;
- extern LLGLSLShader gDeferredNonIndexedDiffuseProgram;
- extern LLGLSLShader gDeferredBumpProgram;
- extern LLGLSLShader gDeferredTerrainProgram;
- extern LLGLSLShader gDeferredTreeProgram;
- extern LLGLSLShader gDeferredTreeShadowProgram;
- extern LLGLSLShader gDeferredLightProgram;
- extern LLGLSLShader gDeferredMultiLightProgram[LL_DEFERRED_MULTI_LIGHT_COUNT];
- extern LLGLSLShader gDeferredSpotLightProgram;
- extern LLGLSLShader gDeferredMultiSpotLightProgram;
- extern LLGLSLShader gDeferredSunProgram;
- extern LLGLSLShader gDeferredSunProbeProgram;
- extern LLGLSLShader gHazeProgram;
- extern LLGLSLShader gHazeWaterProgram;
- extern LLGLSLShader gDeferredBlurLightProgram;
- extern LLGLSLShader gDeferredAvatarProgram;
- extern LLGLSLShader gDeferredSoftenProgram;
- extern LLGLSLShader gDeferredShadowProgram;
- extern LLGLSLShader gDeferredShadowCubeProgram;
- extern LLGLSLShader gDeferredShadowAlphaMaskProgram;
- extern LLGLSLShader gDeferredShadowGLTFAlphaMaskProgram;
- extern LLGLSLShader gDeferredShadowGLTFAlphaBlendProgram;
- extern LLGLSLShader gDeferredShadowFullbrightAlphaMaskProgram;
- extern LLGLSLShader gDeferredPostProgram;
- extern LLGLSLShader gDeferredCoFProgram;
- extern LLGLSLShader gDeferredDoFCombineProgram;
- extern LLGLSLShader gFXAAProgram[4];
- extern LLGLSLShader gSMAAEdgeDetectProgram[4];
- extern LLGLSLShader gSMAABlendWeightsProgram[4];
- extern LLGLSLShader gSMAANeighborhoodBlendProgram[4];
- extern LLGLSLShader gCASProgram;
- extern LLGLSLShader gDeferredPostNoDoFProgram;
- extern LLGLSLShader gDeferredPostNoDoFNoiseProgram;
- extern LLGLSLShader gDeferredPostGammaCorrectProgram;
- extern LLGLSLShader gLegacyPostGammaCorrectProgram;
- extern LLGLSLShader gHDRGammaCorrectProgram;
- extern LLGLSLShader gDeferredPostTonemapProgram;
- extern LLGLSLShader gNoPostTonemapProgram;
- extern LLGLSLShader gExposureProgram;
- extern LLGLSLShader gExposureProgramNoFade;
- extern LLGLSLShader gLuminanceProgram;
- extern LLGLSLShader gDeferredAvatarShadowProgram;
- extern LLGLSLShader gDeferredAvatarAlphaShadowProgram;
- extern LLGLSLShader gDeferredAvatarAlphaMaskShadowProgram;
- extern LLGLSLShader gDeferredAlphaProgram;
- extern LLGLSLShader gHUDAlphaProgram;
- extern LLGLSLShader gDeferredAlphaImpostorProgram;
- extern LLGLSLShader gDeferredFullbrightProgram;
- extern LLGLSLShader gHUDFullbrightProgram;
- extern LLGLSLShader gDeferredFullbrightAlphaMaskProgram;
- extern LLGLSLShader gHUDFullbrightAlphaMaskProgram;
- extern LLGLSLShader gDeferredFullbrightAlphaMaskAlphaProgram;
- extern LLGLSLShader gHUDFullbrightAlphaMaskAlphaProgram;
- extern LLGLSLShader gDeferredEmissiveProgram;
- extern LLGLSLShader gDeferredAvatarEyesProgram;
- extern LLGLSLShader gDeferredAvatarAlphaProgram;
- extern LLGLSLShader gEnvironmentMapProgram;
- extern LLGLSLShader gDeferredWLSkyProgram;
- extern LLGLSLShader gDeferredWLCloudProgram;
- extern LLGLSLShader gDeferredWLSunProgram;
- extern LLGLSLShader gDeferredWLMoonProgram;
- extern LLGLSLShader gDeferredStarProgram;
- extern LLGLSLShader gDeferredFullbrightShinyProgram;
- extern LLGLSLShader gHUDFullbrightShinyProgram;
- extern LLGLSLShader gNormalMapGenProgram;
- extern LLGLSLShader gDeferredGenBrdfLutProgram;
- extern LLGLSLShader gDeferredBufferVisualProgram;
-
- // Deferred materials shaders
- extern LLGLSLShader gDeferredMaterialProgram[LLMaterial::SHADER_COUNT*2];
-
- extern LLGLSLShader gHUDPBROpaqueProgram;
- extern LLGLSLShader gPBRGlowProgram;
- extern LLGLSLShader gDeferredPBROpaqueProgram;
- extern LLGLSLShader gDeferredPBRAlphaProgram;
- extern LLGLSLShader gHUDPBRAlphaProgram;
-
- // GLTF shaders
- extern LLGLSLShader gGLTFPBRMetallicRoughnessProgram;
-
- extern LLGLSLShader gBloomExtractProgram;
- extern LLGLSLShader gBloomBlurProgram;
- extern LLGLSLShader gBloomCombineProgram;
-
-
- // Encodes detail level for dropping textures, in accordance with the GLTF spec where possible
- // 0 is highest detail, -1 drops emissive, etc
- // Dropping metallic roughness is off-spec - Reserve for potato machines as needed
- // https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#additional-textures
- enum TerrainPBRDetail : S32
- {
- TERRAIN_PBR_DETAIL_MAX = 0,
- TERRAIN_PBR_DETAIL_EMISSIVE = 0,
- TERRAIN_PBR_DETAIL_OCCLUSION = -1,
- TERRAIN_PBR_DETAIL_NORMAL = -2,
- TERRAIN_PBR_DETAIL_METALLIC_ROUGHNESS = -3,
- TERRAIN_PBR_DETAIL_BASE_COLOR = -4,
- TERRAIN_PBR_DETAIL_MIN = -4,
- };
- enum TerrainPaintType : U32
- {
- // Use LLVLComposition::mDatap (heightmap) generated by generateHeights, plus noise from TERRAIN_ALPHARAMP
- TERRAIN_PAINT_TYPE_HEIGHTMAP_WITH_NOISE = 0,
- // Use paint map if PBR terrain, otherwise fall back to TERRAIN_PAINT_TYPE_HEIGHTMAP_WITH_NOISE
- TERRAIN_PAINT_TYPE_PBR_PAINTMAP = 1,
- TERRAIN_PAINT_TYPE_COUNT = 2,
- };
- extern LLGLSLShader gDeferredPBRTerrainProgram[TERRAIN_PAINT_TYPE_COUNT];
- #endif
+#ifndef LL_VIEWER_SHADER_MGR_H
+#define LL_VIEWER_SHADER_MGR_H
+
+#include "llshadermgr.h"
+#include "llmaterial.h"
+
+#define LL_DEFERRED_MULTI_LIGHT_COUNT 16
+
+class LLViewerShaderMgr: public LLShaderMgr
+{
+public:
+ static bool sInitialized;
+ static bool sSkipReload;
+
+ LLViewerShaderMgr();
+ /* virtual */ ~LLViewerShaderMgr();
+
+ // Add shaders to mShaderList for later uniform propagation
+ // Will assert on redundant shader entries in debug builds
+ void finalizeShaderList();
+
+ // singleton pattern implementation
+ static LLViewerShaderMgr * instance();
+ static void releaseInstance();
+
+ void initAttribsAndUniforms(void);
+ void setShaders();
+ void unloadShaders();
+ S32 getShaderLevel(S32 type);
+
+ // loadBasicShaders in case of a failure returns
+ // name of a file error happened at, otherwise
+ // returns an empty string
+ std::string loadBasicShaders();
+ bool loadShadersEffects();
+ bool loadShadersDeferred();
+ bool loadShadersObject();
+ bool loadShadersAvatar();
+ bool loadShadersWater();
+ bool loadShadersInterface();
+
+ std::vector<S32> mShaderLevel;
+ S32 mMaxAvatarShaderLevel;
+
+ enum EShaderClass
+ {
+ SHADER_LIGHTING,
+ SHADER_OBJECT,
+ SHADER_AVATAR,
+ SHADER_ENVIRONMENT,
+ SHADER_INTERFACE,
+ SHADER_EFFECT,
+ SHADER_WINDLIGHT,
+ SHADER_WATER,
+ SHADER_DEFERRED,
+ SHADER_COUNT
+ };
+
+ // simple model of forward iterator
+ // http://www.sgi.com/tech/stl/ForwardIterator.html
+ class shader_iter
+ {
+ private:
+ friend bool operator == (shader_iter const & a, shader_iter const & b);
+ friend bool operator != (shader_iter const & a, shader_iter const & b);
+
+ typedef std::vector<LLGLSLShader *>::const_iterator base_iter_t;
+ public:
+ shader_iter()
+ {
+ }
+
+ shader_iter(base_iter_t iter) : mIter(iter)
+ {
+ }
+
+ LLGLSLShader & operator * () const
+ {
+ return **mIter;
+ }
+
+ LLGLSLShader * operator -> () const
+ {
+ return *mIter;
+ }
+
+ shader_iter & operator++ ()
+ {
+ ++mIter;
+ return *this;
+ }
+
+ shader_iter operator++ (int)
+ {
+ return mIter++;
+ }
+
+ private:
+ base_iter_t mIter;
+ };
+
+ shader_iter beginShaders() const;
+ shader_iter endShaders() const;
+
+ /* virtual */ std::string getShaderDirPrefix(void);
+
+ /* virtual */ void updateShaderUniforms(LLGLSLShader * shader);
+
+private:
+ // the list of shaders we need to propagate parameters to.
+ std::vector<LLGLSLShader *> mShaderList;
+
+}; //LLViewerShaderMgr
+
+inline bool operator == (LLViewerShaderMgr::shader_iter const & a, LLViewerShaderMgr::shader_iter const & b)
+{
+ return a.mIter == b.mIter;
+}
+
+inline bool operator != (LLViewerShaderMgr::shader_iter const & a, LLViewerShaderMgr::shader_iter const & b)
+{
+ return a.mIter != b.mIter;
+}
+
+extern LLVector4 gShinyOrigin;
+
+//utility shaders
+extern LLGLSLShader gOcclusionProgram;
+extern LLGLSLShader gOcclusionCubeProgram;
+extern LLGLSLShader gGlowCombineProgram;
+extern LLGLSLShader gReflectionMipProgram;
+extern LLGLSLShader gGaussianProgram;
+extern LLGLSLShader gRadianceGenProgram;
+extern LLGLSLShader gHeroRadianceGenProgram;
+extern LLGLSLShader gIrradianceGenProgram;
+extern LLGLSLShader gGlowCombineFXAAProgram;
+extern LLGLSLShader gDebugProgram;
+enum NormalDebugShaderVariant : S32
+{
+ NORMAL_DEBUG_SHADER_DEFAULT,
+ NORMAL_DEBUG_SHADER_WITH_TANGENTS,
+ NORMAL_DEBUG_SHADER_COUNT
+};
+extern LLGLSLShader gNormalDebugProgram[NORMAL_DEBUG_SHADER_COUNT];
+extern LLGLSLShader gSkinnedNormalDebugProgram[NORMAL_DEBUG_SHADER_COUNT];
+extern LLGLSLShader gClipProgram;
+extern LLGLSLShader gBenchmarkProgram;
+extern LLGLSLShader gReflectionProbeDisplayProgram;
+extern LLGLSLShader gCopyProgram;
+extern LLGLSLShader gCopyDepthProgram;
+extern LLGLSLShader gPBRTerrainBakeProgram;
+extern LLGLSLShader gDrawColorProgram;
+
+//output tex0[tc0] - tex1[tc1]
+extern LLGLSLShader gTwoTextureCompareProgram;
+//discard some fragments based on user-set color tolerance
+extern LLGLSLShader gOneTextureFilterProgram;
+
+
+//object shaders
+extern LLGLSLShader gObjectPreviewProgram;
+extern LLGLSLShader gPhysicsPreviewProgram;
+extern LLGLSLShader gObjectBumpProgram;
+extern LLGLSLShader gSkinnedObjectBumpProgram;
+extern LLGLSLShader gObjectAlphaMaskNoColorProgram;
+
+//environment shaders
+extern LLGLSLShader gWaterProgram;
+extern LLGLSLShader gUnderWaterProgram;
+extern LLGLSLShader gGlowProgram;
+extern LLGLSLShader gGlowExtractProgram;
+
+//interface shaders
+extern LLGLSLShader gHighlightProgram;
+extern LLGLSLShader gHighlightNormalProgram;
+extern LLGLSLShader gHighlightSpecularProgram;
+
+extern LLGLSLShader gDeferredHighlightProgram;
+
+extern LLGLSLShader gPathfindingProgram;
+extern LLGLSLShader gPathfindingNoNormalsProgram;
+
+// avatar shader handles
+extern LLGLSLShader gAvatarProgram;
+extern LLGLSLShader gAvatarEyeballProgram;
+extern LLGLSLShader gImpostorProgram;
+
+// Post Process Shaders
+extern LLGLSLShader gPostScreenSpaceReflectionProgram;
+
+// Deferred rendering shaders
+extern LLGLSLShader gDeferredImpostorProgram;
+extern LLGLSLShader gDeferredDiffuseProgram;
+extern LLGLSLShader gDeferredDiffuseAlphaMaskProgram;
+extern LLGLSLShader gDeferredNonIndexedDiffuseAlphaMaskProgram;
+extern LLGLSLShader gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram;
+extern LLGLSLShader gDeferredNonIndexedDiffuseProgram;
+extern LLGLSLShader gDeferredBumpProgram;
+extern LLGLSLShader gDeferredTerrainProgram;
+extern LLGLSLShader gDeferredTreeProgram;
+extern LLGLSLShader gDeferredTreeShadowProgram;
+extern LLGLSLShader gDeferredLightProgram;
+extern LLGLSLShader gDeferredMultiLightProgram[LL_DEFERRED_MULTI_LIGHT_COUNT];
+extern LLGLSLShader gDeferredSpotLightProgram;
+extern LLGLSLShader gDeferredMultiSpotLightProgram;
+extern LLGLSLShader gDeferredSunProgram;
+extern LLGLSLShader gDeferredSunProbeProgram;
+extern LLGLSLShader gHazeProgram;
+extern LLGLSLShader gHazeWaterProgram;
+extern LLGLSLShader gDeferredBlurLightProgram;
+extern LLGLSLShader gDeferredAvatarProgram;
+extern LLGLSLShader gDeferredSoftenProgram;
+extern LLGLSLShader gDeferredShadowProgram;
+extern LLGLSLShader gDeferredShadowCubeProgram;
+extern LLGLSLShader gDeferredShadowAlphaMaskProgram;
+extern LLGLSLShader gDeferredShadowGLTFAlphaMaskProgram;
+extern LLGLSLShader gDeferredShadowGLTFAlphaBlendProgram;
+extern LLGLSLShader gDeferredShadowFullbrightAlphaMaskProgram;
+extern LLGLSLShader gDeferredPostProgram;
+extern LLGLSLShader gDeferredCoFProgram;
+extern LLGLSLShader gDeferredDoFCombineProgram;
+extern LLGLSLShader gFXAAProgram[4];
+extern LLGLSLShader gSMAAEdgeDetectProgram[4];
+extern LLGLSLShader gSMAABlendWeightsProgram[4];
+extern LLGLSLShader gSMAANeighborhoodBlendProgram[4];
+extern LLGLSLShader gCASProgram;
+extern LLGLSLShader gDeferredPostNoDoFProgram;
+extern LLGLSLShader gDeferredPostNoDoFNoiseProgram;
+extern LLGLSLShader gDeferredPostGammaCorrectProgram;
+extern LLGLSLShader gLegacyPostGammaCorrectProgram;
+extern LLGLSLShader gHDRGammaCorrectProgram;
+extern LLGLSLShader gDeferredPostTonemapProgram;
+extern LLGLSLShader gNoPostTonemapProgram;
+extern LLGLSLShader gExposureProgram;
+extern LLGLSLShader gExposureProgramNoFade;
+extern LLGLSLShader gLuminanceProgram;
+extern LLGLSLShader gDeferredAvatarShadowProgram;
+extern LLGLSLShader gDeferredAvatarAlphaShadowProgram;
+extern LLGLSLShader gDeferredAvatarAlphaMaskShadowProgram;
+extern LLGLSLShader gDeferredAlphaProgram;
+extern LLGLSLShader gHUDAlphaProgram;
+extern LLGLSLShader gDeferredAlphaImpostorProgram;
+extern LLGLSLShader gDeferredFullbrightProgram;
+extern LLGLSLShader gHUDFullbrightProgram;
+extern LLGLSLShader gDeferredFullbrightAlphaMaskProgram;
+extern LLGLSLShader gHUDFullbrightAlphaMaskProgram;
+extern LLGLSLShader gDeferredFullbrightAlphaMaskAlphaProgram;
+extern LLGLSLShader gHUDFullbrightAlphaMaskAlphaProgram;
+extern LLGLSLShader gDeferredEmissiveProgram;
+extern LLGLSLShader gDeferredAvatarEyesProgram;
+extern LLGLSLShader gDeferredAvatarAlphaProgram;
+extern LLGLSLShader gEnvironmentMapProgram;
+extern LLGLSLShader gDeferredWLSkyProgram;
+extern LLGLSLShader gDeferredWLCloudProgram;
+extern LLGLSLShader gDeferredWLSunProgram;
+extern LLGLSLShader gDeferredWLMoonProgram;
+extern LLGLSLShader gDeferredStarProgram;
+extern LLGLSLShader gDeferredFullbrightShinyProgram;
+extern LLGLSLShader gHUDFullbrightShinyProgram;
+extern LLGLSLShader gNormalMapGenProgram;
+extern LLGLSLShader gDeferredGenBrdfLutProgram;
+extern LLGLSLShader gDeferredBufferVisualProgram;
+
+// Deferred materials shaders
+extern LLGLSLShader gDeferredMaterialProgram[LLMaterial::SHADER_COUNT*2];
+
+extern LLGLSLShader gHUDPBROpaqueProgram;
+extern LLGLSLShader gPBRGlowProgram;
+extern LLGLSLShader gDeferredPBROpaqueProgram;
+extern LLGLSLShader gDeferredPBRAlphaProgram;
+extern LLGLSLShader gHUDPBRAlphaProgram;
+
+// GLTF shaders
+extern LLGLSLShader gGLTFPBRMetallicRoughnessProgram;
+
+extern LLGLSLShader gBloomExtractProgram;
+extern LLGLSLShader gBloomBlurProgram;
+extern LLGLSLShader gBloomCombineProgram;
+
+// Encodes detail level for dropping textures, in accordance with the GLTF spec where possible
+// 0 is highest detail, -1 drops emissive, etc
+// Dropping metallic roughness is off-spec - Reserve for potato machines as needed
+// https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#additional-textures
+enum TerrainPBRDetail : S32
+{
+ TERRAIN_PBR_DETAIL_MAX = 0,
+ TERRAIN_PBR_DETAIL_EMISSIVE = 0,
+ TERRAIN_PBR_DETAIL_OCCLUSION = -1,
+ TERRAIN_PBR_DETAIL_NORMAL = -2,
+ TERRAIN_PBR_DETAIL_METALLIC_ROUGHNESS = -3,
+ TERRAIN_PBR_DETAIL_BASE_COLOR = -4,
+ TERRAIN_PBR_DETAIL_MIN = -4,
+};
+enum TerrainPaintType : U32
+{
+ // Use LLVLComposition::mDatap (heightmap) generated by generateHeights, plus noise from TERRAIN_ALPHARAMP
+ TERRAIN_PAINT_TYPE_HEIGHTMAP_WITH_NOISE = 0,
+ // Use paint map if PBR terrain, otherwise fall back to TERRAIN_PAINT_TYPE_HEIGHTMAP_WITH_NOISE
+ TERRAIN_PAINT_TYPE_PBR_PAINTMAP = 1,
+ TERRAIN_PAINT_TYPE_COUNT = 2,
+};
+extern LLGLSLShader gDeferredPBRTerrainProgram[TERRAIN_PAINT_TYPE_COUNT];
+#endif