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:
committed by
Bart Louwers
parent
375083b6cf
commit
9a4e0f14d0
@@ -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)); }
|
||||
|
||||
@@ -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++);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
//}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user