diff options
author | Dave Parks <davep@lindenlab.com> | 2011-10-05 15:12:02 -0500 |
---|---|---|
committer | Dave Parks <davep@lindenlab.com> | 2011-10-05 15:12:02 -0500 |
commit | 967479f9039dc358b9419be7f117162f7d90609c (patch) | |
tree | a544eeb9b449f579f03b1ba3afddeed595bda2c1 /indra/newview/llviewershadermgr.cpp | |
parent | eb809e373d2f12fd1a282401eb2ac4fbaf209f85 (diff) |
SH-2031 Fix for stall in image update -- don't use the CPU to convert a height map into a normal map -- use the GPU instead via a shader. Also, WTF glFinish?
Diffstat (limited to 'indra/newview/llviewershadermgr.cpp')
-rw-r--r-- | indra/newview/llviewershadermgr.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index 764c247f01..ac489e0caf 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -188,6 +188,7 @@ LLGLSLShader gDeferredPostNoDoFProgram; LLGLSLShader gDeferredWLSkyProgram; LLGLSLShader gDeferredWLCloudProgram; LLGLSLShader gDeferredStarProgram; +LLGLSLShader gNormalMapGenProgram; LLViewerShaderMgr::LLViewerShaderMgr() : mVertexShaderLevel(SHADER_COUNT, 0), @@ -275,6 +276,7 @@ LLViewerShaderMgr::LLViewerShaderMgr() : mShaderList.push_back(&gDeferredWLSkyProgram); mShaderList.push_back(&gDeferredWLCloudProgram); mShaderList.push_back(&gDeferredStarProgram); + mShaderList.push_back(&gNormalMapGenProgram); } LLViewerShaderMgr::~LLViewerShaderMgr() @@ -1082,6 +1084,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() gDeferredWLSkyProgram.unload(); gDeferredWLCloudProgram.unload(); gDeferredStarProgram.unload(); + gNormalMapGenProgram.unload(); return TRUE; } @@ -1532,6 +1535,17 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() success = gDeferredStarProgram.createShader(NULL, &mWLUniforms); } + if (success) + { + gNormalMapGenProgram.mName = "Normal Map Generation Program"; + gNormalMapGenProgram.mShaderFiles.clear(); + gNormalMapGenProgram.mShaderFiles.push_back(make_pair("deferred/normgenV.glsl", GL_VERTEX_SHADER_ARB)); + gNormalMapGenProgram.mShaderFiles.push_back(make_pair("deferred/normgenF.glsl", GL_FRAGMENT_SHADER_ARB)); + gNormalMapGenProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; + gNormalMapGenProgram.mShaderGroup = LLGLSLShader::SG_SKY; + success = gNormalMapGenProgram.createShader(NULL, NULL); + } + return success; } |