Blender V4.5
blender::workbench::Instance Class Reference

Inherits DrawEngine.

Public Member Functions

blender::StringRefNull name_get () final
 
Span< const GPUMaterial * > get_dummy_gpu_materials (int material_count)
 
void init () final
 
void init (Depsgraph *depsgraph, Object *camera_ob=nullptr)
 
void begin_sync () final
 
void end_sync () final
 
Material get_material (ObjectRef ob_ref, eV3DShadingColorType color_type, int slot=0)
 
void object_sync (ObjectRef &ob_ref, Manager &manager) final
 
template<typename F >
void draw_to_mesh_pass (ObjectRef &ob_ref, bool is_transparent, F draw_callback)
 
void draw_mesh (ObjectRef &ob_ref, Material &material, gpu::Batch *batch, ResourceHandle handle, const MaterialTexture *texture=nullptr, bool show_missing_texture=false)
 
void mesh_sync (ObjectRef &ob_ref, ResourceHandle handle, const ObjectState &object_state)
 
void sculpt_sync (ObjectRef &ob_ref, ResourceHandle handle, const ObjectState &object_state)
 
void pointcloud_sync (Manager &manager, ObjectRef &ob_ref, const ObjectState &object_state)
 
void hair_sync (Manager &manager, ObjectRef &ob_ref, ResourceHandle emitter_handle, const ObjectState &object_state, ParticleSystem *psys, ModifierData *md)
 
void curves_sync (Manager &manager, ObjectRef &ob_ref, const ObjectState &object_state)
 
void draw (Manager &manager, GPUTexture *depth_tx, GPUTexture *depth_in_front_tx, GPUTexture *color_tx)
 
void draw_viewport (Manager &manager, GPUTexture *depth_tx, GPUTexture *depth_in_front_tx, GPUTexture *color_tx)
 
void draw (Manager &manager) final
 
void draw_image_render (Manager &manager, GPUTexture *depth_tx, GPUTexture *depth_in_front_tx, GPUTexture *color_tx, RenderEngine *engine=nullptr)
 
- Public Member Functions inherited from DrawEngine
virtual ~DrawEngine ()=default
 

Public Attributes

const DRWContextdraw_ctx = nullptr
 
- Public Attributes inherited from DrawEngine
char info [GPU_INFO_SIZE] = {'\0'}
 
DRWTextStoretext_draw_cache = nullptr
 
bool used = false
 

Additional Inherited Members

- Static Public Attributes inherited from DrawEngine
static constexpr int GPU_INFO_SIZE = 512
 

Detailed Description

Definition at line 44 of file workbench_engine.cc.

Member Function Documentation

◆ begin_sync()

◆ curves_sync()

◆ draw() [1/2]

◆ draw() [2/2]

void blender::workbench::Instance::draw ( Manager & manager,
GPUTexture * depth_tx,
GPUTexture * depth_in_front_tx,
GPUTexture * color_tx )
inline

Always setup in-front depth, since Overlays can be updated without causing a Workbench re-sync (See #113580).

Definition at line 441 of file workbench_engine.cc.

References blender::workbench::TransparentPass::accumulation_in_front_ps_, blender::draw::TextureFromPool::acquire(), blender::workbench::SceneState::background_color, blender::draw::Framebuffer::bind(), blender::workbench::SceneResources::clear_fb, blender::workbench::SceneResources::clear_in_front_fb, blender::workbench::SceneResources::color_tx, blender::draw::View::default_get(), blender::workbench::SceneResources::depth_in_front_tx, blender::workbench::SceneResources::depth_tx, blender::workbench::AntiAliasingPass::draw(), blender::workbench::DofPass::draw(), blender::workbench::OpaquePass::draw(), blender::workbench::OutlinePass::draw(), blender::workbench::TransparentDepthPass::draw(), blender::workbench::TransparentPass::draw(), blender::workbench::VolumePass::draw(), blender::eevee::Instance::draw_ctx, blender::workbench::SceneState::draw_object_id, blender::workbench::SceneState::draw_shadows, blender::draw::Framebuffer::ensure(), blender::workbench::OpaquePass::gbuffer_in_front_ps_, GPU_ATTACHMENT_NONE, GPU_ATTACHMENT_TEXTURE, GPU_framebuffer_clear_depth_stencil(), GPU_framebuffer_multi_clear(), GPU_R16UI, GPU_TEXTURE_USAGE_ATTACHMENT, GPU_TEXTURE_USAGE_SHADER_READ, blender::workbench::MeshPass::is_empty(), blender::eevee::Instance::manager, blender::workbench::SceneResources::object_id_tx, blender::draw::TextureFromPool::release(), blender::workbench::SceneState::render_finished, blender::workbench::SceneState::resolution, blender::workbench::SceneState::sample, blender::workbench::AntiAliasingPass::setup_view(), and blender::draw::TextureRef::wrap().

Referenced by draw_image_render(), and draw_viewport().

◆ draw_image_render()

◆ draw_mesh()

void blender::workbench::Instance::draw_mesh ( ObjectRef & ob_ref,
Material & material,
gpu::Batch * batch,
ResourceHandle handle,
const MaterialTexture * texture = nullptr,
bool show_missing_texture = false )
inline

◆ draw_to_mesh_pass()

◆ draw_viewport()

void blender::workbench::Instance::draw_viewport ( Manager & manager,
GPUTexture * depth_tx,
GPUTexture * depth_in_front_tx,
GPUTexture * color_tx )
inline

◆ end_sync()

void blender::workbench::Instance::end_sync ( )
inlinefinalvirtual

Implements DrawEngine.

Definition at line 121 of file workbench_engine.cc.

References blender::workbench::SceneResources::material_buf.

Referenced by workbench_render_to_image().

◆ get_dummy_gpu_materials()

◆ get_material()

◆ hair_sync()

◆ init() [1/2]

void blender::workbench::Instance::init ( )
inlinefinalvirtual

Init engine. Run first and for every redraw.

Implements DrawEngine.

Definition at line 85 of file workbench_engine.cc.

References DRWContext::depsgraph, blender::eevee::Instance::draw_ctx, DRW_context_get(), and blender::eevee::Instance::init().

Referenced by workbench_render_to_image().

◆ init() [2/2]

◆ mesh_sync()

◆ name_get()

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

Implements DrawEngine.

Definition at line 72 of file workbench_engine.cc.

◆ object_sync()

void blender::workbench::Instance::object_sync ( ObjectRef & ob_ref,
Manager & manager )
inlinefinalvirtual

Implements DrawEngine.

Definition at line 149 of file workbench_engine.cc.

References Object::base_flag, BASE_FROM_DUPLI, BKE_modifier_is_enabled(), BKE_modifiers_findby_type(), blender::bke::pbvh::bounds_get(), blender::workbench::ObjectState::color_type, curves_sync(), FluidModifierData::domain, ParticleSettings::draw_as, blender::eevee::Instance::draw_ctx, DRW_object_is_renderable(), DRW_object_is_visible_psys_in_active_context(), DRW_object_visibility_in_active_context(), Object::dt, eModifierMode_Realtime, eModifierType_Fluid, eModifierType_ParticleSystem, ListBase::first, FLUID_DOMAIN_TYPE_GAS, get_material(), hair_sync(), DRWContext::is_scene_render(), LISTBASE_FOREACH, blender::eevee::Instance::manager, blender::Bounds< T >::max, mesh_sync(), blender::math::midpoint(), blender::Bounds< T >::min, Object::modifiers, OB_CURVES, OB_MESH, OB_POINTCLOUD, OB_SOLID, OB_VISIBLE_SELF, OB_VOLUME, OB_WIRE, blender::workbench::VolumePass::object_sync_modifier(), blender::workbench::VolumePass::object_sync_volume(), ParticleSystem::part, PART_DRAW_PATH, PART_DRAW_REND, blender::bke::object::pbvh_get(), pointcloud_sync(), ParticleSettings::ren_as, blender::workbench::SceneState::render_finished, blender::draw::Manager::resource_handle(), blender::workbench::SceneState::scene, blender::workbench::ObjectState::sculpt_pbvh, sculpt_sync(), blender::workbench::SceneState::shading, FluidDomainSettings::type, Object::type, and View3DShading::type.

Referenced by workbench_render_to_image().

◆ pointcloud_sync()

void blender::workbench::Instance::pointcloud_sync ( Manager & manager,
ObjectRef & ob_ref,
const ObjectState & object_state )
inline

◆ sculpt_sync()

Member Data Documentation

◆ draw_ctx

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

Definition at line 70 of file workbench_engine.cc.


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