Drawable Renderer (#1570), Improve drawable interaction with opaquePassCutoff
This commit is contained in:
committed by
Bart Louwers
parent
87189d9534
commit
51c270495b
@@ -72,7 +72,6 @@ public:
|
||||
void setRenderPass(mbgl::RenderPass value) { renderPass = value; }
|
||||
|
||||
/// Test whether to draw this drawable in a given render pass.
|
||||
/// If multiple render pass bits are set, all must be present.
|
||||
bool hasRenderPass(const mbgl::RenderPass value) const {
|
||||
return (mbgl::underlying_type(renderPass) & mbgl::underlying_type(value)) != 0;
|
||||
}
|
||||
|
||||
@@ -42,8 +42,15 @@ void TileLayerGroupGL::render(RenderOrchestrator&, PaintParameters& parameters)
|
||||
if (!drawable.hasRenderPass(parameters.pass)) {
|
||||
return;
|
||||
}
|
||||
if (drawable.hasRenderPass(RenderPass::Opaque) && parameters.currentLayer >= parameters.opaquePassCutoff) {
|
||||
return;
|
||||
|
||||
// If this drawable can render either opaque or translucent...
|
||||
if (drawable.hasAllRenderPasses(RenderPass::Opaque | RenderPass::Translucent)) {
|
||||
// Render it only in the translucent pass if we're below the cutoff, and only in the opaque pass otherwise
|
||||
// (parameters.currentLayer >= parameters.opaquePassCutoff) ? RenderPass::Opaque : RenderPass::Translucent;
|
||||
if ((parameters.currentLayer < parameters.opaquePassCutoff && parameters.pass != RenderPass::Translucent) ||
|
||||
(parameters.currentLayer >= parameters.opaquePassCutoff && parameters.pass != RenderPass::Opaque)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
#if !defined(NDEBUG)
|
||||
|
||||
Reference in New Issue
Block a user