acceln.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // Copyright 2009-2021 Intel Corporation
  2. // SPDX-License-Identifier: Apache-2.0
  3. #pragma once
  4. #include "accel.h"
  5. namespace embree
  6. {
  7. /*! merges N acceleration structures together, by processing them in order */
  8. class AccelN : public Accel
  9. {
  10. public:
  11. AccelN ();
  12. ~AccelN();
  13. public:
  14. void accels_add(Accel* accel);
  15. void accels_init();
  16. public:
  17. static bool pointQuery (Accel::Intersectors* This, PointQuery* query, PointQueryContext* context);
  18. public:
  19. static void intersect (Accel::Intersectors* This, RTCRayHit& ray, RayQueryContext* context);
  20. static void intersect4 (const void* valid, Accel::Intersectors* This, RTCRayHit4& ray, RayQueryContext* context);
  21. static void intersect8 (const void* valid, Accel::Intersectors* This, RTCRayHit8& ray, RayQueryContext* context);
  22. static void intersect16 (const void* valid, Accel::Intersectors* This, RTCRayHit16& ray, RayQueryContext* context);
  23. public:
  24. static void occluded (Accel::Intersectors* This, RTCRay& ray, RayQueryContext* context);
  25. static void occluded4 (const void* valid, Accel::Intersectors* This, RTCRay4& ray, RayQueryContext* context);
  26. static void occluded8 (const void* valid, Accel::Intersectors* This, RTCRay8& ray, RayQueryContext* context);
  27. static void occluded16 (const void* valid, Accel::Intersectors* This, RTCRay16& ray, RayQueryContext* context);
  28. public:
  29. void accels_print(size_t ident);
  30. void accels_immutable();
  31. void accels_build ();
  32. void accels_select(bool filter);
  33. void accels_deleteGeometry(size_t geomID);
  34. void accels_clear ();
  35. public:
  36. std::vector<Accel*> accels;
  37. };
  38. }