Merged in euclid-14098 (pull request #762)
SL-14098, enable occlusion culling during reflection pass Approved-by: Michael Pohoreskimaster
commit
7cdaebaefe
|
|
@ -337,7 +337,8 @@ void LLDrawPoolWater::render(S32 pass)
|
|||
// for low end hardware
|
||||
void LLDrawPoolWater::renderOpaqueLegacyWater()
|
||||
{
|
||||
LLVOSky *voskyp = gSky.mVOSkyp;
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
LLVOSky *voskyp = gSky.mVOSkyp;
|
||||
|
||||
LLGLSLShader* shader = NULL;
|
||||
if (LLGLSLShader::sNoFixedFunction)
|
||||
|
|
@ -444,6 +445,7 @@ void LLDrawPoolWater::renderOpaqueLegacyWater()
|
|||
|
||||
void LLDrawPoolWater::renderReflection(LLFace* face)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
LLVOSky *voskyp = gSky.mVOSkyp;
|
||||
|
||||
if (!voskyp)
|
||||
|
|
@ -472,6 +474,7 @@ void LLDrawPoolWater::renderReflection(LLFace* face)
|
|||
|
||||
void LLDrawPoolWater::shade2(bool edge, LLGLSLShader* shader, const LLColor3& light_diffuse, const LLVector3& light_dir, F32 light_exp)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
F32 water_height = LLEnvironment::instance().getWaterHeight();
|
||||
F32 camera_height = LLViewerCamera::getInstance()->getOrigin().mV[2];
|
||||
F32 eyedepth = camera_height - water_height;
|
||||
|
|
@ -680,7 +683,8 @@ void LLDrawPoolWater::shade2(bool edge, LLGLSLShader* shader, const LLColor3& li
|
|||
|
||||
void LLDrawPoolWater::shade()
|
||||
{
|
||||
if (!deferred_render)
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
if (!deferred_render)
|
||||
{
|
||||
gGL.setColorMask(true, true);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1231,7 +1231,8 @@ void LLPipeline::releaseShadowTargets()
|
|||
|
||||
void LLPipeline::createGLBuffers()
|
||||
{
|
||||
stop_glerror();
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
stop_glerror();
|
||||
assertInitialized();
|
||||
|
||||
updateRenderDeferred();
|
||||
|
|
@ -1384,7 +1385,7 @@ void LLPipeline::restoreGL()
|
|||
if (part)
|
||||
{
|
||||
part->restoreGL();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2428,8 +2429,7 @@ void LLPipeline::updateCull(LLCamera& camera, LLCullResult& result, S32 water_cl
|
|||
LLVOCachePartition* vo_part = region->getVOCachePartition();
|
||||
if(vo_part)
|
||||
{
|
||||
bool do_occlusion_cull = can_use_occlusion && use_occlusion && !gUseWireframe && 0 > water_clip /* && !gViewerWindow->getProgressView()->getVisible()*/;
|
||||
do_occlusion_cull &= !sReflectionRender;
|
||||
bool do_occlusion_cull = can_use_occlusion && use_occlusion && !gUseWireframe; // && 0 > water_clip
|
||||
vo_part->cull(camera, do_occlusion_cull);
|
||||
}
|
||||
}
|
||||
|
|
@ -2629,7 +2629,8 @@ void LLPipeline::doOcclusion(LLCamera& camera, LLRenderTarget& source, LLRenderT
|
|||
|
||||
void LLPipeline::doOcclusion(LLCamera& camera)
|
||||
{
|
||||
if (LLPipeline::sUseOcclusion > 1 && !LLSpatialPartition::sTeleportRequested &&
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
if (LLPipeline::sUseOcclusion > 1 && !LLSpatialPartition::sTeleportRequested &&
|
||||
(sCull->hasOcclusionGroups() || LLVOCachePartition::sNeedsOcclusionCheck))
|
||||
{
|
||||
LLVertexBuffer::unbind();
|
||||
|
|
@ -3422,7 +3423,8 @@ void LLPipeline::stateSort(LLSpatialGroup* group, LLCamera& camera)
|
|||
|
||||
void LLPipeline::stateSort(LLSpatialBridge* bridge, LLCamera& camera, BOOL fov_changed)
|
||||
{
|
||||
if (bridge->getSpatialGroup()->changeLOD() || fov_changed)
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
if (bridge->getSpatialGroup()->changeLOD() || fov_changed)
|
||||
{
|
||||
bool force_update = false;
|
||||
bridge->updateDistance(camera, force_update);
|
||||
|
|
@ -3431,7 +3433,8 @@ void LLPipeline::stateSort(LLSpatialBridge* bridge, LLCamera& camera, BOOL fov_c
|
|||
|
||||
void LLPipeline::stateSort(LLDrawable* drawablep, LLCamera& camera)
|
||||
{
|
||||
if (!drawablep
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
if (!drawablep
|
||||
|| drawablep->isDead()
|
||||
|| !hasRenderType(drawablep->getRenderType()))
|
||||
{
|
||||
|
|
@ -4708,7 +4711,8 @@ void LLPipeline::renderGeomPostDeferred(LLCamera& camera, bool do_occlusion)
|
|||
|
||||
void LLPipeline::renderGeomShadow(LLCamera& camera)
|
||||
{
|
||||
U32 cur_type = 0;
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
U32 cur_type = 0;
|
||||
|
||||
LLGLEnable cull(GL_CULL_FACE);
|
||||
|
||||
|
|
@ -8388,6 +8392,7 @@ static LLTrace::BlockTimerStatHandle FTM_DEFERRED_LIGHTING("Deferred Lighting");
|
|||
|
||||
void LLPipeline::renderDeferredLighting(LLRenderTarget *screen_target)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
if (!sCull)
|
||||
{
|
||||
return;
|
||||
|
|
@ -9200,6 +9205,7 @@ inline float sgn(float a)
|
|||
|
||||
void LLPipeline::generateWaterReflection(LLCamera& camera_in)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
if (LLPipeline::sWaterReflections && assertInitialized() && LLDrawPoolWater::sNeedsReflectionUpdate)
|
||||
{
|
||||
bool skip_avatar_update = false;
|
||||
|
|
@ -9254,11 +9260,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
|
|||
water_clip = -1;
|
||||
}
|
||||
|
||||
S32 occlusion = LLPipeline::sUseOcclusion;
|
||||
|
||||
//disable occlusion culling for reflection map for now
|
||||
LLPipeline::sUseOcclusion = 0;
|
||||
|
||||
if (!camera_is_underwater)
|
||||
{
|
||||
//generate planar reflection map
|
||||
|
|
@ -9374,8 +9375,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
|
|||
set_current_modelview(saved_modelview);
|
||||
}
|
||||
|
||||
//LLPipeline::sUseOcclusion = occlusion;
|
||||
|
||||
camera.setOrigin(camera_in.getOrigin());
|
||||
//render distortion map
|
||||
static bool last_update = true;
|
||||
|
|
@ -9470,7 +9469,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
|
|||
|
||||
gPipeline.popRenderTypeMask();
|
||||
|
||||
LLPipeline::sUseOcclusion = occlusion;
|
||||
LLPipeline::sUnderWaterRender = false;
|
||||
LLPipeline::sReflectionRender = false;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue