diff options
author | Kevin Dietrich <kevin.dietrich@mailoo.org> | 2021-01-25 17:12:00 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2021-01-25 17:51:42 +0300 |
commit | b64f0fab068169a7c379be728aae8994eb893b18 (patch) | |
tree | aacd3c07a499838f908e23d4ac1180364a0b78b3 /intern/cycles/render/scene.h | |
parent | 2e67191c861f2cb148f05af116114e7332b8e789 (diff) |
Cycles: internal support for Alembic procedurals
The implementation is currently optimized to load animation sequences once
and then quickly scrubbing through them. Later on an option should be added
to optimize for memory usage and only load the current frame into memory.
Currently mesh and curve objects are supported, including support for UV and
vertex color attributes. Missing still is support for arbitrary attributes and
motion blur, as well as better handling of changing topology. Shader assignments
are made using FaceSets found in the Alembic archive.
The animation (and constant) data of the objects inside the Alembic archive is
loaded at once at the beginning of the render and kept inside a cache. At each
frame change we simply update the right socket of the corresponding Cycles node
if the data is animated. This allows for fast playback in the viewport
(depending on the scene size and compute power).
Note this is not yet exposed in the Blender UI, it's a feature that is still under
development and not ready for general use.
Ref T79174, D3089
Diffstat (limited to 'intern/cycles/render/scene.h')
-rw-r--r-- | intern/cycles/render/scene.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/intern/cycles/render/scene.h b/intern/cycles/render/scene.h index 2deb3cd91e5..7595817226c 100644 --- a/intern/cycles/render/scene.h +++ b/intern/cycles/render/scene.h @@ -36,6 +36,7 @@ CCL_NAMESPACE_BEGIN +class AlembicProcedural; class AttributeRequestSet; class Background; class BVH; @@ -383,6 +384,8 @@ template<> ParticleSystem *Scene::create_node<ParticleSystem>(); template<> Shader *Scene::create_node<Shader>(); +template<> AlembicProcedural *Scene::create_node<AlembicProcedural>(); + template<> void Scene::delete_node_impl(Light *node); template<> void Scene::delete_node_impl(Mesh *node); @@ -401,6 +404,8 @@ template<> void Scene::delete_node_impl(Shader *node); template<> void Scene::delete_node_impl(Procedural *node); +template<> void Scene::delete_node_impl(AlembicProcedural *node); + template<> void Scene::delete_nodes(const set<Light *> &nodes, const NodeOwner *owner); template<> void Scene::delete_nodes(const set<Geometry *> &nodes, const NodeOwner *owner); |