Blender Git Loki
Git Commits -> Revision f68493f
Revision f68493f by Joseph Eagar October 19, 2020, 11:10 (GMT) |
Little design study for new API to replace various pbvh/sculpt iterators (uncomment PROXY_ADVANCED in BKE_pbvh to enable): + Same idea as existing pbvh proxies. + Based on "struct of arrays" approach. + New ProxyVeryArray structure holds all the coordinates, normals, indices, neighbor references, color, mask, etc data--basically everything in PBVHVertIter and SculptNeightborIter. + Only the desired data is stored. Client code can pass a mask stating which data layers it wants; e.g. normals, coordiantes, etc. There's a lot of advantages to this approach: simpler and more maintainable code, possibility of SSE/opencl/cuda vectorization down the line, etc. More importantly for this branch, it should be a great profiling tool. No more trying to figure out which bit of API cruft is causing the CPU cache to go haywire. I can eliminate a lot of performance bugs and concentrate on the ones related to DynTopo. |
Commit Details:
Full Hash: f68493f5bee352d4a7feb90c2488a264607c84ac
Parent Commit: 9f004eb
Lines Changed: +605, -58
6 Modified Paths:
/source/blender/blenkernel/BKE_pbvh.h (+126, -53) (Diff)
/source/blender/blenkernel/intern/pbvh.c (+381, -4) (Diff)
/source/blender/blenkernel/intern/pbvh_intern.h (+4, -1) (Diff)
/source/blender/editors/sculpt_paint/sculpt.c (+1, -0) (Diff)
/source/blender/editors/sculpt_paint/sculpt_intern.h (+1, -0) (Diff)
/source/blender/editors/sculpt_paint/sculpt_smooth.c (+92, -0) (Diff)
/source/blender/blenkernel/intern/pbvh.c (+381, -4) (Diff)
/source/blender/blenkernel/intern/pbvh_intern.h (+4, -1) (Diff)
/source/blender/editors/sculpt_paint/sculpt.c (+1, -0) (Diff)
/source/blender/editors/sculpt_paint/sculpt_intern.h (+1, -0) (Diff)
/source/blender/editors/sculpt_paint/sculpt_smooth.c (+92, -0) (Diff)