summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/renderer_impl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer/renderer_impl.cpp')
-rw-r--r--src/mbgl/renderer/renderer_impl.cpp26
1 files changed, 11 insertions, 15 deletions
diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp
index 76c45aef76..640ae9bd5f 100644
--- a/src/mbgl/renderer/renderer_impl.cpp
+++ b/src/mbgl/renderer/renderer_impl.cpp
@@ -291,6 +291,15 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
observer->onWillStartRenderingFrame();
+ TransformParameters transformParams(updateParameters.transformState);
+
+ // Update all matrices and generate data that we should upload to the GPU.
+ for (const auto& entry : renderSources) {
+ if (entry.second->isEnabled()) {
+ entry.second->prepare({transformParams, updateParameters.debugOptions});
+ }
+ }
+
// Set render tiles to the render items.
for (auto& renderItem : renderItems) {
if (!renderItem.source) {
@@ -312,13 +321,11 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
bool symbolBucketsChanged = false;
const bool placementChanged = !placement->stillRecent(updateParameters.timePoint);
std::set<std::string> usedSymbolLayers;
- mat4 projMatrix;
if (placementChanged) {
placement = std::make_unique<Placement>(
updateParameters.transformState, updateParameters.mode,
updateParameters.transitionOptions, updateParameters.crossSourceCollisions,
std::move(placement));
- updateParameters.transformState.getProjMatrix(projMatrix);
}
for (auto it = layersNeedPlacement.rbegin(); it != layersNeedPlacement.rend(); ++it) {
@@ -327,7 +334,7 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
if (placementChanged) {
usedSymbolLayers.insert(layer.getID());
- placement->placeLayer(layer, projMatrix, updateParameters.debugOptions & MapDebugOptions::Collision);
+ placement->placeLayer(layer, transformParams.projMatrix, updateParameters.debugOptions & MapDebugOptions::Collision);
}
}
@@ -357,6 +364,7 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
backend,
updateParameters,
renderLight.getEvaluated(),
+ transformParams,
*staticData,
*imageManager,
*lineAtlas,
@@ -364,18 +372,6 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
parameters.symbolFadeChange = placement->symbolFadeChange(updateParameters.timePoint);
- // TODO: move this pass to before the PaintParameters initialization
- // - PREPARE PASS -------------------------------------------------------------------------------
- // Runs an initialization pass for all sources.
- {
- // Update all matrices and generate data that we should upload to the GPU.
- for (const auto& entry : renderSources) {
- if (entry.second->isEnabled()) {
- entry.second->prepare(parameters);
- }
- }
- }
-
// - UPLOAD PASS -------------------------------------------------------------------------------
// Uploads all required buffers and images before we do any actual rendering.
{