Blender  V2.93
Classes
render_preview.c File Reference
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
#include "BLI_math.h"
#include "BLI_utildefines.h"
#include "PIL_time.h"
#include "BLO_readfile.h"
#include "DNA_brush_types.h"
#include "DNA_camera_types.h"
#include "DNA_collection_types.h"
#include "DNA_light_types.h"
#include "DNA_material_types.h"
#include "DNA_node_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
#include "DNA_space_types.h"
#include "DNA_world_types.h"
#include "BKE_appdir.h"
#include "BKE_brush.h"
#include "BKE_colortools.h"
#include "BKE_context.h"
#include "BKE_global.h"
#include "BKE_icons.h"
#include "BKE_idprop.h"
#include "BKE_image.h"
#include "BKE_layer.h"
#include "BKE_lib_id.h"
#include "BKE_light.h"
#include "BKE_main.h"
#include "BKE_material.h"
#include "BKE_node.h"
#include "BKE_object.h"
#include "BKE_scene.h"
#include "BKE_texture.h"
#include "BKE_world.h"
#include "DEG_depsgraph.h"
#include "DEG_depsgraph_build.h"
#include "DEG_depsgraph_query.h"
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
#include "IMB_thumbs.h"
#include "BIF_glutil.h"
#include "GPU_shader.h"
#include "RE_engine.h"
#include "RE_pipeline.h"
#include "RE_texture.h"
#include "WM_api.h"
#include "WM_types.h"
#include "ED_datafiles.h"
#include "ED_render.h"
#include "ED_screen.h"
#include "ED_view3d.h"
#include "ED_view3d_offscreen.h"
#include "BLI_threads.h"

Go to the source code of this file.

Classes

struct  ShaderPreview
 
struct  IconPreviewSize
 
struct  IconPreview
 
struct  ObjectPreviewData
 

Typedefs

Local Structs
typedef struct ShaderPreview ShaderPreview
 
typedef struct IconPreviewSize IconPreviewSize
 
typedef struct IconPreview IconPreview
 

Functions

Icon Preview
static void icon_copy_rect (ImBuf *ibuf, uint w, uint h, uint *rect)
 
static ImBuficon_preview_imbuf_from_brush (Brush *brush)
 
static void set_alpha (char *cp, int sizex, int sizey, char alpha)
 
static void icon_preview_startjob (void *customdata, short *stop, short *do_update)
 
static void common_preview_startjob (void *customdata, short *stop, short *do_update, float *UNUSED(progress))
 
static void other_id_types_preview_render (IconPreview *ip, IconPreviewSize *cur_size, const int pr_method, short *stop, short *do_update, float *progress)
 
static int icon_previewimg_size_index_get (const IconPreviewSize *icon_size, const PreviewImage *preview_image)
 
static void icon_preview_startjob_all_sizes (void *customdata, short *stop, short *do_update, float *progress)
 
static void icon_preview_add_size (IconPreview *ip, uint *rect, int sizex, int sizey)
 
static void icon_preview_endjob (void *customdata)
 
static void icon_preview_free (void *customdata)
 
void ED_preview_icon_render (const bContext *C, Scene *scene, ID *id, uint *rect, int sizex, int sizey)
 
void ED_preview_icon_job (const bContext *C, void *owner, ID *id, uint *rect, int sizex, int sizey, const bool delay)
 
void ED_preview_shader_job (const bContext *C, void *owner, ID *id, ID *parent, MTex *slot, int sizex, int sizey, int method)
 
void ED_preview_kill_jobs (wmWindowManager *wm, Main *UNUSED(bmain))
 
Object Preview
static Objectobject_preview_camera_create (Main *preview_main, ViewLayer *view_layer, Object *preview_object, int sizex, int sizey)
 
static Sceneobject_preview_scene_create (const struct ObjectPreviewData *preview_data, Depsgraph **r_depsgraph)
 
static void object_preview_render (IconPreview *preview, IconPreviewSize *preview_sized)
 
Action Preview
static void action_preview_render (IconPreview *preview, IconPreviewSize *preview_sized)
 
New Shader Preview System
static void shader_preview_update (void *spv, RenderResult *UNUSED(rr), volatile struct rcti *UNUSED(rect))
 
static int shader_preview_break (void *spv)
 
static void shader_preview_updatejob (void *spv)
 
static void shader_preview_texture (ShaderPreview *sp, Tex *tex, Scene *sce, Render *re)
 
static void shader_preview_render (ShaderPreview *sp, ID *id, int split, int first)
 
static void shader_preview_startjob (void *customdata, short *stop, short *do_update)
 
static void preview_id_copy_free (ID *id)
 
static void shader_preview_free (void *customdata)
 

Preview for Buttons

static MainG_pr_main = NULL
 
static MainG_pr_main_grease_pencil = NULL
 
static Mainload_main_from_memory (const void *blend, int blend_size)
 
void ED_preview_ensure_dbase (void)
 
static bool check_engine_supports_preview (Scene *scene)
 
static bool preview_method_is_render (int pr_method)
 
void ED_preview_free_dbase (void)
 
static Scenepreview_get_scene (Main *pr_main)
 
static const char * preview_collection_name (const char pr_type)
 
static void set_preview_visibility (Scene *scene, ViewLayer *view_layer, char pr_type, int pr_method)
 
static Worldpreview_get_localized_world (ShaderPreview *sp, World *world)
 
static IDduplicate_ids (ID *id, const bool allow_failure)
 
static Scenepreview_prepare_scene (Main *bmain, Scene *scene, ID *id, int id_type, ShaderPreview *sp)
 
static bool ed_preview_draw_rect (ScrArea *area, int split, int first, rcti *rect, rcti *newrect)
 
void ED_preview_draw (const bContext *C, void *idp, void *parentp, void *slotp, rcti *rect)
 

Typedef Documentation

◆ IconPreview

typedef struct IconPreview IconPreview

◆ IconPreviewSize

◆ ShaderPreview

typedef struct ShaderPreview ShaderPreview

Function Documentation

◆ action_preview_render()

static void action_preview_render ( IconPreview preview,
IconPreviewSize preview_sized 
)
static

◆ check_engine_supports_preview()

static bool check_engine_supports_preview ( Scene scene)
static

◆ common_preview_startjob()

static void common_preview_startjob ( void *  customdata,
short *  stop,
short *  do_update,
float UNUSEDprogress 
)
static

◆ duplicate_ids()

static ID* duplicate_ids ( ID id,
const bool  allow_failure 
)
static

◆ ED_preview_draw()

void ED_preview_draw ( const bContext C,
void *  idp,
void *  parentp,
void *  slotp,
rcti rect 
)

◆ ed_preview_draw_rect()

static bool ed_preview_draw_rect ( ScrArea area,
int  split,
int  first,
rcti rect,
rcti newrect 
)
static

◆ ED_preview_ensure_dbase()

void ED_preview_ensure_dbase ( void  )

◆ ED_preview_free_dbase()

void ED_preview_free_dbase ( void  )

Definition at line 209 of file render_preview.c.

References BKE_main_free(), G_pr_main, and G_pr_main_grease_pencil.

Referenced by WM_exit_ex().

◆ ED_preview_icon_job()

void ED_preview_icon_job ( const bContext C,
void *  owner,
ID id,
uint rect,
int  sizex,
int  sizey,
const bool  delay 
)

◆ ED_preview_icon_render()

void ED_preview_icon_render ( const bContext C,
Scene scene,
ID id,
uint rect,
int  sizex,
int  sizey 
)

◆ ED_preview_kill_jobs()

void ED_preview_kill_jobs ( wmWindowManager wm,
Main UNUSEDbmain 
)

◆ ED_preview_shader_job()

void ED_preview_shader_job ( const bContext C,
void *  owner,
ID id,
ID parent,
MTex slot,
int  sizex,
int  sizey,
int  method 
)

◆ icon_copy_rect()

static void icon_copy_rect ( ImBuf ibuf,
uint  w,
uint  h,
uint rect 
)
static

◆ icon_preview_add_size()

static void icon_preview_add_size ( IconPreview ip,
uint rect,
int  sizex,
int  sizey 
)
static

◆ icon_preview_endjob()

static void icon_preview_endjob ( void *  customdata)
static

◆ icon_preview_free()

static void icon_preview_free ( void *  customdata)
static

◆ icon_preview_imbuf_from_brush()

static ImBuf* icon_preview_imbuf_from_brush ( Brush brush)
static

◆ icon_preview_startjob()

static void icon_preview_startjob ( void *  customdata,
short *  stop,
short *  do_update 
)
static

◆ icon_preview_startjob_all_sizes()

static void icon_preview_startjob_all_sizes ( void *  customdata,
short *  stop,
short *  do_update,
float progress 
)
static

◆ icon_previewimg_size_index_get()

static int icon_previewimg_size_index_get ( const IconPreviewSize icon_size,
const PreviewImage preview_image 
)
static

Find the index to map icon_size to data in preview_image.

Definition at line 1463 of file render_preview.c.

References BLI_assert, PreviewImage::h, NUM_ICON_SIZES, IconPreviewSize::sizex, IconPreviewSize::sizey, and PreviewImage::w.

Referenced by icon_preview_endjob(), and icon_preview_startjob_all_sizes().

◆ load_main_from_memory()

static Main* load_main_from_memory ( const void *  blend,
int  blend_size 
)
static

◆ object_preview_camera_create()

static Object* object_preview_camera_create ( Main preview_main,
ViewLayer view_layer,
Object preview_object,
int  sizex,
int  sizey 
)
static

◆ object_preview_render()

static void object_preview_render ( IconPreview preview,
IconPreviewSize preview_sized 
)
static

◆ object_preview_scene_create()

static Scene* object_preview_scene_create ( const struct ObjectPreviewData preview_data,
Depsgraph **  r_depsgraph 
)
static

◆ other_id_types_preview_render()

static void other_id_types_preview_render ( IconPreview ip,
IconPreviewSize cur_size,
const int  pr_method,
short *  stop,
short *  do_update,
float progress 
)
static

◆ preview_collection_name()

static const char* preview_collection_name ( const char  pr_type)
static

◆ preview_get_localized_world()

static World* preview_get_localized_world ( ShaderPreview sp,
World world 
)
static

◆ preview_get_scene()

static Scene* preview_get_scene ( Main pr_main)
static

Definition at line 220 of file render_preview.c.

References ListBase::first, NULL, and Main::scenes.

Referenced by preview_prepare_scene(), and shader_preview_render().

◆ preview_id_copy_free()

static void preview_id_copy_free ( ID id)
static

◆ preview_method_is_render()

static bool preview_method_is_render ( int  pr_method)
static

◆ preview_prepare_scene()

static Scene* preview_prepare_scene ( Main bmain,
Scene scene,
ID id,
int  id_type,
ShaderPreview sp 
)
static

Definition at line 345 of file render_preview.c.

References RenderData::alphamode, BASE_VISIBLE_DEPSGRAPH, BKE_color_managed_display_settings_copy(), BKE_color_managed_view_settings_copy(), BKE_color_managed_view_settings_free(), BKE_main_blendfile_path(), BKE_node_preview_init_tree(), BKE_object_material_array_p(), BLI_addtail(), BLI_assert, BLI_strncpy(), RenderData::cfra, ShaderPreview::color, RenderData::color_mgt_flag, copy_v4_v4(), Scene::display, Scene::display_settings, ViewLayer::eevee, RenderData::engine, World::exp, ListBase::first, Material::flag, G_pr_main_grease_pencil, World::horb, World::horg, World::horr, ShaderPreview::id_copy, ID_LA, ID_MA, ID_TE, ID_WO, ShaderPreview::lampcopy, Main::lights, LISTBASE_FOREACH, MA_LAMP, MA_PREVIEW_WORLD, MA_SKY, MA_SPHERE_A, ShaderPreview::matcopy, Main::materials, max_ii(), Main::name, Light::nodetree, Material::nodetree, Tex::nodetree, World::nodetree, NULL, OB_LAMP, OB_TYPE_SUPPORT_MATERIAL, ViewLayer::object_bases, ViewLayer::passflag, PR_BUTS_RENDER, Material::pr_flag, PR_ICON_RENDER, ShaderPreview::pr_main, ShaderPreview::pr_method, PR_NODE_RENDER, Material::pr_type, preview_get_localized_world(), preview_get_scene(), Scene::r, R_ADDSKY, R_ALPHAPREMUL, R_BUTS_PREVIEW, World::range, RE_engine_id_BLENDER_EEVEE, SceneDisplay::render_aa, ViewLayerEEVEE::render_passes, SCE_DISPLAY_AA_OFF, SCE_PASS_COMBINED, RenderData::scemode, scene, set_preview_visibility(), ShaderPreview::sizex, ShaderPreview::sizey, tex, ShaderPreview::texcopy, Main::textures, RenderData::tilex, RenderData::tiley, World::use_nodes, Scene::view_layers, Scene::view_settings, Scene::world, ShaderPreview::worldcopy, Main::worlds, RenderData::xsch, and RenderData::ysch.

Referenced by shader_preview_render().

◆ set_alpha()

static void set_alpha ( char *  cp,
int  sizex,
int  sizey,
char  alpha 
)
static

Definition at line 1284 of file render_preview.c.

References Freestyle::a, alpha, and size().

Referenced by icon_preview_startjob().

◆ set_preview_visibility()

static void set_preview_visibility ( Scene scene,
ViewLayer view_layer,
char  pr_type,
int  pr_method 
)
static

◆ shader_preview_break()

static int shader_preview_break ( void *  spv)
static

Definition at line 879 of file render_preview.c.

References ShaderPreview::stop.

Referenced by shader_preview_render(), and shader_preview_texture().

◆ shader_preview_free()

static void shader_preview_free ( void *  customdata)
static

◆ shader_preview_render()

static void shader_preview_render ( ShaderPreview sp,
ID id,
int  split,
int  first 
)
static

◆ shader_preview_startjob()

static void shader_preview_startjob ( void *  customdata,
short *  stop,
short *  do_update 
)
static

◆ shader_preview_texture()

static void shader_preview_texture ( ShaderPreview sp,
Tex tex,
Scene sce,
Render re 
)
static

◆ shader_preview_update()

static void shader_preview_update ( void *  spv,
RenderResult UNUSEDrr,
volatile struct rcti UNUSEDrect 
)
static

Definition at line 869 of file render_preview.c.

References ShaderPreview::do_update.

Referenced by shader_preview_render().

◆ shader_preview_updatejob()

static void shader_preview_updatejob ( void *  spv)
static

Variable Documentation

◆ G_pr_main

Main* G_pr_main = NULL
static

◆ G_pr_main_grease_pencil

Main* G_pr_main_grease_pencil = NULL
static