TriangleSplitterMorton.h 924 B

1234567891011121314151617181920212223242526272829303132
  1. // Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
  2. // SPDX-FileCopyrightText: 2021 Jorrit Rouwe
  3. // SPDX-License-Identifier: MIT
  4. #pragma once
  5. #include <Jolt/TriangleSplitter/TriangleSplitter.h>
  6. JPH_NAMESPACE_BEGIN
  7. /// Splitter using Morton codes, see: http://devblogs.nvidia.com/parallelforall/thinking-parallel-part-iii-tree-construction-gpu/
  8. class JPH_EXPORT TriangleSplitterMorton : public TriangleSplitter
  9. {
  10. public:
  11. /// Constructor
  12. TriangleSplitterMorton(const VertexList &inVertices, const IndexedTriangleList &inTriangles);
  13. // See TriangleSplitter::GetStats
  14. virtual void GetStats(Stats &outStats) const override
  15. {
  16. outStats.mSplitterName = "TriangleSplitterMorton";
  17. }
  18. // See TriangleSplitter::Split
  19. virtual bool Split(const Range &inTriangles, Range &outLeft, Range &outRight) override;
  20. private:
  21. // Precalculated Morton codes
  22. Array<uint32> mMortonCodes;
  23. };
  24. JPH_NAMESPACE_END