accelinstance.h 891 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. // Copyright 2009-2021 Intel Corporation
  2. // SPDX-License-Identifier: Apache-2.0
  3. #pragma once
  4. #include "accel.h"
  5. #include "builder.h"
  6. namespace embree
  7. {
  8. class AccelInstance : public Accel
  9. {
  10. public:
  11. AccelInstance (AccelData* accel, Builder* builder, Intersectors& intersectors)
  12. : Accel(AccelData::TY_ACCEL_INSTANCE,intersectors), accel(accel), builder(builder) {}
  13. void immutable () {
  14. builder.reset(nullptr);
  15. }
  16. public:
  17. void build () {
  18. if (builder) builder->build();
  19. bounds = accel->bounds;
  20. }
  21. void deleteGeometry(size_t geomID) {
  22. if (accel ) accel->deleteGeometry(geomID);
  23. if (builder) builder->deleteGeometry(geomID);
  24. }
  25. void clear() {
  26. if (accel) accel->clear();
  27. if (builder) builder->clear();
  28. }
  29. private:
  30. std::unique_ptr<AccelData> accel;
  31. std::unique_ptr<Builder> builder;
  32. };
  33. }