From cd17687f01420952712a500107e0f93e7ab8d5f8 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Fri, 15 Aug 2008 23:45:34 -0500 Subject: Second Life viewer sources 1.19.1.0 --- linden/indra/newview/lldrawpoolsky.cpp | 58 +++++++++++++++++++++++----------- 1 file changed, 40 insertions(+), 18 deletions(-) (limited to 'linden/indra/newview/lldrawpoolsky.cpp') diff --git a/linden/indra/newview/lldrawpoolsky.cpp b/linden/indra/newview/lldrawpoolsky.cpp index 127c5c5..ef91b58 100644 --- a/linden/indra/newview/lldrawpoolsky.cpp +++ b/linden/indra/newview/lldrawpoolsky.cpp @@ -49,7 +49,7 @@ #include "llglslshader.h" LLDrawPoolSky::LLDrawPoolSky() : - LLFacePool(POOL_SKY) + LLFacePool(POOL_SKY), mShader(NULL) { } @@ -61,6 +61,7 @@ LLDrawPool *LLDrawPoolSky::instancePool() void LLDrawPoolSky::prerender() { mVertexShaderLevel = LLShaderMgr::getVertexShaderLevel(LLShaderMgr::SHADER_ENVIRONMENT); + gSky.mVOSkyp->updateGeometry(gSky.mVOSkyp->mDrawable); } void LLDrawPoolSky::render(S32 pass) @@ -70,25 +71,45 @@ void LLDrawPoolSky::render(S32 pass) return; } + // Don't draw the sky box if we can and are rendering the WL sky dome. + if (gPipeline.canUseWindLightShaders()) + { + return; + } + + // use a shader only underwater + if(mVertexShaderLevel > 0 && LLPipeline::sUnderWaterRender) + { + mShader = &gObjectFullbrightWaterProgram; + mShader->bind(); + } + else + { + // don't use shaders! + if (gGLManager.mHasShaderObjects) + { + // Ironically, we must support shader objects to be + // able to use this call. + glUseProgramObjectARB(0); + } + mShader = NULL; + } + + LLVOSky *voskyp = gSky.mVOSkyp; LLGLSPipelineSkyBox gls_skybox; - LLGLDepthTest gls_depth(GL_FALSE, GL_FALSE); - if (gCamera->getOrigin().mV[VZ] < gAgent.getRegion()->getWaterHeight()) - //gWorldPointer->getWaterHeight()) - { - //gGLSFog.set(); - } + LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE); + + LLGLClampToFarClip far_clip(glh_get_current_projection()); + + LLGLEnable fog_enable( (mVertexShaderLevel < 1 && gCamera->cameraUnderWater()) ? GL_FOG : 0); gPipeline.disableLights(); - glMatrixMode( GL_PROJECTION ); + LLGLDisable clip(GL_CLIP_PLANE0); glPushMatrix(); - //gViewerWindow->setup3DRender(); - - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); LLVector3 origin = gCamera->getOrigin(); glTranslatef(origin.mV[0], origin.mV[1], origin.mV[2]); @@ -128,21 +149,19 @@ void LLDrawPoolSky::render(S32 pass) if (hbfaces[2]) { - renderSunHalo(hbfaces[2]); + // renderSunHalo(hbfaces[2]); } if (hbfaces[0]) { - renderHeavenlyBody(0, hbfaces[0]); + // renderHeavenlyBody(0, hbfaces[0]); } if (hbfaces[1]) { - renderHeavenlyBody(1, hbfaces[1]); + // renderHeavenlyBody(1, hbfaces[1]); } + glDisableClientState(GL_TEXTURE_COORD_ARRAY); - glMatrixMode( GL_PROJECTION ); - glPopMatrix(); - glMatrixMode( GL_MODELVIEW ); glPopMatrix(); } @@ -204,3 +223,6 @@ void LLDrawPoolSky::renderForSelect() { } +void LLDrawPoolSky::endRenderPass( S32 pass ) +{ +} -- cgit v1.1