diff options
Diffstat (limited to 'indra/llrender')
| -rw-r--r-- | indra/llrender/llgl.cpp | 39 | ||||
| -rw-r--r-- | indra/llrender/llgl.h | 4 | ||||
| -rw-r--r-- | indra/llrender/llglheaders.h | 237 | ||||
| -rw-r--r-- | indra/llrender/llglslshader.cpp | 52 | ||||
| -rw-r--r-- | indra/llrender/llrender.cpp | 2 | ||||
| -rw-r--r-- | indra/llrender/llshadermgr.cpp | 60 | ||||
| -rw-r--r-- | indra/llrender/llshadermgr.h | 428 | ||||
| -rw-r--r-- | indra/llrender/llvertexbuffer.h | 43 | 
8 files changed, 325 insertions, 540 deletions
diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp index ee02a90b54..43fedeca64 100644 --- a/indra/llrender/llgl.cpp +++ b/indra/llrender/llgl.cpp @@ -151,7 +151,7 @@ LLMatrix4 gGLObliqueProjectionInverse;  std::list<LLGLUpdate*> LLGLUpdate::sGLQ; -#if (LL_WINDOWS || LL_LINUX || LL_SOLARIS)  && !LL_MESA_HEADLESS +#if (LL_WINDOWS || LL_LINUX)  && !LL_MESA_HEADLESS  // ATI prototypes  #if LL_WINDOWS @@ -328,7 +328,7 @@ PFNWGLCREATECONTEXTATTRIBSARBPROC wglCreateContextAttribsARB = NULL;  #endif  // vertex shader prototypes -#if LL_LINUX || LL_SOLARIS +#if LL_LINUX  PFNGLVERTEXATTRIB1DARBPROC glVertexAttrib1dARB = NULL;  PFNGLVERTEXATTRIB1DVARBPROC glVertexAttrib1dvARB = NULL;  PFNGLVERTEXATTRIB1FARBPROC glVertexAttrib1fARB = NULL; @@ -347,7 +347,7 @@ PFNGLVERTEXATTRIB3FARBPROC glVertexAttrib3fARB = NULL;  PFNGLVERTEXATTRIB3FVARBPROC glVertexAttrib3fvARB = NULL;  PFNGLVERTEXATTRIB3SARBPROC glVertexAttrib3sARB = NULL;  PFNGLVERTEXATTRIB3SVARBPROC glVertexAttrib3svARB = NULL; -#endif // LL_LINUX || LL_SOLARIS +#endif // LL_LINUX  PFNGLVERTEXATTRIB4NBVARBPROC glVertexAttrib4nbvARB = NULL;  PFNGLVERTEXATTRIB4NIVARBPROC glVertexAttrib4nivARB = NULL;  PFNGLVERTEXATTRIB4NSVARBPROC glVertexAttrib4nsvARB = NULL; @@ -355,7 +355,7 @@ PFNGLVERTEXATTRIB4NUBARBPROC glVertexAttrib4nubARB = NULL;  PFNGLVERTEXATTRIB4NUBVARBPROC glVertexAttrib4nubvARB = NULL;  PFNGLVERTEXATTRIB4NUIVARBPROC glVertexAttrib4nuivARB = NULL;  PFNGLVERTEXATTRIB4NUSVARBPROC glVertexAttrib4nusvARB = NULL; -#if LL_LINUX  || LL_SOLARIS +#if LL_LINUX  PFNGLVERTEXATTRIB4BVARBPROC glVertexAttrib4bvARB = NULL;  PFNGLVERTEXATTRIB4DARBPROC glVertexAttrib4dARB = NULL;  PFNGLVERTEXATTRIB4DVARBPROC glVertexAttrib4dvARB = NULL; @@ -393,7 +393,7 @@ PFNGLGETVERTEXATTRIBFVARBPROC glGetVertexAttribfvARB = NULL;  PFNGLGETVERTEXATTRIBIVARBPROC glGetVertexAttribivARB = NULL;  PFNGLGETVERTEXATTRIBPOINTERVARBPROC glGetVertexAttribPointervARB = NULL;  PFNGLISPROGRAMARBPROC glIsProgramARB = NULL; -#endif // LL_LINUX || LL_SOLARIS +#endif // LL_LINUX  PFNGLBINDATTRIBLOCATIONARBPROC glBindAttribLocationARB = NULL;  PFNGLGETACTIVEATTRIBARBPROC glGetActiveAttribARB = NULL;  PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB = NULL; @@ -471,8 +471,6 @@ LLGLManager::LLGLManager() :  	mHasSeparateSpecularColor(FALSE), -	mDebugGPU(FALSE), -  	mDriverVersionMajor(1),  	mDriverVersionMinor(0),  	mDriverVersionRelease(0), @@ -854,10 +852,6 @@ bool LLGLManager::initGL()  	stop_glerror(); -	setToDebugGPU(); - -	stop_glerror(); -  	initGLStates();  	stop_glerror(); @@ -865,17 +859,6 @@ bool LLGLManager::initGL()  	return true;  } -void LLGLManager::setToDebugGPU() -{ -	//"MOBILE INTEL(R) 965 EXPRESS CHIP",  -	if (mGLRenderer.find("INTEL") != std::string::npos && mGLRenderer.find("965") != std::string::npos) -	{ -		mDebugGPU = TRUE ; -	} - -	return ; -} -  void LLGLManager::getGLInfo(LLSD& info)  {  	if (gHeadlessClient) @@ -1032,7 +1015,6 @@ void LLGLManager::asLLSD(LLSD& info)  	// Other fields  	info["has_requirements"] = mHasRequirements;  	info["has_separate_specular_color"] = mHasSeparateSpecularColor; -	info["debug_gpu"] = mDebugGPU;  	info["max_vertex_range"] = mGLMaxVertexRange;  	info["max_index_range"] = mGLMaxIndexRange;  	info["max_texture_size"] = mGLMaxTextureSize; @@ -1167,7 +1149,7 @@ void LLGLManager::initExtensions()  	mHasFragmentShader = ExtensionExists("GL_ARB_fragment_shader", gGLHExts.mSysExts) && (LLRender::sGLCoreProfile || ExtensionExists("GL_ARB_shading_language_100", gGLHExts.mSysExts));  #endif -#if LL_LINUX || LL_SOLARIS +#if LL_LINUX  	LL_INFOS() << "initExtensions() checking shell variables to adjust features..." << LL_ENDL;  	// Our extension support for the Linux Client is very young with some  	// potential driver gotchas, so offer a semi-secret way to turn it off. @@ -1237,7 +1219,7 @@ void LLGLManager::initExtensions()  		if (strchr(blacklist,'u')) mHasDepthClamp = FALSE;  	} -#endif // LL_LINUX || LL_SOLARIS +#endif // LL_LINUX  	if (!mHasMultitexture)  	{ @@ -1315,7 +1297,7 @@ void LLGLManager::initExtensions()  	glGetIntegerv(GL_MAX_ELEMENTS_INDICES, (GLint*) &mGLMaxIndexRange);  	glGetIntegerv(GL_MAX_TEXTURE_SIZE, (GLint*) &mGLMaxTextureSize); -#if (LL_WINDOWS || LL_LINUX || LL_SOLARIS) && !LL_MESA_HEADLESS +#if (LL_WINDOWS || LL_LINUX) && !LL_MESA_HEADLESS  	LL_DEBUGS("RenderInit") << "GL Probe: Getting symbols" << LL_ENDL;  	if (mHasVertexBufferObject)  	{ @@ -1414,7 +1396,7 @@ void LLGLManager::initExtensions()  		glDebugMessageCallbackARB = (PFNGLDEBUGMESSAGECALLBACKARBPROC) GLH_EXT_GET_PROC_ADDRESS("glDebugMessageCallbackARB");  		glGetDebugMessageLogARB = (PFNGLGETDEBUGMESSAGELOGARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetDebugMessageLogARB");  	} -#if (!LL_LINUX && !LL_SOLARIS) || LL_LINUX_NV_GL_HEADERS +#if (!LL_LINUX) || LL_LINUX_NV_GL_HEADERS  	// This is expected to be a static symbol on Linux GL implementations, except if we use the nvidia headers - bah  	glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawRangeElements");  	if (!glDrawRangeElements) @@ -2775,8 +2757,9 @@ LLGLSPipelineBlendSkyBox::LLGLSPipelineBlendSkyBox(bool depth_test, bool depth_w  #if LL_WINDOWS  // Expose desired use of high-performance graphics processor to Optimus driver and to AMD driver +// https://docs.nvidia.com/gameworks/content/technologies/desktop/optimus.htm  extern "C"  -{ +{       __declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;      __declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1;  } diff --git a/indra/llrender/llgl.h b/indra/llrender/llgl.h index 966c4b3c77..a07e2d9bb0 100644 --- a/indra/llrender/llgl.h +++ b/indra/llrender/llgl.h @@ -142,9 +142,6 @@ public:  	// Misc extensions  	BOOL mHasSeparateSpecularColor; -	//whether this GPU is in the debug list. -	BOOL mDebugGPU; -	  	S32 mDriverVersionMajor;  	S32 mDriverVersionMinor;  	S32 mDriverVersionRelease; @@ -178,7 +175,6 @@ private:  	void initExtensions();  	void initGLStates();  	void initGLImages(); -	void setToDebugGPU();  };  extern LLGLManager gGLManager; diff --git a/indra/llrender/llglheaders.h b/indra/llrender/llglheaders.h index 36fbb381bb..6bca3623e0 100644 --- a/indra/llrender/llglheaders.h +++ b/indra/llrender/llglheaders.h @@ -27,242 +27,7 @@  #ifndef LL_LLGLHEADERS_H  #define LL_LLGLHEADERS_H -#if LL_SOLARIS -#   if defined(__sparc) -#      define I_NEED_OS2_H 	//  avoiding BOOL conflicts -#   endif -#   include "GL/gl.h" -#   if defined(__sparc) -#      undef I_NEED_OS2_H -#      ifdef BOOL -#         undef BOOL		// now get rid of Xmd.h crap -#      endif -#   endif -#   include "GL/glx.h" -#   define  GL_GLEXT_PROTOTYPES 1 -#   include "GL/glext.h" -#   include "GL/glu.h" -#   include "GL/glx.h" -#   define  GLX_GLXEXT_PROTOTYPES 1 -#   include "GL/glxext.h" -//#   define  GLH_EXT_GET_PROC_ADDRESS(p) glXGetProcAddressARB((const GLubyte*)(p)) -#   define  GLH_EXT_GET_PROC_ADDRESS(p) glXGetProcAddress((const GLubyte*)(p)) - -// The __APPLE__ kludge is to make glh_extensions.h not symbol-clash horribly -// This header is distributed with SL.  You'll find it in linden/libraries/include/GL/ -# define __APPLE__ -# include "GL/glh_extensions.h" -# undef __APPLE__ - - -// GL_ARB_vertex_buffer_object -extern PFNGLBINDBUFFERARBPROC		glBindBufferARB; -extern PFNGLDELETEBUFFERSARBPROC	glDeleteBuffersARB; -extern PFNGLGENBUFFERSARBPROC		glGenBuffersARB; -extern PFNGLISBUFFERARBPROC			glIsBufferARB; -extern PFNGLBUFFERDATAARBPROC		glBufferDataARB; -extern PFNGLBUFFERSUBDATAARBPROC	glBufferSubDataARB; -extern PFNGLGETBUFFERSUBDATAARBPROC glGetBufferSubDataARB; -extern PFNGLMAPBUFFERARBPROC		glMapBufferARB; -extern PFNGLUNMAPBUFFERARBPROC		glUnmapBufferARB; -extern PFNGLGETBUFFERPARAMETERIVARBPROC	glGetBufferParameterivARB; -extern PFNGLGETBUFFERPOINTERVARBPROC	glGetBufferPointervARB; - -// GL_ARB_vertex_array_object -extern PFNGLBINDVERTEXARRAYPROC glBindVertexArray; -extern PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays; -extern PFNGLGENVERTEXARRAYSPROC glGenVertexArrays; -extern PFNGLISVERTEXARRAYPROC glIsVertexArray; - -// GL_ARB_sync -extern PFNGLFENCESYNCPROC				glFenceSync; -extern PFNGLISSYNCPROC					glIsSync; -extern PFNGLDELETESYNCPROC				glDeleteSync; -extern PFNGLCLIENTWAITSYNCPROC			glClientWaitSync; -extern PFNGLWAITSYNCPROC				glWaitSync; -extern PFNGLGETINTEGER64VPROC			glGetInteger64v; -extern PFNGLGETSYNCIVPROC				glGetSynciv; - -// GL_APPLE_flush_buffer_range -extern PFNGLBUFFERPARAMETERIAPPLEPROC	glBufferParameteriAPPLE; -extern PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glFlushMappedBufferRangeAPPLE; - -// GL_ARB_map_buffer_range -extern PFNGLMAPBUFFERRANGEPROC			glMapBufferRange; -extern PFNGLFLUSHMAPPEDBUFFERRANGEPROC	glFlushMappedBufferRange; - -// GL_ATI_vertex_array_object -extern PFNGLNEWOBJECTBUFFERATIPROC			glNewObjectBufferATI; -extern PFNGLISOBJECTBUFFERATIPROC			glIsObjectBufferATI; -extern PFNGLUPDATEOBJECTBUFFERATIPROC		glUpdateObjectBufferATI; -extern PFNGLGETOBJECTBUFFERFVATIPROC		glGetObjectBufferfvATI; -extern PFNGLGETOBJECTBUFFERIVATIPROC		glGetObjectBufferivATI; -extern PFNGLFREEOBJECTBUFFERATIPROC		    glFreeObjectBufferATI; -extern PFNGLARRAYOBJECTATIPROC				glArrayObjectATI; -extern PFNGLVERTEXATTRIBARRAYOBJECTATIPROC	glVertexAttribArrayObjectATI; -extern PFNGLGETARRAYOBJECTFVATIPROC			glGetArrayObjectfvATI; -extern PFNGLGETARRAYOBJECTIVATIPROC			glGetArrayObjectivATI; -extern PFNGLVARIANTARRAYOBJECTATIPROC		glVariantObjectArrayATI; -extern PFNGLGETVARIANTARRAYOBJECTFVATIPROC	glGetVariantArrayObjectfvATI; -extern PFNGLGETVARIANTARRAYOBJECTIVATIPROC	glGetVariantArrayObjectivATI; - -// GL_ARB_occlusion_query -extern PFNGLGENQUERIESARBPROC glGenQueriesARB; -extern PFNGLDELETEQUERIESARBPROC glDeleteQueriesARB; -extern PFNGLISQUERYARBPROC glIsQueryARB; -extern PFNGLBEGINQUERYARBPROC glBeginQueryARB; -extern PFNGLENDQUERYARBPROC glEndQueryARB; -extern PFNGLGETQUERYIVARBPROC glGetQueryivARB; -extern PFNGLGETQUERYOBJECTIVARBPROC glGetQueryObjectivARB; -extern PFNGLGETQUERYOBJECTUIVARBPROC glGetQueryObjectuivARB; - -// GL_ARB_timer_query -extern PFNGLQUERYCOUNTERPROC glQueryCounter; -extern PFNGLGETQUERYOBJECTI64VPROC glGetQueryObjecti64v; -extern PFNGLGETQUERYOBJECTUI64VPROC glGetQueryObjectui64v; - -// GL_ARB_point_parameters -extern PFNGLPOINTPARAMETERFARBPROC glPointParameterfARB; -extern PFNGLPOINTPARAMETERFVARBPROC glPointParameterfvARB; - -// GL_ARB_shader_objects -extern PFNGLDELETEOBJECTARBPROC glDeleteObjectARB; -extern PFNGLGETHANDLEARBPROC glGetHandleARB; -extern PFNGLDETACHOBJECTARBPROC glDetachObjectARB; -extern PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB; -extern PFNGLSHADERSOURCEARBPROC glShaderSourceARB; -extern PFNGLCOMPILESHADERARBPROC glCompileShaderARB; -extern PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB; -extern PFNGLATTACHOBJECTARBPROC glAttachObjectARB; -extern PFNGLLINKPROGRAMARBPROC glLinkProgramARB; -extern PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB; -extern PFNGLVALIDATEPROGRAMARBPROC glValidateProgramARB; -extern PFNGLUNIFORM1FARBPROC glUniform1fARB; -extern PFNGLUNIFORM2FARBPROC glUniform2fARB; -extern PFNGLUNIFORM3FARBPROC glUniform3fARB; -extern PFNGLUNIFORM4FARBPROC glUniform4fARB; -extern PFNGLUNIFORM1IARBPROC glUniform1iARB; -extern PFNGLUNIFORM2IARBPROC glUniform2iARB; -extern PFNGLUNIFORM3IARBPROC glUniform3iARB; -extern PFNGLUNIFORM4IARBPROC glUniform4iARB; -extern PFNGLUNIFORM1FVARBPROC glUniform1fvARB; -extern PFNGLUNIFORM2FVARBPROC glUniform2fvARB; -extern PFNGLUNIFORM3FVARBPROC glUniform3fvARB; -extern PFNGLUNIFORM4FVARBPROC glUniform4fvARB; -extern PFNGLUNIFORM1IVARBPROC glUniform1ivARB; -extern PFNGLUNIFORM2IVARBPROC glUniform2ivARB; -extern PFNGLUNIFORM3IVARBPROC glUniform3ivARB; -extern PFNGLUNIFORM4IVARBPROC glUniform4ivARB; -extern PFNGLUNIFORMMATRIX2FVARBPROC glUniformMatrix2fvARB; -extern PFNGLUNIFORMMATRIX3FVARBPROC glUniformMatrix3fvARB; -extern PFNGLUNIFORMMATRIX3X4FVPROC glUniformMatrix3x4fv; -extern PFNGLUNIFORMMATRIX4FVARBPROC glUniformMatrix4fvARB; -extern PFNGLGETOBJECTPARAMETERFVARBPROC glGetObjectParameterfvARB; -extern PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB; -extern PFNGLGETINFOLOGARBPROC glGetInfoLogARB; -extern PFNGLGETATTACHEDOBJECTSARBPROC glGetAttachedObjectsARB; -extern PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB; -extern PFNGLGETACTIVEUNIFORMARBPROC glGetActiveUniformARB; -extern PFNGLGETUNIFORMFVARBPROC glGetUniformfvARB; -extern PFNGLGETUNIFORMIVARBPROC glGetUniformivARB; -extern PFNGLGETSHADERSOURCEARBPROC glGetShaderSourceARB; - -// GL_ARB_vertex_shader -extern PFNGLVERTEXATTRIB1DARBPROC glVertexAttrib1dARB; -extern PFNGLVERTEXATTRIB1DVARBPROC glVertexAttrib1dvARB; -extern PFNGLVERTEXATTRIB1FARBPROC glVertexAttrib1fARB; -extern PFNGLVERTEXATTRIB1FVARBPROC glVertexAttrib1fvARB; -extern PFNGLVERTEXATTRIB1SARBPROC glVertexAttrib1sARB; -extern PFNGLVERTEXATTRIB1SVARBPROC glVertexAttrib1svARB; -extern PFNGLVERTEXATTRIB2DARBPROC glVertexAttrib2dARB; -extern PFNGLVERTEXATTRIB2DVARBPROC glVertexAttrib2dvARB; -extern PFNGLVERTEXATTRIB2FARBPROC glVertexAttrib2fARB; -extern PFNGLVERTEXATTRIB2FVARBPROC glVertexAttrib2fvARB; -extern PFNGLVERTEXATTRIB2SARBPROC glVertexAttrib2sARB; -extern PFNGLVERTEXATTRIB2SVARBPROC glVertexAttrib2svARB; -extern PFNGLVERTEXATTRIB3DARBPROC glVertexAttrib3dARB; -extern PFNGLVERTEXATTRIB3DVARBPROC glVertexAttrib3dvARB; -extern PFNGLVERTEXATTRIB3FARBPROC glVertexAttrib3fARB; -extern PFNGLVERTEXATTRIB3FVARBPROC glVertexAttrib3fvARB; -extern PFNGLVERTEXATTRIB3SARBPROC glVertexAttrib3sARB; -extern PFNGLVERTEXATTRIB3SVARBPROC glVertexAttrib3svARB; -extern PFNGLVERTEXATTRIB4NBVARBPROC glVertexAttrib4nbvARB; -extern PFNGLVERTEXATTRIB4NIVARBPROC glVertexAttrib4nivARB; -extern PFNGLVERTEXATTRIB4NSVARBPROC glVertexAttrib4nsvARB; -extern PFNGLVERTEXATTRIB4NUBARBPROC glVertexAttrib4nubARB; -extern PFNGLVERTEXATTRIB4NUBVARBPROC glVertexAttrib4nubvARB; -extern PFNGLVERTEXATTRIB4NUIVARBPROC glVertexAttrib4nuivARB; -extern PFNGLVERTEXATTRIB4NUSVARBPROC glVertexAttrib4nusvARB; -extern PFNGLVERTEXATTRIB4BVARBPROC glVertexAttrib4bvARB; -extern PFNGLVERTEXATTRIB4DARBPROC glVertexAttrib4dARB; -extern PFNGLVERTEXATTRIB4DVARBPROC glVertexAttrib4dvARB; -extern PFNGLVERTEXATTRIB4FARBPROC glVertexAttrib4fARB; -extern PFNGLVERTEXATTRIB4FVARBPROC glVertexAttrib4fvARB; -extern PFNGLVERTEXATTRIB4IVARBPROC glVertexAttrib4ivARB; -extern PFNGLVERTEXATTRIB4SARBPROC glVertexAttrib4sARB; -extern PFNGLVERTEXATTRIB4SVARBPROC glVertexAttrib4svARB; -extern PFNGLVERTEXATTRIB4UBVARBPROC glVertexAttrib4ubvARB; -extern PFNGLVERTEXATTRIB4UIVARBPROC glVertexAttrib4uivARB; -extern PFNGLVERTEXATTRIB4USVARBPROC glVertexAttrib4usvARB; -extern PFNGLVERTEXATTRIBPOINTERARBPROC glVertexAttribPointerARB; -extern PFNGLVERTEXATTRIBIPOINTERPROC glVertexAttribIPointer; -extern PFNGLENABLEVERTEXATTRIBARRAYARBPROC glEnableVertexAttribArrayARB; -extern PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glDisableVertexAttribArrayARB; -extern PFNGLPROGRAMSTRINGARBPROC glProgramStringARB; -extern PFNGLBINDPROGRAMARBPROC glBindProgramARB; -extern PFNGLDELETEPROGRAMSARBPROC glDeleteProgramsARB; -extern PFNGLGENPROGRAMSARBPROC glGenProgramsARB; -extern PFNGLPROGRAMENVPARAMETER4DARBPROC glProgramEnvParameter4dARB; -extern PFNGLPROGRAMENVPARAMETER4DVARBPROC glProgramEnvParameter4dvARB; -extern PFNGLPROGRAMENVPARAMETER4FARBPROC glProgramEnvParameter4fARB; -extern PFNGLPROGRAMENVPARAMETER4FVARBPROC glProgramEnvParameter4fvARB; -extern PFNGLPROGRAMLOCALPARAMETER4DARBPROC glProgramLocalParameter4dARB; -extern PFNGLPROGRAMLOCALPARAMETER4DVARBPROC glProgramLocalParameter4dvARB; -extern PFNGLPROGRAMLOCALPARAMETER4FARBPROC glProgramLocalParameter4fARB; -extern PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glProgramLocalParameter4fvARB; -extern PFNGLGETPROGRAMENVPARAMETERDVARBPROC glGetProgramEnvParameterdvARB; -extern PFNGLGETPROGRAMENVPARAMETERFVARBPROC glGetProgramEnvParameterfvARB; -extern PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glGetProgramLocalParameterdvARB; -extern PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC glGetProgramLocalParameterfvARB; -extern PFNGLGETPROGRAMIVARBPROC glGetProgramivARB; -extern PFNGLGETPROGRAMSTRINGARBPROC glGetProgramStringARB; -extern PFNGLGETVERTEXATTRIBDVARBPROC glGetVertexAttribdvARB; -extern PFNGLGETVERTEXATTRIBFVARBPROC glGetVertexAttribfvARB; -extern PFNGLGETVERTEXATTRIBIVARBPROC glGetVertexAttribivARB; -extern PFNGLGETVERTEXATTRIBPOINTERVARBPROC glGetVertexAttribPointervARB; -extern PFNGLISPROGRAMARBPROC glIsProgramARB; -extern PFNGLBINDATTRIBLOCATIONARBPROC glBindAttribLocationARB; -extern PFNGLGETACTIVEATTRIBARBPROC glGetActiveAttribARB; -extern PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB; - -extern PFNGLCOMPRESSEDTEXIMAGE2DARBPROC glCompressedTexImage2DARB; -extern PFNGLGETCOMPRESSEDTEXIMAGEARBPROC glGetCompressedTexImageARB; - -extern PFNGLCOLORTABLEEXTPROC glColorTableEXT; - -//GL_EXT_blend_func_separate -extern PFNGLBLENDFUNCSEPARATEEXTPROC glBlendFuncSeparateEXT; - -//GL_EXT_framebuffer_object -extern PFNGLISRENDERBUFFEREXTPROC glIsRenderbufferEXT; -extern PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT; -extern PFNGLDELETERENDERBUFFERSEXTPROC glDeleteRenderbuffersEXT; -extern PFNGLGENRENDERBUFFERSEXTPROC glGenRenderbuffersEXT; -extern PFNGLRENDERBUFFERSTORAGEEXTPROC glRenderbufferStorageEXT; -extern PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC glGetRenderbufferParameterivEXT; -extern PFNGLISFRAMEBUFFEREXTPROC glIsFramebufferEXT; -extern PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT; -extern PFNGLDELETEFRAMEBUFFERSEXTPROC glDeleteFramebuffersEXT; -extern PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT; -extern PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXT; -extern PFNGLFRAMEBUFFERTEXTURE1DEXTPROC glFramebufferTexture1DEXT; -extern PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXT; -extern PFNGLFRAMEBUFFERTEXTURE3DEXTPROC glFramebufferTexture3DEXT; -extern PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glFramebufferRenderbufferEXT; -extern PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glGetFramebufferAttachmentParameterivEXT; -extern PFNGLGENERATEMIPMAPEXTPROC glGenerateMipmapEXT; - -#elif LL_MESA +#if LL_MESA  //----------------------------------------------------------------------------  // MESA headers  // quotes so we get libraries/.../GL/ version diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp index 384e5bf99f..4351f6e2c8 100644 --- a/indra/llrender/llglslshader.cpp +++ b/indra/llrender/llglslshader.cpp @@ -37,6 +37,10 @@  #include "OpenGL/OpenGL.h"  #endif +// Print-print list of shader included source files that are linked together via glAttachObjectARB() +// i.e. On macOS / OSX the AMD GLSL linker will display an error if a varying is left in an undefined state. +#define DEBUG_SHADER_INCLUDES 0 +  // Lots of STL stuff in here, using namespace std to keep things more readable  using std::vector;  using std::pair; @@ -392,16 +396,28 @@ BOOL LLGLSLShader::createShader(std::vector<LLStaticHashedString> * attributes,      mLightHash = 0xFFFFFFFF;      llassert_always(!mShaderFiles.empty()); -    BOOL success = TRUE;      // Create program      mProgramObject = glCreateProgramObjectARB(); +    if (mProgramObject == 0) +    { +        // Shouldn't happen if shader related extensions, like ARB_vertex_shader, exist. +        LL_SHADER_LOADING_WARNS() << "Failed to create handle for shader: " << mName << LL_ENDL; +        unloadInternal(); +        return FALSE; +    } + +    BOOL success = TRUE;  #if LL_DARWIN      // work-around missing mix(vec3,vec3,bvec3)      mDefines["OLD_SELECT"] = "1";  #endif +#if DEBUG_SHADER_INCLUDES +    fprintf(stderr, "--- %s ---\n", mName.c_str()); +#endif // DEBUG_SHADER_INCLUDES +      //compile new source      vector< pair<string,GLenum> >::iterator fileIter = mShaderFiles.begin();      for ( ; fileIter != mShaderFiles.end(); fileIter++ ) @@ -485,11 +501,36 @@ BOOL LLGLSLShader::createShader(std::vector<LLStaticHashedString> * attributes,      return success;  } -BOOL LLGLSLShader::attachVertexObject(std::string object_path) { +#if DEBUG_SHADER_INCLUDES +void dumpAttachObject( const char *func_name, GLhandleARB program_object, const std::string &object_path ) +{ +    GLcharARB* info_log; +    GLint      info_len_expect = 0; +    GLint      info_len_actual = 0; + +    glGetObjectParameterivARB(program_object, GL_OBJECT_INFO_LOG_LENGTH_ARB, &info_len_expect); +    fprintf(stderr, " * %-20s(), log size: %d, %s\n", func_name, info_len_expect, object_path.c_str()); + +    if (info_len_expect > 0) +    { +        fprintf(stderr, " ========== %s() ========== \n", func_name); +        info_log = new GLcharARB [ info_len_expect ]; +        glGetInfoLogARB(program_object, info_len_expect, &info_len_actual, info_log); +        fprintf(stderr, "%s\n",  info_log); +        delete [] info_log; +    } +} +#endif // DEBUG_SHADER_INCLUDES + +BOOL LLGLSLShader::attachVertexObject(std::string object_path) +{      if (LLShaderMgr::instance()->mVertexShaderObjects.count(object_path) > 0)      {          stop_glerror();          glAttachObjectARB(mProgramObject, LLShaderMgr::instance()->mVertexShaderObjects[object_path]); +#if DEBUG_SHADER_INCLUDES +        dumpAttachObject("attachVertexObject", mProgramObject, object_path); +#endif // DEBUG_SHADER_INCLUDES          stop_glerror();          return TRUE;      } @@ -506,6 +547,9 @@ BOOL LLGLSLShader::attachFragmentObject(std::string object_path)      {          stop_glerror();          glAttachObjectARB(mProgramObject, LLShaderMgr::instance()->mFragmentShaderObjects[object_path]); +#if DEBUG_SHADER_INCLUDES +        dumpAttachObject("attachFragmentObject", mProgramObject, object_path); +#endif // DEBUG_SHADER_INCLUDES          stop_glerror();          return TRUE;      } @@ -522,6 +566,10 @@ void LLGLSLShader::attachObject(GLhandleARB object)      {          stop_glerror();          glAttachObjectARB(mProgramObject, object); +#if DEBUG_SHADER_INCLUDES +        std::string object_path("???"); +        dumpAttachObject("attachObject", mProgramObject, object_path); +#endif // DEBUG_SHADER_INCLUDES          stop_glerror();      }      else diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp index 11d9ef3f57..d515fc707a 100644 --- a/indra/llrender/llrender.cpp +++ b/indra/llrender/llrender.cpp @@ -871,10 +871,10 @@ void LLTexUnit::setTextureColorSpace(eTextureColorSpace space)          }      }      else -#endif      {          glTexParameteri(sGLTextureType[mCurrTexType], GL_TEXTURE_SRGB_DECODE_EXT, GL_SKIP_DECODE_EXT);      } +#endif  }  LLLightState::LLLightState(S32 index) diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp index 236ebbd78f..e8c6295930 100644 --- a/indra/llrender/llshadermgr.cpp +++ b/indra/llrender/llshadermgr.cpp @@ -611,13 +611,11 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade  #endif  	GLenum error = GL_NO_ERROR; -	if (gDebugGL) + +	error = glGetError(); +	if (error != GL_NO_ERROR)  	{ -		error = glGetError(); -		if (error != GL_NO_ERROR) -		{ -			LL_SHADER_LOADING_WARNS() << "GL ERROR entering loadShaderFile(): " << error << LL_ENDL; -		} +		LL_SHADER_LOADING_WARNS() << "GL ERROR entering loadShaderFile(): " << error << " for file: " << filename << LL_ENDL;  	}  	if (filename.empty())  @@ -966,55 +964,45 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade  	//create shader object  	GLhandleARB ret = glCreateShaderObjectARB(type); -	if (gDebugGL) + +	error = glGetError(); +	if (error != GL_NO_ERROR)  	{ -		error = glGetError(); -		if (error != GL_NO_ERROR) -		{ -			LL_WARNS("ShaderLoading") << "GL ERROR in glCreateShaderObjectARB: " << error << LL_ENDL; -		} +		LL_WARNS("ShaderLoading") << "GL ERROR in glCreateShaderObjectARB: " << error << " for file: " << open_file_name << LL_ENDL;  	} -	 +  	//load source  	glShaderSourceARB(ret, shader_code_count, (const GLcharARB**) shader_code_text, NULL); -	if (gDebugGL) +	error = glGetError(); +	if (error != GL_NO_ERROR)  	{ -		error = glGetError(); -		if (error != GL_NO_ERROR) -		{ -			LL_WARNS("ShaderLoading") << "GL ERROR in glShaderSourceARB: " << error << LL_ENDL; -		} +		LL_WARNS("ShaderLoading") << "GL ERROR in glShaderSourceARB: " << error << " for file: " << open_file_name << LL_ENDL;  	}  	//compile source  	glCompileShaderARB(ret); -	if (gDebugGL) +	error = glGetError(); +	if (error != GL_NO_ERROR)  	{ -		error = glGetError(); -		if (error != GL_NO_ERROR) -		{ -			LL_WARNS("ShaderLoading") << "GL ERROR in glCompileShaderARB: " << error << LL_ENDL; -		} +		LL_WARNS("ShaderLoading") << "GL ERROR in glCompileShaderARB: " << error << " for file: " << open_file_name << LL_ENDL;  	} -		 +  	if (error == GL_NO_ERROR)  	{  		//check for errors  		GLint success = GL_TRUE;  		glGetObjectParameterivARB(ret, GL_OBJECT_COMPILE_STATUS_ARB, &success); -		if (gDebugGL || success == GL_FALSE) + +		error = glGetError(); +		if (error != GL_NO_ERROR || success == GL_FALSE)   		{ -			error = glGetError(); -			if (error != GL_NO_ERROR || success == GL_FALSE)  -			{ -				//an error occured, print log -				LL_WARNS("ShaderLoading") << "GLSL Compilation Error:" << LL_ENDL; -				dumpObjectLog(ret, TRUE, open_file_name); -                dumpShaderSource(shader_code_count, shader_code_text); -				ret = 0; -			} +			//an error occured, print log +			LL_WARNS("ShaderLoading") << "GLSL Compilation Error:" << LL_ENDL; +			dumpObjectLog(ret, TRUE, open_file_name); +			dumpShaderSource(shader_code_count, shader_code_text); +			ret = 0;  		}  	}  	else diff --git a/indra/llrender/llshadermgr.h b/indra/llrender/llshadermgr.h index 127b5ce5b6..3908efd4ec 100644 --- a/indra/llrender/llshadermgr.h +++ b/indra/llrender/llshadermgr.h @@ -36,221 +36,223 @@ public:  	LLShaderMgr();  	virtual ~LLShaderMgr(); -	typedef enum -	{ -		MODELVIEW_MATRIX = 0, -		PROJECTION_MATRIX, -		INVERSE_PROJECTION_MATRIX, -		MODELVIEW_PROJECTION_MATRIX, -        INVERSE_MODELVIEW_MATRIX, -		NORMAL_MATRIX, -		TEXTURE_MATRIX0, -		TEXTURE_MATRIX1, -		TEXTURE_MATRIX2, -		TEXTURE_MATRIX3, -		OBJECT_PLANE_S, -		OBJECT_PLANE_T, -		VIEWPORT, -		LIGHT_POSITION, -		LIGHT_DIRECTION, -		LIGHT_ATTENUATION, -		LIGHT_DIFFUSE, -		LIGHT_AMBIENT, -		MULTI_LIGHT_COUNT, -		MULTI_LIGHT, -		MULTI_LIGHT_COL, -		MULTI_LIGHT_FAR_Z, -		PROJECTOR_MATRIX, -		PROJECTOR_NEAR, -		PROJECTOR_P, -		PROJECTOR_N, -		PROJECTOR_ORIGIN, -		PROJECTOR_RANGE, -		PROJECTOR_AMBIANCE, -		PROJECTOR_SHADOW_INDEX, -		PROJECTOR_SHADOW_FADE, -		PROJECTOR_FOCUS, -		PROJECTOR_LOD, -		PROJECTOR_AMBIENT_LOD, -		DIFFUSE_COLOR, -		DIFFUSE_MAP, -        ALTERNATE_DIFFUSE_MAP, -		SPECULAR_MAP, -		BUMP_MAP, -        BUMP_MAP2, -		ENVIRONMENT_MAP, -		CLOUD_NOISE_MAP, -        CLOUD_NOISE_MAP_NEXT, -		FULLBRIGHT, -		LIGHTNORM, -		SUNLIGHT_COLOR, -		AMBIENT, -		BLUE_HORIZON, -		BLUE_DENSITY, -		HAZE_HORIZON, -		HAZE_DENSITY, -		CLOUD_SHADOW, -		DENSITY_MULTIPLIER, -		DISTANCE_MULTIPLIER, -		MAX_Y, -		GLOW, -		CLOUD_COLOR, -		CLOUD_POS_DENSITY1, -		CLOUD_POS_DENSITY2, -		CLOUD_SCALE, -		GAMMA, -		SCENE_LIGHT_STRENGTH, -		LIGHT_CENTER, -		LIGHT_SIZE, -		LIGHT_FALLOFF, -		BOX_CENTER, -		BOX_SIZE, - -		GLOW_MIN_LUMINANCE, -		GLOW_MAX_EXTRACT_ALPHA, -		GLOW_LUM_WEIGHTS, -		GLOW_WARMTH_WEIGHTS, -		GLOW_WARMTH_AMOUNT, -		GLOW_STRENGTH, -		GLOW_DELTA, - -		MINIMUM_ALPHA, -		EMISSIVE_BRIGHTNESS, - -		DEFERRED_SHADOW_MATRIX, -		DEFERRED_ENV_MAT, -		DEFERRED_SHADOW_CLIP, -		DEFERRED_SUN_WASH, -		DEFERRED_SHADOW_NOISE, -		DEFERRED_BLUR_SIZE, -		DEFERRED_SSAO_RADIUS, -		DEFERRED_SSAO_MAX_RADIUS, -		DEFERRED_SSAO_FACTOR, -		DEFERRED_SSAO_FACTOR_INV, -		DEFERRED_SSAO_EFFECT_MAT, -		DEFERRED_SCREEN_RES, -		DEFERRED_NEAR_CLIP, -		DEFERRED_SHADOW_OFFSET, -		DEFERRED_SHADOW_BIAS, -		DEFERRED_SPOT_SHADOW_BIAS, -		DEFERRED_SPOT_SHADOW_OFFSET, -		DEFERRED_SUN_DIR, -        DEFERRED_MOON_DIR, -		DEFERRED_SHADOW_RES, -		DEFERRED_PROJ_SHADOW_RES, -		DEFERRED_DEPTH_CUTOFF, -		DEFERRED_NORM_CUTOFF, -		DEFERRED_SHADOW_TARGET_WIDTH, - -		FXAA_TC_SCALE, -		FXAA_RCP_SCREEN_RES, -		FXAA_RCP_FRAME_OPT, -		FXAA_RCP_FRAME_OPT2, - -		DOF_FOCAL_DISTANCE, -		DOF_BLUR_CONSTANT, -		DOF_TAN_PIXEL_ANGLE, -		DOF_MAGNIFICATION, -		DOF_MAX_COF, -		DOF_RES_SCALE, -		DOF_WIDTH, -		DOF_HEIGHT, - -		DEFERRED_DEPTH, -		DEFERRED_SHADOW0, -		DEFERRED_SHADOW1, -		DEFERRED_SHADOW2, -		DEFERRED_SHADOW3, -		DEFERRED_SHADOW4, -		DEFERRED_SHADOW5, -		DEFERRED_NORMAL, -		DEFERRED_POSITION, -		DEFERRED_DIFFUSE, -		DEFERRED_SPECULAR, -		DEFERRED_NOISE, -		DEFERRED_LIGHTFUNC, -		DEFERRED_LIGHT, -		DEFERRED_BLOOM, -		DEFERRED_PROJECTION, -		DEFERRED_NORM_MATRIX, -		TEXTURE_GAMMA,		 -		SPECULAR_COLOR, -		ENVIRONMENT_INTENSITY, -		 -		AVATAR_MATRIX, -		AVATAR_TRANSLATION, - -		WATER_SCREENTEX, -		WATER_SCREENDEPTH, -		WATER_REFTEX, -		WATER_EYEVEC, -		WATER_TIME, -		WATER_WAVE_DIR1, -		WATER_WAVE_DIR2, -		WATER_LIGHT_DIR, -		WATER_SPECULAR, -		WATER_SPECULAR_EXP, -		WATER_FOGCOLOR, -		WATER_FOGDENSITY, -		WATER_FOGKS, -		WATER_REFSCALE, -		WATER_WATERHEIGHT, -		WATER_WATERPLANE, -		WATER_NORM_SCALE, -		WATER_FRESNEL_SCALE, -		WATER_FRESNEL_OFFSET, -		WATER_BLUR_MULTIPLIER, -		WATER_SUN_ANGLE, -		WATER_SCALED_ANGLE, -		WATER_SUN_ANGLE2, -		 -		WL_CAMPOSLOCAL, - -		AVATAR_WIND, -		AVATAR_SINWAVE, -		AVATAR_GRAVITY, - -		TERRAIN_DETAIL0, -		TERRAIN_DETAIL1, -		TERRAIN_DETAIL2, -		TERRAIN_DETAIL3, -		TERRAIN_ALPHARAMP, -		 -		SHINY_ORIGIN, -        DISPLAY_GAMMA, - -        INSCATTER_RT, -        SUN_SIZE, -        FOG_COLOR, +    // clang-format off +    typedef enum +    {                                       // Shader uniform name, set in LLShaderMgr::initAttribsAndUniforms() +        MODELVIEW_MATRIX = 0,               //  "modelview_matrix" +        PROJECTION_MATRIX,                  //  "projection_matrix" +        INVERSE_PROJECTION_MATRIX,          //  "inv_proj" +        MODELVIEW_PROJECTION_MATRIX,        //  "modelview_projection_matrix" +        INVERSE_MODELVIEW_MATRIX,           //  "inv_modelview" +        NORMAL_MATRIX,                      //  "normal_matrix" +        TEXTURE_MATRIX0,                    //  "texture_matrix0" +        TEXTURE_MATRIX1,                    //  "texture_matrix1" +        TEXTURE_MATRIX2,                    //  "texture_matrix2" +        TEXTURE_MATRIX3,                    //  "texture_matrix3" +        OBJECT_PLANE_S,                     //  "object_plane_s" +        OBJECT_PLANE_T,                     //  "object_plane_t" +        VIEWPORT,                           //  "viewport" +        LIGHT_POSITION,                     //  "light_position" +        LIGHT_DIRECTION,                    //  "light_direction" +        LIGHT_ATTENUATION,                  //  "light_attenuation" +        LIGHT_DIFFUSE,                      //  "light_diffuse" +        LIGHT_AMBIENT,                      //  "light_ambient" +        MULTI_LIGHT_COUNT,                  //  "light_count" +        MULTI_LIGHT,                        //  "light" +        MULTI_LIGHT_COL,                    //  "light_col" +        MULTI_LIGHT_FAR_Z,                  //  "far_z" +        PROJECTOR_MATRIX,                   //  "proj_mat" +        PROJECTOR_NEAR,                     //  "proj_near" +        PROJECTOR_P,                        //  "proj_p" +        PROJECTOR_N,                        //  "proj_n" +        PROJECTOR_ORIGIN,                   //  "proj_origin" +        PROJECTOR_RANGE,                    //  "proj_range" +        PROJECTOR_AMBIANCE,                 //  "proj_ambiance" +        PROJECTOR_SHADOW_INDEX,             //  "proj_shadow_idx" +        PROJECTOR_SHADOW_FADE,              //  "shadow_fade" +        PROJECTOR_FOCUS,                    //  "proj_focus" +        PROJECTOR_LOD,                      //  "proj_lod" +        PROJECTOR_AMBIENT_LOD,              //  "proj_ambient_lod" +        DIFFUSE_COLOR,                      //  "color" +        DIFFUSE_MAP,                        //  "diffuseMap" +        ALTERNATE_DIFFUSE_MAP,              //  "altDiffuseMap" +        SPECULAR_MAP,                       //  "specularMap" +        BUMP_MAP,                           //  "bumpMap" +        BUMP_MAP2,                          //  "bumpMap2" +        ENVIRONMENT_MAP,                    //  "environmentMap" +        CLOUD_NOISE_MAP,                    //  "cloud_noise_texture" +        CLOUD_NOISE_MAP_NEXT,               //  "cloud_noise_texture_next" +        FULLBRIGHT,                         //  "fullbright" +        LIGHTNORM,                          //  "lightnorm" +        SUNLIGHT_COLOR,                     //  "sunlight_color" +        AMBIENT,                            //  "ambient_color" +        BLUE_HORIZON,                       //  "blue_horizon" +        BLUE_DENSITY,                       //  "blue_density" +        HAZE_HORIZON,                       //  "haze_horizon" +        HAZE_DENSITY,                       //  "haze_density" +        CLOUD_SHADOW,                       //  "cloud_shadow" +        DENSITY_MULTIPLIER,                 //  "density_multiplier" +        DISTANCE_MULTIPLIER,                //  "distance_multiplier" +        MAX_Y,                              //  "max_y" +        GLOW,                               //  "glow" +        CLOUD_COLOR,                        //  "cloud_color" +        CLOUD_POS_DENSITY1,                 //  "cloud_pos_density1" +        CLOUD_POS_DENSITY2,                 //  "cloud_pos_density2" +        CLOUD_SCALE,                        //  "cloud_scale" +        GAMMA,                              //  "gamma" +        SCENE_LIGHT_STRENGTH,               //  "scene_light_strength" +        LIGHT_CENTER,                       //  "center" +        LIGHT_SIZE,                         //  "size" +        LIGHT_FALLOFF,                      //  "falloff" +        BOX_CENTER,                         //  "box_center" +        BOX_SIZE,                           //  "box_size" + +        GLOW_MIN_LUMINANCE,                 //  "minLuminance" +        GLOW_MAX_EXTRACT_ALPHA,             //  "maxExtractAlpha" +        GLOW_LUM_WEIGHTS,                   //  "lumWeights" +        GLOW_WARMTH_WEIGHTS,                //  "warmthWeights" +        GLOW_WARMTH_AMOUNT,                 //  "warmthAmount" +        GLOW_STRENGTH,                      //  "glowStrength" +        GLOW_DELTA,                         //  "glowDelta" + +        MINIMUM_ALPHA,                      //  "minimum_alpha" +        EMISSIVE_BRIGHTNESS,                //  "emissive_brightness" + +        DEFERRED_SHADOW_MATRIX,             //  "shadow_matrix" +        DEFERRED_ENV_MAT,                   //  "env_mat" +        DEFERRED_SHADOW_CLIP,               //  "shadow_clip" +        DEFERRED_SUN_WASH,                  //  "sun_wash" +        DEFERRED_SHADOW_NOISE,              //  "shadow_noise" +        DEFERRED_BLUR_SIZE,                 //  "blur_size" +        DEFERRED_SSAO_RADIUS,               //  "ssao_radius" +        DEFERRED_SSAO_MAX_RADIUS,           //  "ssao_max_radius" +        DEFERRED_SSAO_FACTOR,               //  "ssao_factor" +        DEFERRED_SSAO_FACTOR_INV,           //  "ssao_factor_inv" +        DEFERRED_SSAO_EFFECT_MAT,           //  "ssao_effect_mat" +        DEFERRED_SCREEN_RES,                //  "screen_res" +        DEFERRED_NEAR_CLIP,                 //  "near_clip" +        DEFERRED_SHADOW_OFFSET,             //  "shadow_offset" +        DEFERRED_SHADOW_BIAS,               //  "shadow_bias" +        DEFERRED_SPOT_SHADOW_BIAS,          //  "spot_shadow_bias" +        DEFERRED_SPOT_SHADOW_OFFSET,        //  "spot_shadow_offset" +        DEFERRED_SUN_DIR,                   //  "sun_dir" +        DEFERRED_MOON_DIR,                  //  "moon_dir" +        DEFERRED_SHADOW_RES,                //  "shadow_res" +        DEFERRED_PROJ_SHADOW_RES,           //  "proj_shadow_res" +        DEFERRED_DEPTH_CUTOFF,              //  "depth_cutoff" +        DEFERRED_NORM_CUTOFF,               //  "norm_cutoff" +        DEFERRED_SHADOW_TARGET_WIDTH,       //  "shadow_target_width" + +        FXAA_TC_SCALE,                      //  "tc_scale" +        FXAA_RCP_SCREEN_RES,                //  "rcp_screen_res" +        FXAA_RCP_FRAME_OPT,                 //  "rcp_frame_opt" +        FXAA_RCP_FRAME_OPT2,                //  "rcp_frame_opt2" + +        DOF_FOCAL_DISTANCE,                 //  "focal_distance" +        DOF_BLUR_CONSTANT,                  //  "blur_constant" +        DOF_TAN_PIXEL_ANGLE,                //  "tan_pixel_angle" +        DOF_MAGNIFICATION,                  //  "magnification" +        DOF_MAX_COF,                        //  "max_cof" +        DOF_RES_SCALE,                      //  "res_scale" +        DOF_WIDTH,                          //  "dof_width" +        DOF_HEIGHT,                         //  "dof_height" + +        DEFERRED_DEPTH,                     //  "depthMap" +        DEFERRED_SHADOW0,                   //  "shadowMap0" +        DEFERRED_SHADOW1,                   //  "shadowMap1" +        DEFERRED_SHADOW2,                   //  "shadowMap2" +        DEFERRED_SHADOW3,                   //  "shadowMap3" +        DEFERRED_SHADOW4,                   //  "shadowMap4" +        DEFERRED_SHADOW5,                   //  "shadowMap5" +        DEFERRED_NORMAL,                    //  "normalMap" +        DEFERRED_POSITION,                  //  "positionMap" +        DEFERRED_DIFFUSE,                   //  "diffuseRect" +        DEFERRED_SPECULAR,                  //  "specularRect" +        DEFERRED_NOISE,                     //  "noiseMap" +        DEFERRED_LIGHTFUNC,                 //  "lightFunc" +        DEFERRED_LIGHT,                     //  "lightMap" +        DEFERRED_BLOOM,                     //  "bloomMap" +        DEFERRED_PROJECTION,                //  "projectionMap" +        DEFERRED_NORM_MATRIX,               //  "norm_mat" +        TEXTURE_GAMMA,                      //  "texture_gamma" +        SPECULAR_COLOR,                     //  "specular_color" +        ENVIRONMENT_INTENSITY,              //  "env_intensity" + +        AVATAR_MATRIX,                      //  "matrixPalette" +        AVATAR_TRANSLATION,                 //  "translationPalette" + +        WATER_SCREENTEX,                    //  "screenTex" +        WATER_SCREENDEPTH,                  //  "screenDepth" +        WATER_REFTEX,                       //  "refTex" +        WATER_EYEVEC,                       //  "eyeVec" +        WATER_TIME,                         //  "time" +        WATER_WAVE_DIR1,                    //  "waveDir1" +        WATER_WAVE_DIR2,                    //  "waveDir2" +        WATER_LIGHT_DIR,                    //  "lightDir" +        WATER_SPECULAR,                     //  "specular" +        WATER_SPECULAR_EXP,                 //  "lightExp" +        WATER_FOGCOLOR,                     //  "waterFogColor" +        WATER_FOGDENSITY,                   //  "waterFogDensity" +        WATER_FOGKS,                        //  "waterFogKS" +        WATER_REFSCALE,                     //  "refScale" +        WATER_WATERHEIGHT,                  //  "waterHeight" +        WATER_WATERPLANE,                   //  "waterPlane" +        WATER_NORM_SCALE,                   //  "normScale" +        WATER_FRESNEL_SCALE,                //  "fresnelScale" +        WATER_FRESNEL_OFFSET,               //  "fresnelOffset" +        WATER_BLUR_MULTIPLIER,              //  "blurMultiplier" +        WATER_SUN_ANGLE,                    //  "sunAngle" +        WATER_SCALED_ANGLE,                 //  "scaledAngle" +        WATER_SUN_ANGLE2,                   //  "sunAngle2" + +        WL_CAMPOSLOCAL,                     //  "camPosLocal" + +        AVATAR_WIND,                        //  "gWindDir" +        AVATAR_SINWAVE,                     //  "gSinWaveParams" +        AVATAR_GRAVITY,                     //  "gGravity" + +        TERRAIN_DETAIL0,                    //  "detail_0" +        TERRAIN_DETAIL1,                    //  "detail_1" +        TERRAIN_DETAIL2,                    //  "detail_2" +        TERRAIN_DETAIL3,                    //  "detail_3" +        TERRAIN_ALPHARAMP,                  //  "alpha_ramp" + +        SHINY_ORIGIN,                       //  "origin" +        DISPLAY_GAMMA,                      //  "display_gamma" + +        INSCATTER_RT,                       //  "inscatter" +        SUN_SIZE,                           //  "sun_size" +        FOG_COLOR,                          //  "fog_color"          // precomputed textures -        TRANSMITTANCE_TEX, -        SCATTER_TEX, -        SINGLE_MIE_SCATTER_TEX, -        ILLUMINANCE_TEX, -        BLEND_FACTOR, - -        NO_ATMO, -        MOISTURE_LEVEL, -        DROPLET_RADIUS, -        ICE_LEVEL, -        RAINBOW_MAP, -        HALO_MAP, - -        MOON_BRIGHTNESS, - -        CLOUD_VARIANCE, - -        SH_INPUT_L1R, -        SH_INPUT_L1G, -        SH_INPUT_L1B, - -        SUN_MOON_GLOW_FACTOR, -        WATER_EDGE_FACTOR, -        SUN_UP_FACTOR, -        MOONLIGHT_COLOR, -		END_RESERVED_UNIFORMS -	} eGLSLReservedUniforms; +        TRANSMITTANCE_TEX,                  //  "transmittance_texture" +        SCATTER_TEX,                        //  "scattering_texture" +        SINGLE_MIE_SCATTER_TEX,             //  "single_mie_scattering_texture" +        ILLUMINANCE_TEX,                    //  "irradiance_texture" +        BLEND_FACTOR,                       //  "blend_factor" + +        NO_ATMO,                            //  "no_atmo" +        MOISTURE_LEVEL,                     //  "moisture_level" +        DROPLET_RADIUS,                     //  "droplet_radius" +        ICE_LEVEL,                          //  "ice_level" +        RAINBOW_MAP,                        //  "rainbow_map" +        HALO_MAP,                           //  "halo_map" + +        MOON_BRIGHTNESS,                    //  "moon_brightness" + +        CLOUD_VARIANCE,                     //  "cloud_variance" + +        SH_INPUT_L1R,                       //  "sh_input_r" +        SH_INPUT_L1G,                       //  "sh_input_g" +        SH_INPUT_L1B,                       //  "sh_input_b" + +        SUN_MOON_GLOW_FACTOR,               //  "sun_moon_glow_factor" +        WATER_EDGE_FACTOR,                  //  "water_edge" +        SUN_UP_FACTOR,                      //  "sun_up_factor" +        MOONLIGHT_COLOR,                    //  "moonlight_color" +        END_RESERVED_UNIFORMS +    } eGLSLReservedUniforms; +    // clang-format on  	// singleton pattern implementation  	static LLShaderMgr * instance(); diff --git a/indra/llrender/llvertexbuffer.h b/indra/llrender/llvertexbuffer.h index 9867bd16d6..dbe1a3687f 100644 --- a/indra/llrender/llvertexbuffer.h +++ b/indra/llrender/llvertexbuffer.h @@ -155,9 +155,8 @@ public:  	//get the size of a buffer with the given typemask and vertex count  	//fill offsets with the offset of each vertex component array into the buffer  	// indexed by the following enum -	static S32 calcOffsets(const U32& typemask, S32* offsets, S32 num_vertices);		 +	static S32 calcOffsets(const U32& typemask, S32* offsets, S32 num_vertices); -	  	//WARNING -- when updating these enums you MUST   	// 1 - update LLVertexBuffer::sTypeSize  	// 2 - add a strider accessor @@ -165,24 +164,28 @@ public:  	// 4 - modify LLVertexBuffer::setupClientArray  	// 5 - modify LLViewerShaderMgr::mReservedAttribs  	// 6 - update LLVertexBuffer::setupVertexArray -	enum { -		TYPE_VERTEX = 0, -		TYPE_NORMAL, -		TYPE_TEXCOORD0, -		TYPE_TEXCOORD1, -		TYPE_TEXCOORD2, -		TYPE_TEXCOORD3, -		TYPE_COLOR, -		TYPE_EMISSIVE, -		TYPE_TANGENT, -		TYPE_WEIGHT, -		TYPE_WEIGHT4, -		TYPE_CLOTHWEIGHT, -		TYPE_TEXTURE_INDEX, -		TYPE_MAX,   // TYPE_MAX is the size/boundary marker for attributes that go in the vertex buffer -		TYPE_INDEX,	// TYPE_INDEX is beyond _MAX because it lives in a separate (index) buffer	 -	}; -	enum { + +    // clang-format off +    enum {                      // Shader attribute name, set in LLShaderMgr::initAttribsAndUniforms() +        TYPE_VERTEX = 0,        //  "position" +        TYPE_NORMAL,            //  "normal" +        TYPE_TEXCOORD0,         //  "texcoord0" +        TYPE_TEXCOORD1,         //  "texcoord1" +        TYPE_TEXCOORD2,         //  "texcoord2" +        TYPE_TEXCOORD3,         //  "texcoord3" +        TYPE_COLOR,             //  "diffuse_color" +        TYPE_EMISSIVE,          //  "emissive" +        TYPE_TANGENT,           //  "tangent" +        TYPE_WEIGHT,            //  "weight" +        TYPE_WEIGHT4,           //  "weight4" +        TYPE_CLOTHWEIGHT,       //  "clothing" +        TYPE_TEXTURE_INDEX,     //  "texture_index" +        TYPE_MAX,   // TYPE_MAX is the size/boundary marker for attributes that go in the vertex buffer +        TYPE_INDEX,	// TYPE_INDEX is beyond _MAX because it lives in a separate (index) buffer	 +    }; +    // clang-format on + +    enum {  		MAP_VERTEX = (1<<TYPE_VERTEX),  		MAP_NORMAL = (1<<TYPE_NORMAL),  		MAP_TEXCOORD0 = (1<<TYPE_TEXCOORD0),  | 
