|
Blender
V2.93
|
#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 |
Definition at line 193 of file geometry.h.
| anonymous enum : uint32_t |
Definition at line 197 of file geometry.h.
| GeometryManager::GeometryManager | ( | ) |
Definition at line 301 of file geometry.cpp.
References need_flags_update, and UPDATE_ALL.
| GeometryManager::~GeometryManager | ( | ) |
Definition at line 307 of file geometry.cpp.
| void GeometryManager::collect_statistics | ( | const Scene * | scene, |
| RenderStats * | stats | ||
| ) |
Definition at line 2142 of file geometry.cpp.
References NamedSizeStats::add_entry(), Scene::geometry, MeshStats::geometry, Node::get_total_size_in_bytes(), RenderStats::mesh, Node::name, and scene.
Referenced by Scene::collect_statistics().
Definition at line 502 of file volume.cpp.
References AttributeSet::add(), VolumeMeshBuilder::add_padding(), Mesh::add_triangle(), Mesh::add_vertex(), ATTR_ELEMENT_VOXEL, ATTR_STD_FACE_NORMAL, AttributeSet::attributes, Geometry::attributes, Volume::clear(), VolumeMeshBuilder::create_mesh(), device_memory::data_elements, Attribute::data_float3(), Attribute::data_voxel(), Attribute::element, VolumeMeshBuilder::empty_grid(), hash_string(), hash_uint_to_float(), ImageHandle::image_memory(), indices, max, ImageHandle::metadata(), Node::name, Geometry::need_update_rebuild, node, NULL, Mesh::reserve_mesh(), Progress::set_status(), shader(), string_printf(), ImageMetaData::transform_3d, ImageHandle::vdb_loader(), VLOG, VOLUME_INTERPOLATION_CUBIC, and VOLUME_INTERPOLATION_LINEAR.
| void GeometryManager::device_free | ( | Device * | device, |
| DeviceScene * | dscene, | ||
| bool | force_free | ||
| ) |
Definition at line 2085 of file geometry.cpp.
References DeviceScene::attributes_float, DeviceScene::attributes_float2, DeviceScene::attributes_float3, DeviceScene::attributes_map, DeviceScene::attributes_uchar4, KernelData::bvh, KernelBVH::bvh_layout, BVH_LAYOUT_NONE, DeviceScene::bvh_leaf_nodes, DeviceScene::bvh_nodes, DeviceScene::curve_keys, DeviceScene::curves, DeviceScene::data, device_vector< T >::free_if_need_realloc(), DeviceScene::object_node, Device::osl_memory(), DeviceScene::patches, DeviceScene::prim_index, DeviceScene::prim_object, DeviceScene::prim_time, DeviceScene::prim_tri_index, DeviceScene::prim_tri_verts, DeviceScene::prim_type, DeviceScene::prim_visibility, DeviceScene::tri_patch, DeviceScene::tri_patch_uv, DeviceScene::tri_shader, DeviceScene::tri_vindex, and DeviceScene::tri_vnormal.
Referenced by Scene::free_memory().
| void GeometryManager::device_update | ( | Device * | device, |
| DeviceScene * | dscene, | ||
| Scene * | scene, | ||
| Progress & | progress | ||
| ) |
Definition at line 1749 of file geometry.cpp.
References Mesh::add_face_normals(), Mesh::add_undisplaced(), Mesh::add_vertex_normals(), ATTR_STD_POSITION_UNDISPLACED, Scene::geometry, Geometry::geometry_type, Progress::get_cancel(), Geometry::has_true_displacement(), Node::is_modified(), Geometry::MESH, mesh, Geometry::need_attribute(), Mesh::need_tesselation(), need_update(), scene, time, Scene::update_stats, VLOG, and Geometry::VOLUME.
Referenced by Scene::device_update().
|
protected |
Definition at line 715 of file geometry.cpp.
References AttributeRequestSet::add(), AttributeSet::add(), device_vector< T >::alloc(), ATTR_ELEMENT_OBJECT, ATTR_PRIM_GEOMETRY, ATTR_PRIM_SUBD, Geometry::attributes, DeviceScene::attributes_float, DeviceScene::attributes_float2, DeviceScene::attributes_float3, DeviceScene::attributes_uchar4, Attribute::buffer, device_vector< T >::copy_to_device(), AttributeRequest::desc, ObjectManager::device_update_mesh_offsets(), AttributeRequestSet::find(), AttributeSet::find(), Scene::geometry, Progress::get_cancel(), Geometry::index, Geometry::is_mesh(), mesh, Attribute::modified, Scene::need_global_attributes(), device_vector< T >::need_realloc(), node, Scene::object_manager, Scene::objects, AttributeRequestSet::requests, scene, Progress::set_status(), shader(), Scene::shader_manager, AttributeRequest::subd_desc, AttributeRequest::subd_type, AttributeRequest::type, update_attribute_element_size(), update_osl_attributes(), update_svm_attributes(), and ShaderManager::use_osl().
|
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().
|
protected |
Definition at line 1675 of file geometry.cpp.
References ImageManager::device_update_slot(), DISPLACE_BUMP, function_bind, Scene::geometry, ImageSlotTextureNode::handle, Scene::image_manager, Node::is_modified(), node, ImageHandle::num_tiles(), blender::compositor::pool, TaskPool::push(), scene, Progress::set_status(), shader(), SHADER_SPECIAL_TYPE_IMAGE_SLOT, ImageHandle::svm_slot(), and TaskPool::wait_work().
|
protected |
Definition at line 1025 of file geometry.cpp.
References device_vector< T >::alloc(), PackedPatchTable::copy_adjusting_offsets(), device_vector< T >::copy_to_device(), device_vector< T >::copy_to_device_if_modified(), DeviceScene::curve_keys, Hair::curvekey_offset, DeviceScene::curves, float3_to_float4(), Scene::geometry, Geometry::geometry_type, Progress::get_cancel(), Mesh::get_num_subd_faces(), Mesh::get_subd_face(), Mesh::get_triangle(), Geometry::is_hair(), Geometry::is_mesh(), Geometry::MESH, mesh, device_vector< T >::need_realloc(), Hair::num_curves(), Mesh::SubdFace::num_ptex_faces(), Mesh::num_triangles(), Hair::pack_curves(), Mesh::pack_normals(), Mesh::pack_patches(), Mesh::pack_shaders(), Mesh::pack_verts(), DeviceScene::patches, DeviceScene::prim_index, Geometry::prim_offset, DeviceScene::prim_tri_index, DeviceScene::prim_tri_verts, DeviceScene::prim_type, PRIMITIVE_ALL_TRIANGLE, Mesh::SubdFace::ptex_offset, scene, Progress::set_status(), device_vector< T >::size(), Mesh::size, t, PackedPatchTable::total_size(), DeviceScene::tri_patch, DeviceScene::tri_patch_uv, DeviceScene::tri_shader, DeviceScene::tri_vindex, DeviceScene::tri_vnormal, vnormal(), and Geometry::VOLUME.
|
protected |
| 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().
|
protected |
Definition at line 1713 of file geometry.cpp.
References ATTR_ELEMENT_VOXEL, AttributeSet::attributes, Geometry::attributes, Attribute::data_voxel(), ImageManager::device_update_slot(), Attribute::element, function_bind, Scene::geometry, Scene::image_manager, Node::is_modified(), blender::compositor::pool, TaskPool::push(), scene, Progress::set_status(), ImageHandle::svm_slot(), ImageHandle::vdb_loader(), and TaskPool::wait_work().
|
protected |
Definition at line 46 of file mesh_displace.cpp.
References __float_as_int(), Mesh::add_face_normals(), device_vector< T >::alloc(), ATTR_STD_FACE_NORMAL, ATTR_STD_MOTION_VERTEX_NORMAL, ATTR_STD_MOTION_VERTEX_POSITION, ATTR_STD_VERTEX_NORMAL, Geometry::attributes, compute_face_normal(), Device::const_copy_to(), device_vector< T >::copy_from_device(), device_vector< T >::copy_to_device(), device_vector< T >::data(), DeviceScene::data, Attribute::data_float3(), Scene::default_surface, device_memory::device_pointer, DISPLACE_BUMP, DISPLACE_TRUE, ensure_finite3(), AttributeSet::find(), float4_to_float3(), device_vector< T >::free(), function_bind, Progress::get_cancel(), Mesh::get_triangle(), Geometry::has_motion_blur(), Geometry::has_true_displacement(), make_uint4(), MEM_READ_ONLY, MEM_READ_WRITE, mesh, Node::name, node, normalize(), NULL, Mesh::num_triangles(), OBJECT_NONE, Scene::objects, pos, Geometry::prim_offset, AttributeSet::remove(), scene, Progress::set_status(), DeviceTask::SHADER, shader(), SHADER_EVAL_DISPLACE, device_vector< T >::size(), Mesh::size, string_printf(), t, blender::compositor::task, Device::task_add(), Device::task_wait(), Geometry::transform_negative_scaled, Mesh::Triangle::v, v, verts, zero_float3(), and device_vector< T >::zero_to_device().
Definition at line 956 of file geometry.cpp.
References BVH_LAYOUT_MULTI_OPTIX, BVH_LAYOUT_MULTI_OPTIX_EMBREE, BVH_LAYOUT_OPTIX, Hair::curvekey_offset, Scene::geometry, Geometry::geometry_type, Mesh::get_num_subd_faces(), Mesh::get_subd_face(), Geometry::is_hair(), Geometry::MESH, mesh, Geometry::need_update_bvh_for_offset, Geometry::need_update_rebuild, Hair::num_curves(), Mesh::SubdFace::num_ptex_faces(), Hair::num_segments(), Mesh::num_triangles(), Geometry::optix_prim_offset, Geometry::prim_offset, Mesh::SubdFace::ptex_offset, scene, Mesh::size, PackedPatchTable::total_size(), and Geometry::VOLUME.
| 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().
Definition at line 2127 of file geometry.cpp.
References ObjectManager::GEOMETRY_MANAGER, OBJECT_MANAGER, Scene::object_manager, scene, and ObjectManager::tag_update().
Referenced by Scene::create_node(), Scene::delete_node_impl(), Scene::delete_nodes(), Scene::reset(), Film::tag_passes_update(), Shader::tag_update(), Geometry::tag_update(), and ObjectManager::tag_update().
|
protected |
Definition at line 311 of file geometry.cpp.
References ATTR_ELEMENT_NONE, ATTR_ELEMENT_OBJECT, ATTR_PRIM_GEOMETRY, ATTR_PRIM_SUBD, ATTR_PRIM_TYPES, ATTR_STD_NONE, Object::attributes, AttributeRequest::desc, AttributeDescriptor::element, Scene::geometry, Node::name, AttributeRequest::name, Scene::objects, Device::osl_memory(), AttributeRequestSet::requests, scene, Attribute::standard_name(), AttributeRequest::std, AttributeRequest::subd_desc, AttributeRequest::subd_type, AttributeDescriptor::type, AttributeRequest::type, TypeFloat2(), and TypeRGBA().
Referenced by device_update_attributes().
|
protected |
Definition at line 470 of file geometry.cpp.
References device_vector< T >::alloc(), Geometry::attr_map_offset, Object::attr_map_offset, ATTR_PRIM_TYPES, DeviceScene::attributes_map, device_vector< T >::copy_to_device(), emit_attribute_map_terminator(), emit_attribute_mapping(), Scene::geometry, device_vector< T >::need_realloc(), Scene::objects, AttributeRequestSet::requests, scene, AttributeRequestSet::size(), device_vector< T >::size(), and size().
Referenced by device_update_attributes().
| bool GeometryManager::need_flags_update |
Definition at line 224 of file geometry.h.
Referenced by device_update_preprocess(), GeometryManager(), and Shader::tag_update().