Blender V5.0
render.cc File Reference
#include <ctime>
#include "MEM_guardedalloc.h"
#include "DNA_defaults.h"
#include "DNA_mask_types.h"
#include "DNA_scene_types.h"
#include "DNA_sequence_types.h"
#include "DNA_space_types.h"
#include "BLI_linklist.h"
#include "BLI_listbase.h"
#include "BLI_math_geom.h"
#include "BLI_math_matrix.hh"
#include "BLI_path_utils.hh"
#include "BLI_rect.h"
#include "BLI_task.hh"
#include "BKE_anim_data.hh"
#include "BKE_animsys.h"
#include "BKE_fcurve.hh"
#include "BKE_global.hh"
#include "BKE_image.hh"
#include "BKE_layer.hh"
#include "BKE_lib_id.hh"
#include "BKE_library.hh"
#include "BKE_main.hh"
#include "BKE_mask.h"
#include "BKE_movieclip.h"
#include "BKE_scene.hh"
#include "BKE_scene_runtime.hh"
#include "DEG_depsgraph.hh"
#include "DEG_depsgraph_build.hh"
#include "DEG_depsgraph_debug.hh"
#include "DEG_depsgraph_query.hh"
#include "IMB_colormanagement.hh"
#include "IMB_imbuf.hh"
#include "IMB_imbuf_types.hh"
#include "IMB_metadata.hh"
#include "MOV_read.hh"
#include "RNA_prototypes.hh"
#include "RE_engine.h"
#include "RE_pipeline.h"
#include "SEQ_channels.hh"
#include "SEQ_effects.hh"
#include "SEQ_iterator.hh"
#include "SEQ_modifier.hh"
#include "SEQ_offscreen.hh"
#include "SEQ_proxy.hh"
#include "SEQ_relations.hh"
#include "SEQ_render.hh"
#include "SEQ_sequencer.hh"
#include "SEQ_time.hh"
#include "SEQ_transform.hh"
#include "SEQ_utils.hh"
#include "cache/final_image_cache.hh"
#include "cache/intra_frame_cache.hh"
#include "cache/source_image_cache.hh"
#include "effects/effects.hh"
#include "modifiers/modifier.hh"
#include "multiview.hh"
#include "prefetch.hh"
#include "proxy.hh"
#include "render.hh"
#include "utils.hh"
#include <algorithm>

Go to the source code of this file.

Classes

struct  blender::seq::OpaqueQuad
struct  blender::seq::OpaqueQuadTracker

Namespaces

namespace  blender
namespace  blender::seq

Functions

float blender::seq::get_render_scale_factor (eSpaceSeq_Proxy_RenderSize render_size, short scene_render_scale)
float blender::seq::get_render_scale_factor (const RenderData &context)
Strip Stack Rendering Functions
static ImBufblender::seq::seq_render_strip_stack (const RenderData *context, SeqRenderState *state, ListBase *channels, ListBase *seqbasep, float timeline_frame, int chanshown)
static ImBufblender::seq::do_render_strip_uncached (const RenderData *context, SeqRenderState *state, Strip *strip, float timeline_frame, bool *r_is_proxy_image)
ImBufblender::seq::seq_render_strip (const RenderData *context, SeqRenderState *state, Strip *strip, float timeline_frame)
static bool blender::seq::seq_must_swap_input_in_blend_mode (Strip *strip)
static StripEarlyOut blender::seq::strip_get_early_out_for_blend_mode (Strip *strip)
static ImBufblender::seq::seq_render_strip_stack_apply_effect (const RenderData *context, SeqRenderState *state, Strip *strip, float timeline_frame, ImBuf *ibuf1, ImBuf *ibuf2)
static bool blender::seq::is_opaque_alpha_over (const Strip *strip)
ImBufblender::seq::render_give_ibuf (const RenderData *context, float timeline_frame, int chanshown)
ImBufblender::seq::seq_render_give_ibuf_seqbase (const RenderData *context, SeqRenderState *state, float timeline_frame, int chan_shown, ListBase *channels, ListBase *seqbasep)
ImBufblender::seq::render_give_ibuf_direct (const RenderData *context, float timeline_frame, Strip *strip)
bool blender::seq::render_is_muted (const ListBase *channels, const Strip *strip)
Color-space utility functions
void blender::seq::seq_imbuf_assign_spaces (const Scene *scene, ImBuf *ibuf)
void blender::seq::seq_imbuf_to_sequencer_space (const Scene *scene, ImBuf *ibuf, bool make_float)
void blender::seq::render_imbuf_from_sequencer_space (const Scene *scene, ImBuf *ibuf)
void blender::seq::render_pixel_from_sequencer_space_v4 (const Scene *scene, float pixel[4])
Rendering utility functions
void blender::seq::render_new_render_data (Main *bmain, Depsgraph *depsgraph, Scene *scene, int rectx, int recty, eSpaceSeq_Proxy_RenderSize preview_render_size, Render *render, RenderData *r_context)
StripElemblender::seq::render_give_stripelem (const Scene *scene, const Strip *strip, int timeline_frame)
Vector< Strip * > blender::seq::seq_shown_strips_get (const Scene *scene, ListBase *channels, ListBase *seqbase, const int timeline_frame, const int chanshown)
StripScreenQuad blender::seq::get_strip_screen_quad (const RenderData *context, const Strip *strip)
static bool blender::seq::is_quad_a_inside_b (const StripScreenQuad &a, const StripScreenQuad &b)
Preprocessing & Effects

Input preprocessing for STRIP_TYPE_IMAGE, STRIP_TYPE_MOVIE, STRIP_TYPE_MOVIECLIP and STRIP_TYPE_SCENE.

Do all the things you can't really do afterwards using sequence effects (read: before re-scaling to render resolution has been done).

Order is important!

  • De-interlace.
  • Crop and transform in image source coordinate space.
  • Flip X + Flip Y (could be done afterwards, backward compatibility).
  • Promote image to float data (affects pipeline operations afterwards).
  • Color balance (is most efficient in the byte -> float (future: half -> float should also work fine!) case, if done on load, since we can use lookup tables).
  • Pre-multiply.
static bool blender::seq::sequencer_use_transform (const Strip *strip)
static bool blender::seq::sequencer_use_crop (const Strip *strip)
static bool blender::seq::seq_input_have_to_preprocess (const RenderData *context, Strip *strip, float)
static bool blender::seq::seq_need_scale_to_render_size (const Strip *strip, bool is_proxy_image)
static float3x3 blender::seq::calc_strip_transform_matrix (const Scene *scene, const Strip *strip, const int in_x, const int in_y, const int out_x, const int out_y, const float image_scale_factor, const float preview_scale_factor)
static void blender::seq::sequencer_image_crop_init (const Strip *strip, const ImBuf *in, float crop_scale_factor, rctf *r_crop)
static bool blender::seq::is_strip_covering_screen (const RenderData *context, const Strip *strip)
static eIMBInterpolationFilterMode blender::seq::get_auto_filter (const StripTransform *transform)
static void blender::seq::sequencer_preprocess_transform_crop (ImBuf *in, ImBuf *out, const RenderData *context, Strip *strip, const float3x3 &matrix, const bool scale_crop_values, const float preview_scale_factor)
static void blender::seq::multiply_ibuf (ImBuf *ibuf, const float fmul, const bool multiply_alpha)
static ImBufblender::seq::input_preprocess (const RenderData *context, SeqRenderState *state, Strip *strip, float timeline_frame, ImBuf *ibuf, const bool is_proxy_image)
static ImBufblender::seq::seq_render_preprocess_ibuf (const RenderData *context, SeqRenderState *state, Strip *strip, ImBuf *ibuf, float timeline_frame, bool use_preprocess, const bool is_proxy_image)
static ImBufblender::seq::seq_render_effect_strip_impl (const RenderData *context, SeqRenderState *state, Strip *strip, float timeline_frame)
Individual strip rendering functions
static void blender::seq::convert_multilayer_ibuf (ImBuf *ibuf)
static ImBufblender::seq::seq_render_image_strip_view (const RenderData *context, Strip *strip, char *filepath, char *prefix, const char *ext, int view_id)
static bool blender::seq::seq_image_strip_is_multiview_render (Scene *scene, Strip *strip, int totfiles, const char *filepath, char *r_prefix, const char *r_ext)
static ImBufblender::seq::create_missing_media_image (const RenderData *context, int width, int height)
static ImBufblender::seq::seq_render_image_strip (const RenderData *context, SeqRenderState *state, Strip *strip, int timeline_frame, bool *r_is_proxy_image)
static ImBufblender::seq::seq_render_movie_strip_custom_file_proxy (const RenderData *context, Strip *strip, int timeline_frame)
static IMB_Timecode_Type blender::seq::seq_render_movie_strip_timecode_get (Strip *strip)
static ImBufblender::seq::seq_render_movie_strip_view (const RenderData *context, Strip *strip, float timeline_frame, StripAnim *sanim, bool *r_is_proxy_image)
static ImBufblender::seq::seq_render_movie_strip (const RenderData *context, SeqRenderState *state, Strip *strip, float timeline_frame, bool *r_is_proxy_image)
static ImBufblender::seq::seq_get_movieclip_ibuf (Strip *strip, MovieClipUser user)
static ImBufblender::seq::seq_render_movieclip_strip (const RenderData *context, Strip *strip, float frame_index, bool *r_is_proxy_image)
ImBufblender::seq::seq_render_mask (Depsgraph *depsgraph, int width, int height, const Mask *mask, float frame_index, bool make_float)
static ImBufblender::seq::seq_render_mask_strip (const RenderData *context, Strip *strip, float frame_index)
static Depsgraph * blender::seq::get_depsgraph_for_scene_strip (Main *bmain, Scene *scene, ViewLayer *view_layer)
static ImBufblender::seq::seq_render_scene_strip_ex (const RenderData *context, Strip *strip, float frame_index, float timeline_frame)
static ImBufblender::seq::seq_render_scene_strip (const RenderData *context, Strip *strip, float frame_index, float timeline_frame)
static ImBufblender::seq::do_render_strip_seqbase (const RenderData *context, SeqRenderState *state, Strip *strip, float frame_index)

Variables

static blender::Mutex blender::seq::seq_render_mutex
DrawViewFn blender::seq::view3d_fn = nullptr