Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2019-02-14 22:24:13 +0300
committerClément Foucault <foucault.clem@gmail.com>2019-02-18 16:17:57 +0300
commit9ab99ff26b57b2f0c898356d365636697d67e345 (patch)
treeec792dde760c6af0346693a161a34c3c44a0a123 /source/blender/blenkernel/intern/pbvh.c
parent2cccffd20b67beecb5743e8871dbda779d1e03f1 (diff)
Sculpt Draw: Add support for wireframe geometry
This introduce the wireframe batches. Creating the indices buffer does not seems to slow down the sculpt in my testing (but it is kind of hard to test reliably) This includes a bit of cleanup in gpu_buffers.c.
Diffstat (limited to 'source/blender/blenkernel/intern/pbvh.c')
-rw-r--r--source/blender/blenkernel/intern/pbvh.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/source/blender/blenkernel/intern/pbvh.c b/source/blender/blenkernel/intern/pbvh.c
index 45a0872bdc5..69617a354a9 100644
--- a/source/blender/blenkernel/intern/pbvh.c
+++ b/source/blender/blenkernel/intern/pbvh.c
@@ -2049,6 +2049,7 @@ struct PBVHNodeDrawCallbackData {
void *user_data;
bool fast;
bool only_mask; /* Only draw nodes that have mask data. */
+ bool wires;
};
static void pbvh_node_draw_cb(PBVHNode *node, void *data_v)
@@ -2056,11 +2057,11 @@ static void pbvh_node_draw_cb(PBVHNode *node, void *data_v)
struct PBVHNodeDrawCallbackData *data = data_v;
if (!(node->flag & PBVH_FullyHidden)) {
- GPUBatch *triangles = GPU_pbvh_buffers_batch_get(node->draw_buffers, data->fast);
+ GPUBatch *batch = GPU_pbvh_buffers_batch_get(node->draw_buffers, data->fast, data->wires);
bool show_mask = GPU_pbvh_buffers_has_mask(node->draw_buffers);
if (!data->only_mask || show_mask) {
- if (triangles != NULL) {
- data->draw_fn(data->user_data, triangles);
+ if (batch != NULL) {
+ data->draw_fn(data->user_data, batch);
}
}
}
@@ -2070,12 +2071,13 @@ static void pbvh_node_draw_cb(PBVHNode *node, void *data_v)
* Version of #BKE_pbvh_draw that runs a callback.
*/
void BKE_pbvh_draw_cb(
- PBVH *bvh, float (*planes)[4], float (*fnors)[3], bool fast, bool only_mask,
+ PBVH *bvh, float (*planes)[4], float (*fnors)[3], bool fast, bool wires, bool only_mask,
void (*draw_fn)(void *user_data, GPUBatch *batch), void *user_data)
{
struct PBVHNodeDrawCallbackData draw_data = {
.only_mask = only_mask,
.fast = fast,
+ .wires = wires,
.draw_fn = draw_fn,
.user_data = user_data,
};