Blender  V2.93
Public Types | Public Member Functions | Public Attributes | Protected Member Functions | List of all members
GeometryManager Class Reference

#include <geometry.h>

Public Types

enum  : uint32_t {
  UV_PASS_NEEDED = (1 << 0) , MOTION_PASS_NEEDED = (1 << 1) , GEOMETRY_MODIFIED = (1 << 2) , OBJECT_MANAGER = (1 << 3) ,
  MESH_ADDED = (1 << 4) , MESH_REMOVED = (1 << 5) , HAIR_ADDED = (1 << 6) , HAIR_REMOVED = (1 << 7) ,
  SHADER_ATTRIBUTE_MODIFIED = (1 << 8) , SHADER_DISPLACEMENT_MODIFIED = (1 << 9) , GEOMETRY_ADDED = MESH_ADDED | HAIR_ADDED , GEOMETRY_REMOVED = MESH_REMOVED | HAIR_REMOVED ,
  TRANSFORM_MODIFIED = (1 << 10) , VISIBILITY_MODIFIED = (1 << 11) , UPDATE_ALL = ~0u , UPDATE_NONE = 0u
}
 

Public Member Functions

 GeometryManager ()
 
 ~GeometryManager ()
 
void device_update_preprocess (Device *device, Scene *scene, Progress &progress)
 
void device_update (Device *device, DeviceScene *dscene, Scene *scene, Progress &progress)
 
void device_free (Device *device, DeviceScene *dscene, bool force_free)
 
void tag_update (Scene *scene, uint32_t flag)
 
bool need_update () const
 
void collect_statistics (const Scene *scene, RenderStats *stats)
 

Public Attributes

bool need_flags_update
 

Protected Member Functions

bool displace (Device *device, DeviceScene *dscene, Scene *scene, Mesh *mesh, Progress &progress)
 
void create_volume_mesh (Volume *volume, Progress &progress)
 
void update_osl_attributes (Device *device, Scene *scene, vector< AttributeRequestSet > &geom_attributes)
 
void update_svm_attributes (Device *device, DeviceScene *dscene, Scene *scene, vector< AttributeRequestSet > &geom_attributes, vector< AttributeRequestSet > &object_attributes)
 
void mesh_calc_offset (Scene *scene, BVHLayout bvh_layout)
 
void device_update_object (Device *device, DeviceScene *dscene, Scene *scene, Progress &progress)
 
void device_update_mesh (Device *device, DeviceScene *dscene, Scene *scene, bool for_displacement, Progress &progress)
 
void device_update_attributes (Device *device, DeviceScene *dscene, Scene *scene, Progress &progress)
 
void device_update_bvh (Device *device, DeviceScene *dscene, Scene *scene, Progress &progress)
 
void device_update_displacement_images (Device *device, Scene *scene, Progress &progress)
 
void device_update_volume_images (Device *device, Scene *scene, Progress &progress)
 

Detailed Description

Definition at line 193 of file geometry.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum : uint32_t
Enumerator
UV_PASS_NEEDED 
MOTION_PASS_NEEDED 
GEOMETRY_MODIFIED 
OBJECT_MANAGER 
MESH_ADDED 
MESH_REMOVED 
HAIR_ADDED 
HAIR_REMOVED 
SHADER_ATTRIBUTE_MODIFIED 
SHADER_DISPLACEMENT_MODIFIED 
GEOMETRY_ADDED 
GEOMETRY_REMOVED 
TRANSFORM_MODIFIED 
VISIBILITY_MODIFIED 
UPDATE_ALL 
UPDATE_NONE 

Definition at line 197 of file geometry.h.

Constructor & Destructor Documentation

◆ GeometryManager()

GeometryManager::GeometryManager ( )

Definition at line 301 of file geometry.cpp.

References need_flags_update, and UPDATE_ALL.

◆ ~GeometryManager()

GeometryManager::~GeometryManager ( )

Definition at line 307 of file geometry.cpp.

Member Function Documentation

◆ collect_statistics()

void GeometryManager::collect_statistics ( const Scene scene,
RenderStats stats 
)

◆ create_volume_mesh()

void GeometryManager::create_volume_mesh ( Volume volume,
Progress progress 
)
protected

◆ device_free()

void GeometryManager::device_free ( Device device,
DeviceScene dscene,
bool  force_free 
)

◆ device_update()

void GeometryManager::device_update ( Device device,
DeviceScene dscene,
Scene scene,
Progress progress 
)

◆ device_update_attributes()

void GeometryManager::device_update_attributes ( Device device,
DeviceScene dscene,
Scene scene,
Progress progress 
)
protected

◆ device_update_bvh()

void GeometryManager::device_update_bvh ( Device device,
DeviceScene dscene,
Scene scene,
Progress progress 
)
protected

Definition at line 1220 of file geometry.cpp.

References BVHParams::best_bvh_layout(), Device::build_bvh(), KernelData::bvh, Scene::bvh, BVHParams::bvh_layout, SceneParams::bvh_layout, BVH_LAYOUT_BVH2, bvh_layout_name(), BVH_LAYOUT_OPTIX, DeviceScene::bvh_leaf_nodes, DeviceScene::bvh_nodes, BVHParams::bvh_type, SceneParams::bvh_type, device_vector< T >::copy_to_device(), BVH::create(), BVHParams::curve_subdivisions, KernelBVH::curve_subdivisions, SceneParams::curve_subdivisions(), DeviceScene::data, function_bind, Scene::geometry, Geometry::geometry_type, Device::get_bvh_layout_mask(), Progress::get_cancel(), Object::get_device_index(), device_vector< T >::give_data(), KernelBVH::have_curves, Geometry::is_hair(), Geometry::is_instanced(), Node::is_modified(), device_vector< T >::is_modified(), PackedBVH::leaf_nodes, Geometry::MESH, mesh, device_vector< T >::need_realloc(), PackedBVH::nodes, SceneParams::num_bvh_time_steps, BVHParams::num_motion_curve_steps, BVHParams::num_motion_triangle_steps, Hair::num_segments(), Mesh::num_triangles(), PackedBVH::object_node, DeviceScene::object_node, Scene::objects, PACK_ALL, PACK_NONE, Geometry::pack_primitives(), PACK_VERTICES, PACK_VISIBILITY, Scene::params, blender::compositor::pool, PackedBVH::prim_index, DeviceScene::prim_index, PackedBVH::prim_object, DeviceScene::prim_object, PackedBVH::prim_time, DeviceScene::prim_time, PackedBVH::prim_tri_index, DeviceScene::prim_tri_index, PackedBVH::prim_tri_verts, DeviceScene::prim_tri_verts, PackedBVH::prim_type, DeviceScene::prim_type, PackedBVH::prim_visibility, DeviceScene::prim_visibility, TaskPool::push(), array< T, alignment >::resize(), KernelBVH::root, PackedBVH::root_index, KernelBVH::scene, scene, Progress::set_status(), array< T, alignment >::size(), device_vector< T >::steal_data(), BVHParams::top_level, SceneParams::use_bvh_spatial_split, KernelBVH::use_bvh_steps, SceneParams::use_bvh_unaligned_nodes, BVHParams::use_spatial_split, BVHParams::use_unaligned_nodes, Object::visibility_for_tracing(), VLOG, Geometry::VOLUME, and TaskPool::wait_work().

◆ device_update_displacement_images()

void GeometryManager::device_update_displacement_images ( Device device,
Scene scene,
Progress progress 
)
protected

◆ device_update_mesh()

void GeometryManager::device_update_mesh ( Device device,
DeviceScene dscene,
Scene scene,
bool  for_displacement,
Progress progress 
)
protected

◆ device_update_object()

void GeometryManager::device_update_object ( Device device,
DeviceScene dscene,
Scene scene,
Progress progress 
)
protected

◆ device_update_preprocess()

void GeometryManager::device_update_preprocess ( Device device,
Scene scene,
Progress progress 
)

Definition at line 1451 of file geometry.cpp.

References need_flags_update, need_update(), scene, time, and Scene::update_stats.

Referenced by Scene::device_update().

◆ device_update_volume_images()

void GeometryManager::device_update_volume_images ( Device device,
Scene scene,
Progress progress 
)
protected

◆ displace()

bool GeometryManager::displace ( Device device,
DeviceScene dscene,
Scene scene,
Mesh mesh,
Progress progress 
)
protected

◆ mesh_calc_offset()

void GeometryManager::mesh_calc_offset ( Scene scene,
BVHLayout  bvh_layout 
)
protected

◆ need_update()

bool GeometryManager::need_update ( ) const

Definition at line 2137 of file geometry.cpp.

References UPDATE_NONE.

Referenced by device_update(), device_update_preprocess(), and Scene::need_data_update().

◆ tag_update()

void GeometryManager::tag_update ( Scene scene,
uint32_t  flag 
)

◆ update_osl_attributes()

void GeometryManager::update_osl_attributes ( Device device,
Scene scene,
vector< AttributeRequestSet > &  geom_attributes 
)
protected

◆ update_svm_attributes()

void GeometryManager::update_svm_attributes ( Device device,
DeviceScene dscene,
Scene scene,
vector< AttributeRequestSet > &  geom_attributes,
vector< AttributeRequestSet > &  object_attributes 
)
protected

Member Data Documentation

◆ need_flags_update

bool GeometryManager::need_flags_update

Definition at line 224 of file geometry.h.

Referenced by device_update_preprocess(), GeometryManager(), and Shader::tag_update().


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