Vaiva Kazanaviciute
play_w_madness
About Me
専門知識
VFX Artist
業界:
Film/TV
Houdini Engine
ADVANCED
Digital Assets | Pyro FX | VEX | Python
INTERMEDIATE
プロシージャルワークフロー | Solaris | Mantra | Karma | Fluids | 説明 | PDG
BEGINNER
Realtime FX
Availability
Not Specified
Recent Forum Posts
Pink lines in viewport 2024年7月1日12:37
On the button strip to the right of the viewport there's a "display primitive normals" toggle
Need help with improving this flip simulation 2024年6月28日13:08
Looks like container boundaries, it's too shallow and there's not enough padding above the water level
What is the data storage method of Houdini Opencl? 2024年6月15日14:50
From https://www.sidefx.com/docs/hdk/_s_i_m___geometry_8h_source.html [www.sidefx.com] :
From https://www.sidefx.com/docs/hdk/_g_a___c_e_attribute_8h_source.html [www.sidefx.com] :
So, I imagine a correct way of obtaining a handle to a GPU buffer would be to obtain GA_CEAttribute ptr from SIM_Geometry
that you get from SIM_Object
that you get from GAS_SubSolver::solveGasSubclass override in your solver class.
And judging by SIM_Geometry public interface, I think it's not going to alloc/build a new buffer for attrib if there already exists one and it wasn't flushed
/// Attempt to build a GPU-backed attribute from our geometry. /// Returns 0 on failure. /// You do not own the resulting GA_CEAttribute. GA_CEAttribute* SIM_Geometry::getReadableCEAttribute(GA_AttributeOwner owner, const UT_StringRef &aname, GA_StorageClass storage, int &tuplesize, bool isarray, bool docopy) const { return getReadableCEAttributePrec(owner, aname, storage, GA_PRECISION_32, tuplesize, isarray, docopy); } virtual GA_CEAttribute* SIM_Geometry::getReadableCEAttributePrec(GA_AttributeOwner owner, const UT_StringRef &aname, GA_StorageClass storage, GA_Precision prec, int &tuplesize, bool isarray, bool docopy) const;
From https://www.sidefx.com/docs/hdk/_g_a___c_e_attribute_8h_source.html [www.sidefx.com] :
cl::Buffer GA_CEAttribute::buffer() const { return myBuffer; } cl::Buffer GA_CEAttribute::indexBuffer() const { return myIndexBuffer; }
So, I imagine a correct way of obtaining a handle to a GPU buffer would be to obtain GA_CEAttribute ptr from SIM_Geometry
that you get from SIM_Object
that you get from GAS_SubSolver::solveGasSubclass override in your solver class.
And judging by SIM_Geometry public interface, I think it's not going to alloc/build a new buffer for attrib if there already exists one and it wasn't flushed