Blender V5.0
blender::eevee::Instance Class Reference

A running instance of the engine. More...

#include <eevee_instance.hh>

Inherits DrawEngine.

Public Member Functions

 Instance ()
 ~Instance ()
blender::StringRefNull name_get () final
bool is_loaded (ShaderGroups groups) const
template<typename... Args>
void info_append (const char *msg, Args &&...args)
template<typename... Args>
void info_append_i18n (const char *msg, Args &&...args)
const char * info_get ()
bool is_viewport () const
bool is_baking () const
bool overlays_enabled () const
bool gpencil_engine_enabled () const
bool use_scene_lights () const
bool use_studio_light () const
bool use_lookdev_overlay () const
int get_recalc_flags (const ObjectRef &ob_ref)
int get_recalc_flags (const ::World &world)
Sync

Sync will gather data from the scene that can change over a time step (i.e: motion steps). IMPORTANT: xxx.sync() functions area responsible for creating DRW resources as well as querying temp texture pool. All DRWPasses should be ready by the end end_sync().

void begin_sync () final
void object_sync (ObjectRef &ob_ref, Manager &manager) final
void end_sync () final
bool do_lightprobe_sphere_sync () const
bool do_planar_probe_sync () const
bool needs_lightprobe_sphere_passes () const
bool needs_planar_probe_passes () const
void render_sync ()
Public Member Functions inherited from DrawEngine
virtual ~DrawEngine ()=default

Public Attributes

ShaderModuleshaders
SyncModule sync
UniformDataModule uniform_data
MaterialModule materials
SubsurfaceModule subsurface
PipelineModule pipelines
ShadowModule shadows
LightModule lights
AmbientOcclusion ambient_occlusion
RayTraceModule raytracing
VelocityModule velocity
MotionBlurModule motion_blur
DepthOfField depth_of_field
Cryptomatte cryptomatte
GBuffer gbuffer
HiZBuffer hiz_buffer
Sampling sampling
Camera camera
Film film
RenderBuffers render_buffers
MainView main_view
CaptureView capture_view
World world
LookdevView lookdev_view
LookdevModule lookdev
SphereProbeModule sphere_probes
PlanarProbeModule planar_probes
VolumeProbeModule volume_probes
LightProbeModule light_probes
VolumeModule volume
Depsgraph * depsgraph
Managermanager
Scenescene
ViewLayerview_layer
Objectcamera_eval_object
Objectcamera_orig_object
const RenderLayerrender_layer
RenderEnginerender
const Viewdrw_view = nullptr
const View3Dv3d
const RegionView3Drv3d
const DRWContextdraw_ctx = nullptr
bool is_light_bake = false
bool is_image_render = false
bool is_viewport_image_render = false
bool is_playback = false
bool is_navigating = false
bool is_painting = false
bool is_transforming = false
bool is_viewport_compositor_enabled = false
bool draw_overlays = false
ShaderGroups loaded_shaders = ShaderGroups(0)
ShaderGroups needed_shaders = ShaderGroups(0)
bool use_surfaces = true
bool use_curves = true
bool use_volumes = true
eDebugMode debug_mode = eDebugMode::DEBUG_NONE
Public Attributes inherited from DrawEngine
char info [GPU_INFO_SIZE] = {'\0'}
bool used = false

Static Public Attributes

static CLG_LogRef log = {"eevee"}
Static Public Attributes inherited from DrawEngine
static constexpr int GPU_INFO_SIZE = 512

Initialization

Initialization functions need to be called once at the start of a frame. Active camera, render extent and enabled render passes are immutable until next init. This takes care of resizing output buffers and view in case a parameter changed. IMPORTANT: xxx.init() functions are NOT meant to acquire and allocate DRW resources. Any attempt to do so will likely produce use after free situations.

void init (const int2 &output_res, const rcti *output_rect, const rcti *visible_rect, RenderEngine *render, Depsgraph *depsgraph, Object *camera_object=nullptr, const RenderLayer *render_layer=nullptr, View *drw_view_=nullptr, const View3D *v3d=nullptr, const RegionView3D *rv3d=nullptr)
void init () final
void init_light_bake (Depsgraph *depsgraph, draw::Manager *manager)

Interface

void render_frame (RenderEngine *engine, RenderLayer *render_layer, const char *view_name)
void store_metadata (RenderResult *render_result)
void draw_viewport ()
void draw_viewport_image_render ()
void draw (Manager &manager) final
void light_bake_irradiance (Object &probe, FunctionRef< void()> context_enable, FunctionRef< void()> context_disable, FunctionRef< bool()> stop, FunctionRef< void(LightProbeGridCacheFrame *, float progress)> result_update)
static void update_passes (RenderEngine *engine, Scene *scene, ViewLayer *view_layer)

Detailed Description

A running instance of the engine.

Definition at line 80 of file eevee_instance.hh.

Constructor & Destructor Documentation

◆ Instance()

◆ ~Instance()

blender::eevee::Instance::~Instance ( )
inline

Definition at line 209 of file eevee_instance.hh.

Member Function Documentation

◆ begin_sync()

◆ do_lightprobe_sphere_sync()

bool blender::eevee::Instance::do_lightprobe_sphere_sync ( ) const

Return true when probe pipeline is used during this sample.

Definition at line 496 of file eevee_instance.cc.

References materials, and needs_lightprobe_sphere_passes().

◆ do_planar_probe_sync()

bool blender::eevee::Instance::do_planar_probe_sync ( ) const

Definition at line 507 of file eevee_instance.cc.

References materials, and needs_planar_probe_passes().

◆ draw()

void blender::eevee::Instance::draw ( Manager & manager)
finalvirtual

◆ draw_viewport()

◆ draw_viewport_image_render()

void blender::eevee::Instance::draw_viewport_image_render ( )

Definition at line 755 of file eevee_instance.cc.

References film, is_viewport_compositor_enabled, sampling, and velocity.

Referenced by draw().

◆ end_sync()

◆ get_recalc_flags() [1/2]

int blender::eevee::Instance::get_recalc_flags ( const ::World & world)
inline

Definition at line 354 of file eevee_instance.hh.

References ID_RECALC_SHADING, and world.

◆ get_recalc_flags() [2/2]

int blender::eevee::Instance::get_recalc_flags ( const ObjectRef & ob_ref)
inline

Definition at line 349 of file eevee_instance.hh.

References blender::draw::ObjectRef::recalc_flags().

◆ gpencil_engine_enabled()

bool blender::eevee::Instance::gpencil_engine_enabled ( ) const
inline

True if the grease pencil engine might be running.

Definition at line 320 of file eevee_instance.hh.

References DEG_id_type_any_exists(), depsgraph, and ID_GP.

◆ info_append()

template<typename... Args>
void blender::eevee::Instance::info_append ( const char * msg,
Args &&... args )
inline

Definition at line 279 of file eevee_instance.hh.

References BLI_str_endswith().

Referenced by blender::eevee::DeferredPipeline::debug_draw().

◆ info_append_i18n()

template<typename... Args>
void blender::eevee::Instance::info_append_i18n ( const char * msg,
Args &&... args )
inline

Definition at line 290 of file eevee_instance.hh.

References BLI_str_endswith(), and RPT_.

Referenced by draw_viewport().

◆ info_get()

const char * blender::eevee::Instance::info_get ( )
inline

Definition at line 299 of file eevee_instance.hh.

Referenced by draw().

◆ init() [1/2]

◆ init() [2/2]

void blender::eevee::Instance::init ( const int2 & output_res,
const rcti * output_rect,
const rcti * visible_rect,
RenderEngine * render,
Depsgraph * depsgraph,
Object * camera_object = nullptr,
const RenderLayer * render_layer = nullptr,
View * drw_view_ = nullptr,
const View3D * v3d = nullptr,
const RegionView3D * rv3d = nullptr )

Definition at line 128 of file eevee_instance.cc.

References ambient_occlusion, blender::assign_if_different(), BLI_rcti_size_x(), BLI_rcti_size_y(), camera, camera_orig_object, debug_mode, blender::eevee::DEFAULT_MATERIALS, blender::eevee::DEFERRED_CAPTURE_SHADERS, blender::eevee::DEFERRED_LIGHTING_SHADERS, blender::eevee::DEFERRED_PLANAR_SHADERS, DEG_get_update_count(), depsgraph, depth_of_field, blender::eevee::DEPTH_OF_FIELD_SHADERS, blender::eevee::DeferredLayer::do_merge_direct_indirect_eval(), blender::eevee::DeferredLayer::do_split_direct_indirect_radiance(), draw_ctx, draw_overlays, DRW_context_get(), DRW_manager_get(), drw_view, film, blender::eevee::FILM_SHADERS, G, blender::eevee::HIZ_SHADERS, blender::eevee::HORIZON_SCAN_SHADERS, is_image_render, is_loaded(), is_navigating, is_painting, is_playback, is_transforming, is_viewport(), is_viewport_compositor_enabled, is_viewport_image_render, blender::eevee::LIGHT_CULLING_SHADERS, light_probes, loaded_shaders, lookdev, main_view, manager, materials, motion_blur, blender::eevee::MOTION_BLUR_SHADERS, needed_shaders, needs_lightprobe_sphere_passes(), needs_planar_probe_passes(), blender::eevee::NONE, planar_probes, raytracing, blender::eevee::RAYTRACING_SHADERS, render, render_buffers, render_layer, rv3d, sampling, SCE_EEVEE_SHADOW_JITTERED_VIEWPORT, scene, SET_FLAG_FROM_TEST, shaders, blender::eevee::SHADOW_SHADERS, shadows, blender::eevee::SPHERE_PROBE_SHADERS, sphere_probes, v3d, V3D_HIDE_OVERLAYS, velocity, volume, blender::eevee::VOLUME_PROBE_SHADERS, volume_probes, rcti::xmin, and rcti::ymin.

Referenced by eevee_render().

◆ init_light_bake()

◆ is_baking()

bool blender::eevee::Instance::is_baking ( ) const
inline

Definition at line 309 of file eevee_instance.hh.

References is_light_bake.

Referenced by is_viewport(), and light_bake_irradiance().

◆ is_loaded()

bool blender::eevee::Instance::is_loaded ( ShaderGroups groups) const
inline

Definition at line 235 of file eevee_instance.hh.

References is_loaded(), and loaded_shaders.

Referenced by draw_viewport(), init(), is_loaded(), and render_frame().

◆ is_viewport()

bool blender::eevee::Instance::is_viewport ( ) const
inline

Definition at line 304 of file eevee_instance.hh.

References is_baking(), and render.

Referenced by begin_sync(), blender::eevee::foreach_hair_particle_handle(), and init().

◆ light_bake_irradiance()

void blender::eevee::Instance::light_bake_irradiance ( Object & probe,
FunctionRef< void()> context_enable,
FunctionRef< void()> context_disable,
FunctionRef< bool()> stop,
FunctionRef< void(LightProbeGridCacheFrame *, float progress)> result_update )

◆ name_get()

blender::StringRefNull blender::eevee::Instance::name_get ( )
inlinefinalvirtual

Implements DrawEngine.

Definition at line 211 of file eevee_instance.hh.

References final.

◆ needs_lightprobe_sphere_passes()

bool blender::eevee::Instance::needs_lightprobe_sphere_passes ( ) const

Return true when probe passes should be loaded. It can be true even if do_<type>_probe_sync() is false due to shaders still being compiled.

Definition at line 491 of file eevee_instance.cc.

References sphere_probes.

Referenced by do_lightprobe_sphere_sync(), and init().

◆ needs_planar_probe_passes()

bool blender::eevee::Instance::needs_planar_probe_passes ( ) const

Definition at line 502 of file eevee_instance.cc.

References planar_probes.

Referenced by do_planar_probe_sync(), and init().

◆ object_sync()

◆ overlays_enabled()

bool blender::eevee::Instance::overlays_enabled ( ) const
inline

Definition at line 314 of file eevee_instance.hh.

◆ render_frame()

◆ render_sync()

void blender::eevee::Instance::render_sync ( )

◆ store_metadata()

void blender::eevee::Instance::store_metadata ( RenderResult * render_result)

Definition at line 785 of file eevee_instance.cc.

References cryptomatte.

Referenced by eevee_render().

◆ update_passes()

◆ use_lookdev_overlay()

bool blender::eevee::Instance::use_lookdev_overlay ( ) const
inline

Definition at line 343 of file eevee_instance.hh.

References OB_MATERIAL, v3d, and V3D_OVERLAY_LOOK_DEV.

◆ use_scene_lights()

bool blender::eevee::Instance::use_scene_lights ( ) const
inline

◆ use_studio_light()

bool blender::eevee::Instance::use_studio_light ( ) const
inline

Member Data Documentation

◆ ambient_occlusion

AmbientOcclusion blender::eevee::Instance::ambient_occlusion

Definition at line 105 of file eevee_instance.hh.

Referenced by begin_sync(), init(), init_light_bake(), and Instance().

◆ camera

Camera blender::eevee::Instance::camera

Definition at line 114 of file eevee_instance.hh.

Referenced by init(), init(), init_light_bake(), and Instance().

◆ camera_eval_object

Object* blender::eevee::Instance::camera_eval_object

Camera object if rendering through a camera. nullptr otherwise.

Definition at line 137 of file eevee_instance.hh.

◆ camera_orig_object

Object* blender::eevee::Instance::camera_orig_object

Definition at line 138 of file eevee_instance.hh.

Referenced by init(), and init_light_bake().

◆ capture_view

CaptureView blender::eevee::Instance::capture_view

Definition at line 118 of file eevee_instance.hh.

Referenced by Instance(), and light_bake_irradiance().

◆ cryptomatte

Cryptomatte blender::eevee::Instance::cryptomatte

◆ debug_mode

eDebugMode blender::eevee::Instance::debug_mode = eDebugMode::DEBUG_NONE

Debug mode from debug value.

Definition at line 177 of file eevee_instance.hh.

Referenced by blender::eevee::DeferredPipeline::debug_draw(), init(), and init_light_bake().

◆ depsgraph

Depsgraph* blender::eevee::Instance::depsgraph

◆ depth_of_field

DepthOfField blender::eevee::Instance::depth_of_field

Definition at line 109 of file eevee_instance.hh.

Referenced by begin_sync(), init(), init_light_bake(), and Instance().

◆ draw_ctx

const DRWContext* blender::eevee::Instance::draw_ctx = nullptr

Definition at line 147 of file eevee_instance.hh.

Referenced by draw(), draw_viewport(), init(), init(), light_bake_irradiance(), and object_sync().

◆ draw_overlays

bool blender::eevee::Instance::draw_overlays = false

True if overlays need to be displayed (only for viewport).

Definition at line 166 of file eevee_instance.hh.

Referenced by init().

◆ drw_view

const View* blender::eevee::Instance::drw_view = nullptr

Only available when rendering for viewport.

Definition at line 143 of file eevee_instance.hh.

Referenced by init(), and init_light_bake().

◆ film

Film blender::eevee::Instance::film

◆ gbuffer

GBuffer blender::eevee::Instance::gbuffer

◆ hiz_buffer

HiZBuffer blender::eevee::Instance::hiz_buffer

◆ is_image_render

bool blender::eevee::Instance::is_image_render = false

True if the instance is created for either viewport image render or final image render.

Definition at line 152 of file eevee_instance.hh.

Referenced by end_sync(), and init().

◆ is_light_bake

bool blender::eevee::Instance::is_light_bake = false

True if the instance is created for light baking.

Definition at line 150 of file eevee_instance.hh.

Referenced by begin_sync(), init_light_bake(), and is_baking().

◆ is_navigating

bool blender::eevee::Instance::is_navigating = false

True if current viewport is drawn during navigation operator.

Definition at line 158 of file eevee_instance.hh.

Referenced by init().

◆ is_painting

bool blender::eevee::Instance::is_painting = false

True if current viewport is drawn during painting operator.

Definition at line 160 of file eevee_instance.hh.

Referenced by init().

◆ is_playback

bool blender::eevee::Instance::is_playback = false

True if current viewport is drawn during playback.

Definition at line 156 of file eevee_instance.hh.

Referenced by draw_viewport(), and init().

◆ is_transforming

bool blender::eevee::Instance::is_transforming = false

True if current viewport is drawn during transforming operator.

Definition at line 162 of file eevee_instance.hh.

Referenced by init().

◆ is_viewport_compositor_enabled

bool blender::eevee::Instance::is_viewport_compositor_enabled = false

True if viewport compositor is enabled when drawing with this instance.

Definition at line 164 of file eevee_instance.hh.

Referenced by draw_viewport(), draw_viewport_image_render(), and init().

◆ is_viewport_image_render

bool blender::eevee::Instance::is_viewport_image_render = false

True if the instance is created only for viewport image render.

Definition at line 154 of file eevee_instance.hh.

Referenced by draw(), and init().

◆ light_probes

LightProbeModule blender::eevee::Instance::light_probes

Definition at line 125 of file eevee_instance.hh.

Referenced by begin_sync(), end_sync(), init(), init_light_bake(), Instance(), and object_sync().

◆ lights

LightModule blender::eevee::Instance::lights

◆ loaded_shaders

ShaderGroups blender::eevee::Instance::loaded_shaders = ShaderGroups(0)

Definition at line 168 of file eevee_instance.hh.

Referenced by end_sync(), init(), and is_loaded().

◆ log

CLG_LogRef blender::eevee::Instance::log = {"eevee"}
static

◆ lookdev

LookdevModule blender::eevee::Instance::lookdev

Definition at line 121 of file eevee_instance.hh.

Referenced by begin_sync(), init(), init_light_bake(), and Instance().

◆ lookdev_view

LookdevView blender::eevee::Instance::lookdev_view

Definition at line 120 of file eevee_instance.hh.

Referenced by Instance().

◆ main_view

MainView blender::eevee::Instance::main_view

Definition at line 117 of file eevee_instance.hh.

Referenced by begin_sync(), init(), init_light_bake(), and Instance().

◆ manager

◆ materials

◆ motion_blur

MotionBlurModule blender::eevee::Instance::motion_blur

Definition at line 108 of file eevee_instance.hh.

Referenced by begin_sync(), init(), init_light_bake(), and Instance().

◆ needed_shaders

ShaderGroups blender::eevee::Instance::needed_shaders = ShaderGroups(0)

Definition at line 169 of file eevee_instance.hh.

Referenced by draw_viewport(), end_sync(), init(), init_light_bake(), and render_frame().

◆ pipelines

◆ planar_probes

PlanarProbeModule blender::eevee::Instance::planar_probes

◆ raytracing

RayTraceModule blender::eevee::Instance::raytracing

◆ render

RenderEngine* blender::eevee::Instance::render

Definition at line 141 of file eevee_instance.hh.

Referenced by init(), init_light_bake(), is_viewport(), render_frame(), and render_sync().

◆ render_buffers

RenderBuffers blender::eevee::Instance::render_buffers

◆ render_layer

const RenderLayer* blender::eevee::Instance::render_layer

Only available when rendering for final render.

Definition at line 140 of file eevee_instance.hh.

Referenced by init(), init_light_bake(), and render_frame().

◆ rv3d

const RegionView3D* blender::eevee::Instance::rv3d

Definition at line 145 of file eevee_instance.hh.

Referenced by init(), init(), and init_light_bake().

◆ sampling

◆ scene

Scene* blender::eevee::Instance::scene

◆ shaders

ShaderModule& blender::eevee::Instance::shaders

Definition at line 97 of file eevee_instance.hh.

Referenced by end_sync(), init(), init_light_bake(), and Instance().

◆ shadows

ShadowModule blender::eevee::Instance::shadows

◆ sphere_probes

◆ subsurface

SubsurfaceModule blender::eevee::Instance::subsurface

Definition at line 101 of file eevee_instance.hh.

Referenced by end_sync(), and Instance().

◆ sync

SyncModule blender::eevee::Instance::sync

◆ uniform_data

UniformDataModule blender::eevee::Instance::uniform_data

◆ use_curves

bool blender::eevee::Instance::use_curves = true

Definition at line 173 of file eevee_instance.hh.

Referenced by begin_sync().

◆ use_surfaces

bool blender::eevee::Instance::use_surfaces = true

View-layer overrides.

Definition at line 172 of file eevee_instance.hh.

Referenced by begin_sync().

◆ use_volumes

bool blender::eevee::Instance::use_volumes = true

Definition at line 174 of file eevee_instance.hh.

Referenced by begin_sync().

◆ v3d

const View3D* blender::eevee::Instance::v3d

◆ velocity

VelocityModule blender::eevee::Instance::velocity

◆ view_layer

ViewLayer* blender::eevee::Instance::view_layer

Definition at line 135 of file eevee_instance.hh.

Referenced by begin_sync(), and update_passes().

◆ volume

VolumeModule blender::eevee::Instance::volume

Definition at line 126 of file eevee_instance.hh.

Referenced by begin_sync(), end_sync(), init(), init_light_bake(), and Instance().

◆ volume_probes

◆ world

World blender::eevee::Instance::world

Definition at line 119 of file eevee_instance.hh.

Referenced by begin_sync(), get_recalc_flags(), and Instance().


The documentation for this class was generated from the following files: