diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 5f5f7878528bc3b9d232b29c1a0c47cd45404cec..0ed3f9e52ba6f181f4122bf4a904396b5dcf52d7 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -1286,7 +1286,7 @@ void LLPipeline::releaseGLBuffers() mBake.release(); mHighlight.release(); - for (U32 i = 0; i < 3; i++) + for (U32 i = 0; i < 2; i++) { mGlow[i].release(); } @@ -1367,9 +1367,16 @@ void LLPipeline::createGLBuffers() // allocate screen space glow buffers const U32 glow_res = llmax(1, llmin(512, 1 << gSavedSettings.getS32("RenderGlowResolutionPow"))); - for (U32 i = 0; i < 3; i++) + glClearColor(0,0,0,0); + gGL.setColorMask(true, true); + for (U32 i = 0; i < 2; i++) { - mGlow[i].allocate(512, glow_res, GL_RGBA, FALSE, FALSE); + if(mGlow[i].allocate(512,glow_res,GL_RGBA,FALSE,FALSE)) + { + mGlow[i].bindTarget(); + mGlow[i].clear(); + mGlow[i].flush(); + } } allocateScreenBuffer(resX, resY); @@ -7708,8 +7715,8 @@ void LLPipeline::renderFinalize() { { LL_RECORD_BLOCK_TIME(FTM_RENDER_BLOOM_FBO); - mGlow[2].bindTarget(); - mGlow[2].clear(); + mGlow[1].bindTarget(); + mGlow[1].clear(); } gGlowExtractProgram.bind(); @@ -7751,7 +7758,7 @@ void LLPipeline::renderFinalize() gGL.getTexUnit(0)->unbind(mScreen.getUsage()); - mGlow[2].flush(); + mGlow[1].flush(); tc1.setVec(0, 0); tc2.setVec(2, 2); @@ -7782,14 +7789,7 @@ void LLPipeline::renderFinalize() mGlow[i % 2].clear(); } - if (i == 0) - { - gGL.getTexUnit(0)->bind(&mGlow[2]); - } - else - { - gGL.getTexUnit(0)->bind(&mGlow[(i - 1) % 2]); - } + gGL.getTexUnit(0)->bind(&mGlow[(i+1)%2]); if (i % 2 == 0) { diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index 22fa0c4812041ad9377c18e17a46403a9c0091a3..7541fc64f6a9692e8dfc4ed5b54357251c0319af 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -672,7 +672,7 @@ class LLPipeline LLRenderTarget mBake; //texture for making the glow - LLRenderTarget mGlow[3]; + LLRenderTarget mGlow[2]; //noise map U32 mNoiseMap;