V2 spatial partition, and all the pipeline changes that go with it.
Note: Deferred mode is not finished, and thus broken. Don't use!
This commit is contained in:
@@ -131,6 +131,7 @@ void display_startup()
|
||||
return;
|
||||
}
|
||||
|
||||
gPipeline.updateGL();
|
||||
LLGLSDefault gls_default;
|
||||
|
||||
// Required for HTML update in login screen
|
||||
@@ -706,6 +707,8 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
|
||||
gPipeline.generateSunShadow(*LLViewerCamera::getInstance());
|
||||
}
|
||||
|
||||
LLVertexBuffer::unbind();
|
||||
|
||||
LLGLState::checkStates();
|
||||
LLGLState::checkTextureChannels();
|
||||
LLGLState::checkClientArrays();
|
||||
@@ -782,6 +785,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
|
||||
LLAppViewer::instance()->pingMainloopTimeout("Display:StateSort");
|
||||
{
|
||||
gFrameStats.start(LLFrameStats::STATE_SORT);
|
||||
gPipeline.sAllowRebuildPriorityGroup = TRUE ;
|
||||
gPipeline.stateSort(*LLViewerCamera::getInstance(), result);
|
||||
stop_glerror();
|
||||
|
||||
@@ -866,6 +870,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
|
||||
if (LLPipeline::sRenderDeferred && !LLPipeline::sUnderWaterRender)
|
||||
{
|
||||
gPipeline.mDeferredScreen.bindTarget();
|
||||
glClearColor(0,0,0,0);
|
||||
gPipeline.mDeferredScreen.clear();
|
||||
}
|
||||
else
|
||||
@@ -932,6 +937,8 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
|
||||
render_ui();
|
||||
}
|
||||
|
||||
gPipeline.rebuildGroups();
|
||||
|
||||
LLSpatialGroup::sNoDelete = FALSE;
|
||||
}
|
||||
|
||||
@@ -980,9 +987,10 @@ void render_hud_attachments()
|
||||
bool render_particles = gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_PARTICLES) && gSavedSettings.getBOOL("RenderHUDParticles");
|
||||
|
||||
//only render hud objects
|
||||
U32 mask = gPipeline.getRenderTypeMask();
|
||||
gPipeline.pushRenderTypeMask();
|
||||
|
||||
// turn off everything
|
||||
gPipeline.setRenderTypeMask(0);
|
||||
gPipeline.andRenderTypeMask(LLPipeline::END_RENDER_TYPES);
|
||||
// turn on HUD
|
||||
gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_HUD);
|
||||
// turn on HUD particles
|
||||
@@ -1009,6 +1017,7 @@ void render_hud_attachments()
|
||||
static LLCullResult result;
|
||||
LLSpatialGroup::sNoDelete = TRUE;
|
||||
|
||||
LLViewerCamera::sCurCameraID = LLViewerCamera::CAMERA_WORLD;
|
||||
gPipeline.updateCull(hud_cam, result);
|
||||
|
||||
gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_BUMP);
|
||||
@@ -1016,6 +1025,15 @@ void render_hud_attachments()
|
||||
gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_VOLUME);
|
||||
gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_ALPHA);
|
||||
gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_FULLBRIGHT);
|
||||
gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_PASS_ALPHA);
|
||||
gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_PASS_ALPHA_MASK);
|
||||
gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_PASS_BUMP);
|
||||
gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT);
|
||||
gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT_ALPHA_MASK);
|
||||
gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT_SHINY);
|
||||
gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_PASS_SHINY);
|
||||
gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_PASS_INVISIBLE);
|
||||
gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_PASS_INVISI_SHINY);
|
||||
|
||||
gPipeline.stateSort(hud_cam, result);
|
||||
|
||||
@@ -1024,8 +1042,10 @@ void render_hud_attachments()
|
||||
LLSpatialGroup::sNoDelete = FALSE;
|
||||
|
||||
render_hud_elements();
|
||||
|
||||
//restore type mask
|
||||
gPipeline.setRenderTypeMask(mask);
|
||||
gPipeline.popRenderTypeMask();
|
||||
|
||||
if (has_ui)
|
||||
{
|
||||
gPipeline.toggleRenderDebugFeature((void*) LLPipeline::RENDER_DEBUG_FEATURE_UI);
|
||||
@@ -1056,7 +1076,6 @@ BOOL setup_hud_matrices()
|
||||
S32 tile_height = llround((F32)gViewerWindow->getWindowHeight() / zoom_factor);
|
||||
int tile_y = sub_region / num_horizontal_tiles;
|
||||
int tile_x = sub_region - (tile_y * num_horizontal_tiles);
|
||||
glh::matrix4f mat;
|
||||
|
||||
whole_screen.setLeftTopAndSize(tile_x * tile_width, gViewerWindow->getWindowHeight() - (tile_y * tile_height), tile_width, tile_height);
|
||||
}
|
||||
@@ -1158,6 +1177,10 @@ void render_ui(F32 zoom_factor, int subfield)
|
||||
render_ui_3d();
|
||||
LLGLState::checkStates();
|
||||
}
|
||||
else
|
||||
{
|
||||
render_disconnected_background();
|
||||
}
|
||||
|
||||
render_ui_2d();
|
||||
LLGLState::checkStates();
|
||||
|
||||
Reference in New Issue
Block a user