Added performance notes.
This commit is contained in:
parent
5aa631da8f
commit
ff567aa9f8
@ -57,6 +57,10 @@ namespace PolyVox
|
|||||||
|
|
||||||
// For profiling this function
|
// For profiling this function
|
||||||
Timer timer;
|
Timer timer;
|
||||||
|
|
||||||
|
// Performance note: Profiling indicates that simply adding vertices and indices to the std::vector is one
|
||||||
|
// of the bottlenecks when generating the mesh. Reserving space in advance helps here but is wasteful in the
|
||||||
|
// common case that no/few vertices are generated. Maybe it's worth reserving a couple of thousand or so?
|
||||||
result->clear();
|
result->clear();
|
||||||
|
|
||||||
// Store some commonly used values for performance and convienience
|
// Store some commonly used values for performance and convienience
|
||||||
@ -160,6 +164,12 @@ namespace PolyVox
|
|||||||
if (uEdge != 0)
|
if (uEdge != 0)
|
||||||
{
|
{
|
||||||
auto v111Density = controller.convertToDensity(v111);
|
auto v111Density = controller.convertToDensity(v111);
|
||||||
|
|
||||||
|
// Performance note: Computing normals is one of the bottlencks in the mesh generation process. The
|
||||||
|
// central difference approach actually samples the same voxel more than once as we call it on two
|
||||||
|
// adjacent voxels. Perhaps we could expand this and eliminate dupicates in the future. Alternatively,
|
||||||
|
// we could compute vertex normals from adjacent face normals instead of via central differencing,
|
||||||
|
// but not for vertices on the edge of the region (as this causes visual discontinities).
|
||||||
const Vector3DFloat n000 = computeCentralDifferenceGradient(sampler, controller);
|
const Vector3DFloat n000 = computeCentralDifferenceGradient(sampler, controller);
|
||||||
|
|
||||||
/* Find the vertices where the surface intersects the cube */
|
/* Find the vertices where the surface intersects the cube */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user