5 #ifndef _SPICA_COBJECT_H_
6 #define _SPICA_COBJECT_H_
12 #include <unordered_map>
16 #include "renderparams.h"
20 using ObjectInitializer = CObject *(*)(RenderParams&);
21 using AcceleratorInitializer = Accelerator *(*)(
const std::vector<std::shared_ptr<Primitive>> &,
34 void initModule(
const std::string &moduleName);
35 void initAccelerator(
const std::string &moduleName);
37 Accelerator *createAccelerator(
const std::string &name,
38 const std::vector<std::shared_ptr<Primitive>> &primitives,
47 void registerInitializer(
const std::string &name, ObjectInitializer initializer);
48 void registerInitializer(
const std::string &name, AcceleratorInitializer initializer);
50 std::unordered_map<std::string, ObjectInitializer> initializers_;
51 std::unordered_map<std::string, AcceleratorInitializer> accelInitializers_;
56 #define SPICA_EXPORT_PLUGIN(name, descr) \
58 CObject SPICA_EXPORTS *createInstance(RenderParams ¶ms) { \
59 return (CObject *)(new name(params)); \
61 const char SPICA_EXPORTS *getDescription() { \
66 #define SPICA_EXPORT_ACCEL_PLUGIN(name, descr) \
68 CObject SPICA_EXPORTS *createInstance(const std::vector<std::shared_ptr<Primitive>> &primitives, \
69 RenderParams ¶ms) { \
70 return (CObject *)(new name(primitives, params)); \
72 const char SPICA_EXPORTS *getDescription() { \
77 #endif // _SPICA_COBJECT_H_
Interface for intersection test accelerators.
Definition: accelerator.h:23
Definition: renderparams.h:27