TriangleSplitterMorton.h 849 B

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