Put all objects normal models in a single render batch

THis speeds things up a fair bit for build plates with multiple models

CURA-7106
This commit is contained in:
Jaime van Kessel 2020-06-24 10:42:35 +02:00
parent 03e66beafd
commit b1fe4793e4
No known key found for this signature in database
GPG key ID: 3710727397403C91
2 changed files with 4 additions and 2 deletions

View file

@ -187,7 +187,9 @@ class SolidView(View):
else:
self._enabled_shader.setUniformValue("u_overhangAngle", math.cos(math.radians(0)))
disabled_batch = renderer.createRenderBatch(shader = self._disabled_shader)
normal_object_batch = renderer.createRenderBatch(shader = self._enabled_shader)
renderer.addRenderBatch(disabled_batch)
renderer.addRenderBatch(normal_object_batch)
for node in DepthFirstIterator(scene.getRoot()):
if node.render(renderer):
continue
@ -246,7 +248,7 @@ class SolidView(View):
]
renderer.queueNode(node, shader = self._support_mesh_shader, uniforms = uniforms)
else:
renderer.queueNode(node, shader = self._enabled_shader, uniforms = uniforms)
normal_object_batch.addItem(node.getWorldTransformation(copy=False), node.getMeshData(), uniforms=uniforms)
if node.callDecoration("isGroup") and Selection.isSelected(node):
renderer.queueNode(scene.getRoot(), mesh = node.getBoundingBoxMesh(), mode = RenderBatch.RenderMode.LineLoop)