Blender V4.3
blender::draw::View Class Reference

#include <draw_view.hh>

Public Member Functions

 View (const char *name, int view_len=1, bool procedural=false)
 
 View (const char *name, const DRWView *view)
 
void sync (const float4x4 &view_mat, const float4x4 &win_mat, int view_id=0)
 
void sync (const DRWView *view)
 
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 ()
 

Protected Member Functions

void bind ()
 
virtual void compute_visibility (ObjectBoundsBuf &bounds, ObjectInfosBuf &infos, uint resource_len, bool debug_freeze)
 
virtual VisibilityBufget_visibility_buffer ()
 
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_
 
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 34 of file draw_view.hh.

Constructor & Destructor Documentation

◆ View() [1/2]

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

Definition at line 59 of file draw_view.hh.

References BLI_assert, and DRW_VIEW_MAX.

◆ View() [2/2]

blender::draw::View::View ( const char * name,
const DRWView * view )
inline

Definition at line 66 of file draw_view.hh.

References sync().

Member Function Documentation

◆ bind()

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

◆ 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 233 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(), and GPU_uniformbuf_bind_as_ssbo().

Referenced by blender::eevee::ShadowModule::set_view().

◆ compute_visibility()

◆ far_clip()

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

Definition at line 103 of file draw_view.hh.

References BLI_assert, data_, is_persp(), view_len_, and winmat().

◆ forward()

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

Definition at line 127 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_culling_planes_calc()

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

◆ frustum_culling_sphere_calc()

◆ get_visibility_buffer()

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

Definition at line 304 of file draw_view.cc.

References visibility_buf_.

◆ is_inverted()

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

Definition at line 96 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 121 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

◆ near_clip()

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

Definition at line 112 of file draw_view.hh.

References BLI_assert, data_, is_persp(), view_len_, and winmat().

◆ persmat()

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

◆ sync() [1/2]

void blender::draw::View::sync ( const DRWView * view)

◆ sync() [2/2]

◆ 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()

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

◆ visibility_test()

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

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

Definition at line 78 of file draw_view.hh.

References do_visibility_.

Referenced by blender::eevee::VolumeModule::draw_prepass().

◆ visibility_word_per_draw()

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

Definition at line 164 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 151 of file draw_view.hh.

References BLI_assert, data_, and view_len_.

Referenced by frustum_culling_sphere_calc().

◆ winmat()

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

Member Data Documentation

◆ culling_

◆ culling_freeze_

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

Definition at line 44 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 43 of file draw_view.hh.

Referenced by compute_visibility().

◆ debug_name_

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

Definition at line 48 of file draw_view.hh.

◆ dirty_

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

Definition at line 54 of file draw_view.hh.

Referenced by bind(), and sync().

◆ do_visibility_

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

Definition at line 53 of file draw_view.hh.

Referenced by compute_visibility(), and visibility_test().

◆ frozen_

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

Definition at line 55 of file draw_view.hh.

Referenced by compute_visibility().

◆ is_inverted_

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

Definition at line 52 of file draw_view.hh.

Referenced by is_inverted(), and sync().

◆ procedural_

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

Definition at line 56 of file draw_view.hh.

Referenced by bind().

◆ 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 46 of file draw_view.hh.

Referenced by compute_visibility(), and get_visibility_buffer().


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