[Bf-blender-cvs] [432e976b750] asset-lite-greasepencil: Remove duplicated preview_render
Antonio Vazquez
noreply at git.blender.org
Mon Nov 14 16:23:06 CET 2022
Commit: 432e976b750d4103b46e037f9d6299681db7666e
Author: Antonio Vazquez
Date: Mon Nov 14 16:23:00 2022 +0100
Branches: asset-lite-greasepencil
https://developer.blender.org/rB432e976b750d4103b46e037f9d6299681db7666e
Remove duplicated preview_render
Now the function is reused
===================================================================
M source/blender/editors/render/render_preview.cc
===================================================================
diff --git a/source/blender/editors/render/render_preview.cc b/source/blender/editors/render/render_preview.cc
index 690a55a29d0..85ebedff7f6 100644
--- a/source/blender/editors/render/render_preview.cc
+++ b/source/blender/editors/render/render_preview.cc
@@ -884,14 +884,33 @@ static void object_preview_render(IconPreview *preview, IconPreviewSize *preview
BLI_assert(preview->id_copy && (preview->id_copy != preview->id));
+ const bool is_gpencil = GS(preview->id->name) == ID_GD;
+
struct ObjectPreviewData preview_data = {};
preview_data.pr_main = preview_main;
/* Act on a copy. */
- preview_data.object = (Object *)preview->id_copy;
- preview_data.datablock = nullptr;
+ if (!is_gpencil) {
+ preview_data.object = (Object *)preview->id_copy;
+ preview_data.datablock = nullptr;
+ }
+ else {
+ preview_data.object = nullptr;
+ preview_data.datablock = (ID *)preview->id_copy;
+ }
preview_data.sizex = preview_sized->sizex;
preview_data.sizey = preview_sized->sizey;
+ /* Grease Pencil needs to find the frame number to make preview visible. */
+ if (is_gpencil) {
+ int f_min, f_max;
+ bGPdata *gpd = (bGPdata *)preview->id_copy;
+ BKE_gpencil_frame_min_max(gpd, &f_min, &f_max);
+ const int framenum = ((preview->scene->r.cfra < f_min) || (preview->scene->r.cfra > f_max)) ?
+ f_min :
+ preview->scene->r.cfra;
+ preview_data.cfra = framenum;
+ }
+
Depsgraph *depsgraph;
Scene *scene = object_preview_scene_create(&preview_data, &depsgraph);
@@ -1068,71 +1087,6 @@ static void action_preview_render(IconPreview *preview, IconPreviewSize *preview
/** \} */
/* -------------------------------------------------------------------- */
-/** \name Grease Pencil Preview
- * \{ */
-
-/* Render a grease pencil datablock. As the Draw Engine needs an object, the datablock is assigned
- * to a temporary object, just for render. */
-static void gpencil_preview_render(IconPreview *preview, IconPreviewSize *preview_sized)
-{
- Main *preview_main = BKE_main_new();
- char err_out[256] = "unknown";
-
- BLI_assert(preview->id_copy && (preview->id_copy != preview->id));
-
- /* Find the frame number to make preview visible. */
- int f_min, f_max;
- bGPdata *gpd = (bGPdata *)preview->id_copy;
- BKE_gpencil_frame_min_max(gpd, &f_min, &f_max);
- const int framenum = ((preview->scene->r.cfra < f_min) || (preview->scene->r.cfra > f_max)) ?
- f_min :
- preview->scene->r.cfra;
-
- struct ObjectPreviewData preview_data = {};
- preview_data.pr_main = preview_main;
- /* Act on a copy. */
- preview_data.object = nullptr;
- preview_data.datablock = (ID *)preview->id_copy;
- preview_data.cfra = framenum;
- preview_data.sizex = preview_sized->sizex;
- preview_data.sizey = preview_sized->sizey;
-
- Depsgraph *depsgraph;
- Scene *scene = object_preview_scene_create(&preview_data, &depsgraph);
-
- /* Ownership is now ours. */
- preview->id_copy = nullptr;
-
- View3DShading shading;
- BKE_screen_view3d_shading_init(&shading);
- /* Enable shadows, makes it a bit easier to see the shape. */
- shading.flag |= V3D_SHADING_SHADOW;
-
- ImBuf *ibuf = ED_view3d_draw_offscreen_imbuf_simple(
- depsgraph,
- DEG_get_evaluated_scene(depsgraph),
- &shading,
- OB_TEXTURE,
- DEG_get_evaluated_object(depsgraph, scene->camera),
- preview_sized->sizex,
- preview_sized->sizey,
- IB_rect,
- V3D_OFSDRAW_OVERRIDE_SCENE_SETTINGS,
- R_ALPHAPREMUL,
- nullptr,
- nullptr,
- err_out);
-
- if (ibuf) {
- icon_copy_rect(ibuf, preview_sized->sizex, preview_sized->sizey, preview_sized->rect);
- IMB_freeImBuf(ibuf);
- }
-
- DEG_graph_free(depsgraph);
- BKE_main_free(preview_main);
-}
-/** \} */
-
/* -------------------------------------------------------------------- */
/** \name New Shader Preview System
* \{ */
@@ -1730,7 +1684,7 @@ static void icon_preview_startjob_all_sizes(void *customdata,
action_preview_render(ip, cur_size);
continue;
case ID_GD:
- gpencil_preview_render(ip, cur_size);
+ object_preview_render(ip, cur_size);
continue;
default:
/* Fall through to the same code as the `ip->id == nullptr` case. */
More information about the Bf-blender-cvs
mailing list