Try and squelch some warnings regarding nightvision post shader on amd gpus.
This commit is contained in:
@@ -335,7 +335,7 @@ public:
|
||||
LLPostProcess::LLPostProcess(void) :
|
||||
mVBO(NULL),
|
||||
mDepthTexture(0),
|
||||
mNoiseTexture(NULL),
|
||||
mNoiseTexture(0),
|
||||
mScreenWidth(0),
|
||||
mScreenHeight(0),
|
||||
mNoiseTextureScale(0.f),
|
||||
@@ -430,7 +430,10 @@ void LLPostProcess::createScreenTextures()
|
||||
stop_glerror();
|
||||
|
||||
if(mDepthTexture)
|
||||
{
|
||||
LLImageGL::deleteTextures(1, &mDepthTexture);
|
||||
mDepthTexture = 0;
|
||||
}
|
||||
|
||||
for(std::list<LLPointer<LLPostProcessShader> >::iterator it=mShaders.begin();it!=mShaders.end();++it)
|
||||
{
|
||||
@@ -457,16 +460,25 @@ void LLPostProcess::createNoiseTexture()
|
||||
}
|
||||
}
|
||||
|
||||
mNoiseTexture = new LLImageGL(FALSE) ;
|
||||
if(mNoiseTexture->createGLTexture())
|
||||
if(mNoiseTexture)
|
||||
{
|
||||
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, mNoiseTexture->getTexName());
|
||||
LLImageGL::setManualImage(GL_TEXTURE_2D, 0, GL_RED, NOISE_SIZE, NOISE_SIZE, GL_RED, GL_UNSIGNED_BYTE, &buffer[0]);
|
||||
stop_glerror();
|
||||
gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
|
||||
gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_WRAP);
|
||||
stop_glerror();
|
||||
LLImageGL::deleteTextures(1, &mNoiseTexture);
|
||||
mNoiseTexture = 0;
|
||||
}
|
||||
|
||||
LLImageGL::generateTextures(1, &mNoiseTexture);
|
||||
stop_glerror();
|
||||
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, mNoiseTexture);
|
||||
stop_glerror();
|
||||
|
||||
if(gGLManager.mGLVersion >= 4.f)
|
||||
LLImageGL::setManualImage(GL_TEXTURE_2D, 0, GL_R8, NOISE_SIZE, NOISE_SIZE, GL_RED, GL_UNSIGNED_BYTE, &buffer[0], false);
|
||||
else
|
||||
LLImageGL::setManualImage(GL_TEXTURE_2D, 0, GL_LUMINANCE8, NOISE_SIZE, NOISE_SIZE, GL_LUMINANCE, GL_UNSIGNED_BYTE, &buffer[0], false);
|
||||
stop_glerror();
|
||||
gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
|
||||
gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_WRAP);
|
||||
stop_glerror();
|
||||
}
|
||||
|
||||
void LLPostProcess::destroyGL()
|
||||
@@ -476,7 +488,9 @@ void LLPostProcess::destroyGL()
|
||||
if(mDepthTexture)
|
||||
LLImageGL::deleteTextures(1, &mDepthTexture);
|
||||
mDepthTexture=0;
|
||||
mNoiseTexture = NULL ;
|
||||
if(mNoiseTexture)
|
||||
LLImageGL::deleteTextures(1, &mNoiseTexture);
|
||||
mNoiseTexture=0 ;
|
||||
mVBO = NULL ;
|
||||
}
|
||||
|
||||
@@ -490,6 +504,7 @@ void LLPostProcess::copyFrameBuffer()
|
||||
{
|
||||
mRenderTarget[!!mRenderTarget[0].getFBO()].bindTexture(0,0);
|
||||
glCopyTexSubImage2D(GL_TEXTURE_RECTANGLE_ARB,0,0,0,0,0,mScreenWidth, mScreenHeight);
|
||||
stop_glerror();
|
||||
|
||||
if(mDepthTexture)
|
||||
{
|
||||
@@ -499,6 +514,7 @@ void LLPostProcess::copyFrameBuffer()
|
||||
{
|
||||
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_RECT_TEXTURE, mDepthTexture);
|
||||
glCopyTexSubImage2D(GL_TEXTURE_RECTANGLE_ARB,0,0,0,0,0,mScreenWidth, mScreenHeight);
|
||||
stop_glerror();
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -508,7 +524,7 @@ void LLPostProcess::copyFrameBuffer()
|
||||
|
||||
void LLPostProcess::bindNoise(U32 channel)
|
||||
{
|
||||
gGL.getTexUnit(channel)->bind(mNoiseTexture);
|
||||
gGL.getTexUnit(channel)->bindManual(LLTexUnit::TT_TEXTURE,mNoiseTexture);
|
||||
}
|
||||
|
||||
void LLPostProcess::renderEffects(unsigned int width, unsigned int height)
|
||||
@@ -531,8 +547,7 @@ void LLPostProcess::doEffects(void)
|
||||
{
|
||||
LLVertexBuffer::unbind();
|
||||
|
||||
mNoiseTextureScale = 0.001f + ((100.f - mSelectedEffectInfo["noise_size"].asFloat()) / 100.f);
|
||||
mNoiseTextureScale *= (mScreenHeight / NOISE_SIZE);
|
||||
mNoiseTextureScale = (1.f - (mSelectedEffectInfo["noise_size"].asFloat() - 1.f) *(9.f/990.f)) / (float)NOISE_SIZE;
|
||||
|
||||
/// Copy the screen buffer to the render texture
|
||||
copyFrameBuffer();
|
||||
@@ -585,13 +600,19 @@ void LLPostProcess::applyShaders(void)
|
||||
QuadType quad = (*it)->preDraw();
|
||||
while((*it)->draw(pass++))
|
||||
{
|
||||
mRenderTarget[!primary_rendertarget].bindTarget();
|
||||
LLRenderTarget& write_target = mRenderTarget[!primary_rendertarget];
|
||||
LLRenderTarget& read_target = mRenderTarget[mRenderTarget[0].getFBO() ? primary_rendertarget : !primary_rendertarget];
|
||||
write_target.bindTarget();
|
||||
|
||||
if(color_channel >= 0)
|
||||
mRenderTarget[mRenderTarget[0].getFBO() ? primary_rendertarget : !primary_rendertarget].bindTexture(0,color_channel);
|
||||
read_target.bindTexture(0,color_channel);
|
||||
|
||||
drawOrthoQuad(quad);
|
||||
mRenderTarget[!primary_rendertarget].flush();
|
||||
|
||||
if(color_channel >= 0 && !mRenderTarget[0].getFBO())
|
||||
gGL.getTexUnit(color_channel)->unbind(read_target.getUsage());
|
||||
|
||||
write_target.flush();
|
||||
if(mRenderTarget[0].getFBO())
|
||||
primary_rendertarget = !primary_rendertarget;
|
||||
}
|
||||
@@ -616,8 +637,13 @@ void LLPostProcess::drawOrthoQuad(QuadType type)
|
||||
LLStrider<LLVector2> uv2;
|
||||
mVBO->getTexCoord1Strider(uv2);
|
||||
|
||||
float offs[2] = {(float) rand() / (float) RAND_MAX, (float) rand() / (float) RAND_MAX};
|
||||
float scale[2] = {mScreenWidth * mNoiseTextureScale / mScreenHeight, mNoiseTextureScale};
|
||||
float offs[2] = {
|
||||
llround(((float) rand() / (float) RAND_MAX) * (float)NOISE_SIZE)/float(NOISE_SIZE),
|
||||
llround(((float) rand() / (float) RAND_MAX) * (float)NOISE_SIZE)/float(NOISE_SIZE) };
|
||||
float scale[2] = {
|
||||
(float)mScreenWidth * mNoiseTextureScale,
|
||||
(float)mScreenHeight * mNoiseTextureScale };
|
||||
|
||||
uv2[0] = LLVector2(offs[0],offs[1]);
|
||||
uv2[1] = LLVector2(offs[0],offs[1]+scale[1]);
|
||||
uv2[2] = LLVector2(offs[0]+scale[0],offs[1]);
|
||||
|
||||
@@ -90,7 +90,7 @@ private:
|
||||
// However this is ONLY the case if fbos are actually supported, else swapping isn't needed.
|
||||
LLRenderTarget mRenderTarget[2];
|
||||
U32 mDepthTexture;
|
||||
LLPointer<LLImageGL> mNoiseTexture ;
|
||||
U32 mNoiseTexture ;
|
||||
|
||||
U32 mScreenWidth;
|
||||
U32 mScreenHeight;
|
||||
|
||||
Reference in New Issue
Block a user