Drawable Renderer (#1570), [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci
This commit is contained in:
pre-commit-ci[bot]
2023-05-05 22:09:10 +00:00
committed by Bart Louwers
parent 375083b6cf
commit 9a4e0f14d0
5 changed files with 37 additions and 27 deletions

View File

@@ -97,11 +97,13 @@ public:
void addQuad(int16_t x0, int16_t y0, int16_t x1, int16_t y1);
/// Add already-set-up triangles directly
void addTriangles(const std::vector<std::array<int16_t,2>>& vertices,
std::size_t vertexOffset, std::size_t vertexLength,
void addTriangles(const std::vector<std::array<int16_t, 2>>& vertices,
std::size_t vertexOffset,
std::size_t vertexLength,
const std::vector<uint16_t>& indexes,
std::size_t indexOffset, std::size_t indexLength);
std::size_t indexOffset,
std::size_t indexLength);
/// Add a tweaker to be attached to each emitted drawable
void addTweaker(DrawableTweakerPtr tweaker) { tweakers.emplace_back(std::move(tweaker)); }

View File

@@ -89,22 +89,25 @@ void DrawableBuilder::addQuad(int16_t x0, int16_t y0, int16_t x1, int16_t y1) {
appendTriangle(x1, y1);
}
void DrawableBuilder::addTriangles(const std::vector<std::array<int16_t,2>>& vertices,
std::size_t vertexOffset, std::size_t vertexLength,
void DrawableBuilder::addTriangles(const std::vector<std::array<int16_t, 2>>& vertices,
std::size_t vertexOffset,
std::size_t vertexLength,
const std::vector<uint16_t>& indexes,
std::size_t indexOffset, std::size_t indexLength) {
std::size_t indexOffset,
std::size_t indexLength) {
// TODO: bulk add in `gfx::VertexVector`... or use vector directly?
//impl->vertices.insert(impl->vertices.end(),
// impl->vertices.insert(impl->vertices.end(),
// std::next(vertices.begin(), vertexOffset),
// std::next(vertices.begin(), vertexOffset + vertexLength));
//impl->indexes.insert(impl->indexes.end(),
// impl->indexes.insert(impl->indexes.end(),
// std::next(indexes.begin(), indexOffset),
// std::next(indexes.begin(), indexOffset + indexLength));
std::for_each(std::next(vertices.begin(), vertexOffset),
std::next(vertices.begin(), vertexOffset + vertexLength),
[&](const std::array<int16_t,2>& x){ impl->vertices.emplace_back(Impl::VT({{x}})); });
for (auto i = std::next(indexes.begin(), indexOffset); i != std::next(indexes.begin(), indexOffset + indexLength); ) {
[&](const std::array<int16_t, 2>& x) { impl->vertices.emplace_back(Impl::VT({{x}})); });
for (auto i = std::next(indexes.begin(), indexOffset);
i != std::next(indexes.begin(), indexOffset + indexLength);) {
impl->indexes.emplace_back(*i++, *i++, *i++);
}
}

View File

@@ -463,10 +463,10 @@ bool Context::setupDraw(const PaintParameters& parameters, const gfx::Drawable&
}
setDepthMode(parameters.depthModeForSublayer(0, drawable.getDepthType()));
if (auto tileID = drawable.getTileID()) {
// Doesn't work until the clipping masks are generated
//parameters.stencilModeForClipping(tileID->toUnwrapped());
// parameters.stencilModeForClipping(tileID->toUnwrapped());
setStencilMode(gfx::StencilMode::disabled());
} else {
setStencilMode(gfx::StencilMode::disabled());

View File

@@ -389,9 +389,10 @@ void RenderFillLayer::update(const int32_t layerIndex,
// }
std::unordered_set<OverscaledTileID> newTileIDs(renderTiles->size());
std::transform(renderTiles->begin(), renderTiles->end(),
std::transform(renderTiles->begin(),
renderTiles->end(),
std::inserter(newTileIDs, newTileIDs.begin()),
[](const auto& renderTile)->OverscaledTileID{ return renderTile.get().getOverscaledTileID(); });
[](const auto& renderTile) -> OverscaledTileID { return renderTile.get().getOverscaledTileID(); });
// For each existing tile drawable...
for (auto iter = tileDrawables.begin(); iter != tileDrawables.end();) {
@@ -420,7 +421,7 @@ void RenderFillLayer::update(const int32_t layerIndex,
// parameters.renderTileClippingMasks(renderTiles);
for (const RenderTile& tile : *renderTiles) {
const auto& tileID = tile.getOverscaledTileID();
const auto result = tileDrawables.insert(std::make_pair(tileID, gfx::DrawablePtr()));
if (!result.second) {
// Already present
@@ -433,27 +434,32 @@ void RenderFillLayer::update(const int32_t layerIndex,
continue;
}
auto& bucket = static_cast<FillBucket&>(*renderData->bucket);
//const auto& evaluated = getEvaluated<FillLayerProperties>(renderData->layerProperties);
// const auto& evaluated = getEvaluated<FillLayerProperties>(renderData->layerProperties);
if (!builder) {
builder = context.createDrawableBuilder("fill");
builder->setShader(shader);
builder->addTweaker(context.createDrawableTweaker());
//builder->setColor(color);
// builder->setColor(color);
builder->setColorMode(gfx::DrawableBuilder::ColorMode::PerDrawable);
builder->setDepthType(gfx::DepthMaskType::ReadWrite);
builder->setLayerIndex(layerIndex);
}
const std::vector<gfx::VertexVector<gfx::detail::VertexType<gfx::AttributeType<int16_t, 2>>>::Vertex>& verts = bucket.vertices.vector();
const std::vector<gfx::VertexVector<gfx::detail::VertexType<gfx::AttributeType<int16_t, 2>>>::Vertex>&
verts = bucket.vertices.vector();
std::vector<std::array<int16_t, 2>> rawVerts(verts.size());
std::transform(verts.begin(), verts.end(), rawVerts.begin(), [](const auto& x){ return x.a1; });
std::transform(verts.begin(), verts.end(), rawVerts.begin(), [](const auto& x) { return x.a1; });
for (const auto& seg : bucket.triangleSegments) {
builder->addTriangles(rawVerts, seg.vertexOffset, seg.vertexLength,
bucket.triangles.vector(), seg.indexOffset, seg.indexLength);
builder->addTriangles(rawVerts,
seg.vertexOffset,
seg.vertexLength,
bucket.triangles.vector(),
seg.indexOffset,
seg.indexLength);
}
// evaluated.get<FillTranslate>(),
// evaluated.get<FillTranslateAnchor>(),
// parameters.stencilModeForClipping(tile.id),
@@ -485,7 +491,7 @@ void RenderFillLayer::update(const int32_t layerIndex,
// }
builder->flush();
auto drawables = builder->clearDrawables();
if (!drawables.empty()) {
auto& drawable = drawables[0];
@@ -496,7 +502,6 @@ void RenderFillLayer::update(const int32_t layerIndex,
// Log::Warning(Event::General, "Adding drawable for " + util::toString(tileID) + " total " +
// std::to_string(stats.tileDrawablesAdded+1));
}
}
} else {
// if (parameters.pass != RenderPass::Translucent) {

View File

@@ -211,7 +211,7 @@ void Renderer::Impl::render(const RenderTree& renderTree) {
const auto debugGroup(parameters.renderPass->createDebugGroup("drawables"));
// TODO: Render tile masks
//for (auto& layer : renderLayers) {
// for (auto& layer : renderLayers) {
// parameters.renderTileClippingMasks(renderTiles);
//}