Blender V5.0
blender::draw::View Class Reference

#include <draw_view.hh>

Classes

struct  OffsetData

Public Member Functions

 View (const char *name, int view_len=1, bool procedural=false)
virtual ~View ()=default
void sync (const float4x4 &view_mat, const float4x4 &win_mat, int view_id=0)
void visibility_test (bool enable)
void compute_procedural_bounds ()
bool is_persp (int view_id=0) const
bool is_inverted (int view_id=0) const
float far_clip (int view_id=0) const
float near_clip (int view_id=0) const
const float3location (int view_id=0) const
const float3forward (int view_id=0) const
const float4x4viewmat (int view_id=0) const
const float4x4viewinv (int view_id=0) const
const float4x4winmat (int view_id=0) const
const float4x4wininv (int view_id=0) const
const float4x4 persmat (int view_id=0) const
int visibility_word_per_draw () const
UniformArrayBuffer< ViewMatrices, DRW_VIEW_MAX > & matrices_ubo_get ()
std::array< float4, 6 > frustum_planes_get (int view_id=0)
std::array< float3, 8 > frustum_corners_get (int view_id=0)

Static Public Member Functions

static Viewdefault_get ()
static void default_set (const float4x4 &view_mat, const float4x4 &win_mat)

Protected Member Functions

void bind ()
virtual void compute_visibility (ObjectBoundsBuf &bounds, ObjectInfosBuf &infos, uint resource_len, bool debug_freeze)
virtual VisibilityBufget_visibility_buffer ()
bool has_computed_visibility () const
uint64_t fingerprint_get () const
void update_viewport_size ()
void frustum_boundbox_calc (int view_id)
void frustum_culling_planes_calc (int view_id)
void frustum_culling_sphere_calc (int view_id)

Protected Attributes

UniformArrayBuffer< ViewMatrices, DRW_VIEW_MAXdata_
UniformArrayBuffer< ViewCullingData, DRW_VIEW_MAXculling_
UniformArrayBuffer< ViewMatrices, DRW_VIEW_MAXdata_freeze_
UniformArrayBuffer< ViewCullingData, DRW_VIEW_MAXculling_freeze_
VisibilityBuf visibility_buf_
uint64_t manager_fingerprint_ = 0
const char * debug_name_
int view_len_ = 0
bool is_inverted_ = false
bool do_visibility_ = true
bool dirty_ = true
bool frozen_ = false
bool procedural_ = false

Detailed Description

Definition at line 37 of file draw_view.hh.

Constructor & Destructor Documentation

◆ View()

blender::draw::View::View ( const char * name,
int view_len = 1,
bool procedural = false )
inline

Definition at line 70 of file draw_view.hh.

References BLI_assert, debug_name_, DRW_VIEW_MAX, name, procedural_, view_len_, and visibility_buf_.

◆ ~View()

virtual blender::draw::View::~View ( )
virtualdefault

Member Function Documentation

◆ bind()

void blender::draw::View::bind ( )
protected

Called from draw manager.

Definition at line 226 of file draw_view.cc.

References culling_, data_, dirty_, DRW_VIEW_CULLING_UBO_SLOT, DRW_VIEW_UBO_SLOT, GPU_uniformbuf_bind(), and procedural_.

◆ compute_procedural_bounds()

void blender::draw::View::compute_procedural_bounds ( )

Update culling data using a compute shader. This is to be used if the matrices were updated externally on the GPU (not using the sync() method).

Definition at line 238 of file draw_view.cc.

References culling_, data_, DRW_shader_draw_view_finalize_get(), DRW_VIEW_UBO_SLOT, GPU_BARRIER_UNIFORM, GPU_compute_dispatch(), GPU_debug_group_begin(), GPU_debug_group_end(), GPU_memory_barrier(), GPU_shader_bind(), GPU_shader_get_ssbo_binding(), GPU_uniformbuf_bind(), GPU_uniformbuf_bind_as_ssbo(), and manager_fingerprint_.

◆ compute_visibility()

◆ default_get()

◆ default_set()

void blender::draw::View::default_set ( const float4x4 & view_mat,
const float4x4 & win_mat )
static

◆ far_clip()

float blender::draw::View::far_clip ( int view_id = 0) const
inline

◆ fingerprint_get()

uint64_t blender::draw::View::fingerprint_get ( ) const
inlineprotected

Definition at line 249 of file draw_view.hh.

References BLI_assert_msg.

◆ forward()

const float3 & blender::draw::View::forward ( int view_id = 0) const
inline

Definition at line 130 of file draw_view.hh.

References BLI_assert, data_, and view_len_.

◆ frustum_boundbox_calc()

void blender::draw::View::frustum_boundbox_calc ( int view_id)
protected

◆ frustum_corners_get()

std::array< float3, 8 > blender::draw::View::frustum_corners_get ( int view_id = 0)

Definition at line 337 of file draw_view.cc.

References culling_.

◆ frustum_culling_planes_calc()

void blender::draw::View::frustum_culling_planes_calc ( int view_id)
protected

Definition at line 92 of file draw_view.cc.

References culling_, data_, len, blender::math::length(), persmat(), and planes_from_projmat().

Referenced by sync().

◆ frustum_culling_sphere_calc()

◆ frustum_planes_get()

std::array< float4, 6 > blender::draw::View::frustum_planes_get ( int view_id = 0)

Definition at line 327 of file draw_view.cc.

References culling_.

Referenced by blender::workbench::ShadowPass::init(), and blender::draw::sculpt_batches_get_ex().

◆ get_visibility_buffer()

VisibilityBuf & blender::draw::View::get_visibility_buffer ( )
protectedvirtual

Definition at line 312 of file draw_view.cc.

References visibility_buf_.

◆ has_computed_visibility()

bool blender::draw::View::has_computed_visibility ( ) const
inlineprotected

Definition at line 239 of file draw_view.hh.

References manager_fingerprint_.

◆ is_inverted()

bool blender::draw::View::is_inverted ( int view_id = 0) const
inline

Definition at line 99 of file draw_view.hh.

References BLI_assert, is_inverted_, UNUSED_VARS_NDEBUG, and view_len_.

◆ is_persp()

bool blender::draw::View::is_persp ( int view_id = 0) const
inline

◆ location()

const float3 & blender::draw::View::location ( int view_id = 0) const
inline

Definition at line 124 of file draw_view.hh.

References BLI_assert, data_, and view_len_.

◆ matrices_ubo_get()

UniformArrayBuffer< ViewMatrices, DRW_VIEW_MAX > & blender::draw::View::matrices_ubo_get ( )
inline

Definition at line 172 of file draw_view.hh.

References data_.

◆ near_clip()

float blender::draw::View::near_clip ( int view_id = 0) const
inline

◆ persmat()

◆ sync()

◆ update_viewport_size()

void blender::draw::View::update_viewport_size ( )
protected

◆ viewinv()

const float4x4 & blender::draw::View::viewinv ( int view_id = 0) const
inline

◆ viewmat()

◆ visibility_test()

void blender::draw::View::visibility_test ( bool enable)
inline

Enable or disable every visibility test (frustum culling, HiZ culling).

Definition at line 81 of file draw_view.hh.

References do_visibility_.

◆ visibility_word_per_draw()

int blender::draw::View::visibility_word_per_draw ( ) const
inline

Definition at line 167 of file draw_view.hh.

References divide_ceil_u(), and view_len_.

Referenced by compute_visibility().

◆ wininv()

const float4x4 & blender::draw::View::wininv ( int view_id = 0) const
inline

Definition at line 154 of file draw_view.hh.

References BLI_assert, data_, and view_len_.

Referenced by frustum_culling_sphere_calc().

◆ winmat()

Member Data Documentation

◆ culling_

◆ culling_freeze_

UniformArrayBuffer<ViewCullingData, DRW_VIEW_MAX> blender::draw::View::culling_freeze_
protected

Definition at line 53 of file draw_view.hh.

Referenced by compute_visibility().

◆ data_

UniformArrayBuffer<ViewMatrices, DRW_VIEW_MAX> blender::draw::View::data_
protected

◆ data_freeze_

UniformArrayBuffer<ViewMatrices, DRW_VIEW_MAX> blender::draw::View::data_freeze_
protected

Frozen version of data_ used for debugging culling.

Definition at line 52 of file draw_view.hh.

Referenced by compute_visibility().

◆ debug_name_

const char* blender::draw::View::debug_name_
protected

Definition at line 59 of file draw_view.hh.

Referenced by View().

◆ dirty_

bool blender::draw::View::dirty_ = true
protected

Definition at line 65 of file draw_view.hh.

Referenced by bind(), and sync().

◆ do_visibility_

bool blender::draw::View::do_visibility_ = true
protected

Definition at line 64 of file draw_view.hh.

Referenced by compute_visibility(), and visibility_test().

◆ frozen_

bool blender::draw::View::frozen_ = false
protected

Definition at line 66 of file draw_view.hh.

Referenced by compute_visibility().

◆ is_inverted_

bool blender::draw::View::is_inverted_ = false
protected

Definition at line 63 of file draw_view.hh.

Referenced by is_inverted(), and sync().

◆ manager_fingerprint_

uint64_t blender::draw::View::manager_fingerprint_ = 0
protected

Definition at line 57 of file draw_view.hh.

Referenced by compute_procedural_bounds(), has_computed_visibility(), and sync().

◆ procedural_

bool blender::draw::View::procedural_ = false
protected

Definition at line 67 of file draw_view.hh.

Referenced by bind(), and View().

◆ view_len_

int blender::draw::View::view_len_ = 0
protected

◆ visibility_buf_

VisibilityBuf blender::draw::View::visibility_buf_
protected

Result of the visibility computation. 1 bit or 1 or 2 word per resource ID per view.

Definition at line 55 of file draw_view.hh.

Referenced by compute_visibility(), get_visibility_buffer(), and View().


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