[Bf-blender-cvs] [31fb6c1d8f1] greasepencil-object: Merge branch 'master' into gp_stencil
Antonioya
noreply at git.blender.org
Sat Jun 22 17:56:45 CEST 2019
Commit: 31fb6c1d8f1a1b4e376b753072da0d535ef4010b
Author: Antonioya
Date: Sat Jun 22 16:56:25 2019 +0200
Branches: greasepencil-object
https://developer.blender.org/rB31fb6c1d8f1a1b4e376b753072da0d535ef4010b
Merge branch 'master' into gp_stencil
Conflicts:
source/blender/draw/engines/gpencil/gpencil_draw_utils.c
source/blender/draw/engines/gpencil/gpencil_engine.c
===================================================================
===================================================================
diff --cc source/blender/draw/engines/gpencil/gpencil_draw_utils.c
index eca6b0bfb23,1b8684c66df..450c978ccf0
--- a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
+++ b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
@@@ -1552,24 -1537,14 +1552,17 @@@ void DRW_gpencil_populate_buffer_stroke
false,
1.0f,
(const int *)stl->storage->shade_render);
+ /* Disable stencil for this type */
+ DRW_shgroup_state_disable(stl->g_data->shgrps_drawing_stroke,
+ DRW_STATE_WRITE_STENCIL | DRW_STATE_STENCIL_NEQUAL);
}
- /* clean previous version of the batch */
- if (stl->storage->buffer_stroke) {
- GPU_BATCH_DISCARD_SAFE(e_data->batch_buffer_stroke);
- MEM_SAFE_FREE(e_data->batch_buffer_stroke);
- stl->storage->buffer_stroke = false;
- }
-
/* use unit matrix because the buffer is in screen space and does not need conversion */
if (gpd->runtime.mode == GP_STYLE_MODE_LINE) {
- e_data->batch_buffer_stroke = DRW_gpencil_get_buffer_stroke_geom(gpd, lthick);
+ stl->g_data->batch_buffer_stroke = DRW_gpencil_get_buffer_stroke_geom(gpd, lthick);
}
else {
- e_data->batch_buffer_stroke = DRW_gpencil_get_buffer_point_geom(gpd, lthick);
+ stl->g_data->batch_buffer_stroke = DRW_gpencil_get_buffer_point_geom(gpd, lthick);
}
/* buffer strokes, must show stroke always */
@@@ -1586,21 -1562,10 +1580,13 @@@
}
stl->g_data->shgrps_drawing_fill = DRW_shgroup_create(e_data->gpencil_drawing_fill_sh,
psl->drawing_pass);
+ /* Disable stencil for this type */
+ DRW_shgroup_state_disable(stl->g_data->shgrps_drawing_stroke,
+ DRW_STATE_WRITE_STENCIL | DRW_STATE_STENCIL_NEQUAL);
- /* clean previous version of the batch */
- if (stl->storage->buffer_fill) {
- GPU_BATCH_DISCARD_SAFE(e_data->batch_buffer_fill);
- MEM_SAFE_FREE(e_data->batch_buffer_fill);
- stl->storage->buffer_fill = false;
- }
- e_data->batch_buffer_fill = DRW_gpencil_get_buffer_fill_geom(gpd);
- DRW_shgroup_call(stl->g_data->shgrps_drawing_fill, e_data->batch_buffer_fill, NULL);
- stl->storage->buffer_fill = true;
+ stl->g_data->batch_buffer_fill = DRW_gpencil_get_buffer_fill_geom(gpd);
+ DRW_shgroup_call(stl->g_data->shgrps_drawing_fill, stl->g_data->batch_buffer_fill, NULL);
}
- stl->storage->buffer_stroke = true;
}
}
}
diff --cc source/blender/draw/engines/gpencil/gpencil_engine.c
index 6b53ff83b88,916f2eed575..1117b9d241f
--- a/source/blender/draw/engines/gpencil/gpencil_engine.c
+++ b/source/blender/draw/engines/gpencil/gpencil_engine.c
@@@ -118,19 -120,19 +120,19 @@@ static void GPENCIL_create_framebuffers
/* Framebufers for basic object drawing */
if (stl->storage->framebuffer_flag & GP_FRAMEBUFFER_BASIC) {
/* temp textures for ping-pong buffers */
- e_data.temp_depth_tx_a = DRW_texture_pool_query_2d(
+ stl->g_data->temp_depth_tx_a = DRW_texture_pool_query_2d(
- size[0], size[1], GPU_DEPTH_COMPONENT24, &draw_engine_gpencil_type);
+ size[0], size[1], GPU_DEPTH24_STENCIL8, &draw_engine_gpencil_type);
- e_data.temp_color_tx_a = DRW_texture_pool_query_2d(
+ stl->g_data->temp_color_tx_a = DRW_texture_pool_query_2d(
size[0], size[1], fb_format, &draw_engine_gpencil_type);
GPU_framebuffer_ensure_config(&fbl->temp_fb_a,
{
- GPU_ATTACHMENT_TEXTURE(e_data.temp_depth_tx_a),
- GPU_ATTACHMENT_TEXTURE(e_data.temp_color_tx_a),
+ GPU_ATTACHMENT_TEXTURE(stl->g_data->temp_depth_tx_a),
+ GPU_ATTACHMENT_TEXTURE(stl->g_data->temp_color_tx_a),
});
- e_data.temp_depth_tx_b = DRW_texture_pool_query_2d(
+ stl->g_data->temp_depth_tx_b = DRW_texture_pool_query_2d(
- size[0], size[1], GPU_DEPTH_COMPONENT24, &draw_engine_gpencil_type);
+ size[0], size[1], GPU_DEPTH24_STENCIL8, &draw_engine_gpencil_type);
- e_data.temp_color_tx_b = DRW_texture_pool_query_2d(
+ stl->g_data->temp_color_tx_b = DRW_texture_pool_query_2d(
size[0], size[1], fb_format, &draw_engine_gpencil_type);
GPU_framebuffer_ensure_config(&fbl->temp_fb_b,
{
@@@ -139,9 -141,9 +141,9 @@@
});
/* used for FX effects and Layer blending */
- e_data.temp_depth_tx_fx = DRW_texture_pool_query_2d(
+ stl->g_data->temp_depth_tx_fx = DRW_texture_pool_query_2d(
- size[0], size[1], GPU_DEPTH_COMPONENT24, &draw_engine_gpencil_type);
+ size[0], size[1], GPU_DEPTH24_STENCIL8, &draw_engine_gpencil_type);
- e_data.temp_color_tx_fx = DRW_texture_pool_query_2d(
+ stl->g_data->temp_color_tx_fx = DRW_texture_pool_query_2d(
size[0], size[1], fb_format, &draw_engine_gpencil_type);
GPU_framebuffer_ensure_config(&fbl->temp_fb_fx,
{
@@@ -150,18 -152,25 +152,25 @@@
});
}
- /* background framebuffer to speed up drawing process (always 16 bits) */
+ /* background framebuffer to speed up drawing process */
if (stl->storage->framebuffer_flag & GP_FRAMEBUFFER_DRAW) {
- e_data.background_depth_tx = DRW_texture_pool_query_2d(
- size[0], size[1], GPU_DEPTH24_STENCIL8, &draw_engine_gpencil_type);
- e_data.background_color_tx = DRW_texture_pool_query_2d(
- size[0], size[1], GPU_RGBA32F, &draw_engine_gpencil_type);
+ if (txl->background_color_tx == NULL) {
+ stl->storage->background_ready = false;
+ }
+ DRW_texture_ensure_2d(
- &txl->background_depth_tx, size[0], size[1], GPU_DEPTH_COMPONENT24, DRW_TEX_FILTER);
++ &txl->background_depth_tx, size[0], size[1], GPU_DEPTH24_STENCIL8, DRW_TEX_FILTER);
+ DRW_texture_ensure_2d(
+ &txl->background_color_tx, size[0], size[1], GPU_RGBA16F, DRW_TEX_FILTER);
GPU_framebuffer_ensure_config(&fbl->background_fb,
{
- GPU_ATTACHMENT_TEXTURE(e_data.background_depth_tx),
- GPU_ATTACHMENT_TEXTURE(e_data.background_color_tx),
+ GPU_ATTACHMENT_TEXTURE(txl->background_depth_tx),
+ GPU_ATTACHMENT_TEXTURE(txl->background_color_tx),
});
}
+ else {
+ DRW_TEXTURE_FREE_SAFE(txl->background_depth_tx);
+ DRW_TEXTURE_FREE_SAFE(txl->background_color_tx);
+ }
}
}
@@@ -1047,11 -1006,11 +1074,11 @@@ void GPENCIL_draw_scene(void *ved
stl->storage->tonemapping = 0;
/* Copy B texture to A texture to follow loop */
- e_data.input_depth_tx = e_data.temp_depth_tx_b;
- e_data.input_color_tx = e_data.temp_color_tx_b;
+ stl->g_data->input_depth_tx = stl->g_data->temp_depth_tx_b;
+ stl->g_data->input_color_tx = stl->g_data->temp_color_tx_b;
GPU_framebuffer_bind(fbl->temp_fb_a);
- GPU_framebuffer_clear_color_depth(fbl->temp_fb_a, clearcol, 1.0f);
+ GPU_framebuffer_clear_color_depth_stencil(fbl->temp_fb_a, clearcol, 1.0f, 0x0);
DRW_draw_pass(psl->mix_pass_noblend);
/* prepare next group */
More information about the Bf-blender-cvs
mailing list