3 #include <ospray/ospray_util.h>
5 #include "../Backend.h"
55 return OSP_TEXTURE_RA8;
60 return OSP_TEXTURE_FORMAT_INVALID;
75 static bool once =
false;
78 ret =
static_cast<RTWError>(ospInit(
nullptr,
nullptr));
79 OSPDevice device = ospGetCurrentDevice();
82 std::runtime_error(
"OSPRay device could not be fetched!");
84 #if OSPRAY_VERSION_MINOR > 1
85 ospDeviceSetErrorCallback(device, [](
void *, OSPError,
const char *errorDetails) {
86 std::cerr <<
"OSPRay ERROR: " << errorDetails << std::endl;
89 ospDeviceSetErrorFunc(device, [](OSPError,
const char *errorDetails) {
90 std::cerr <<
"OSPRay ERROR: " << errorDetails << std::endl;
125 OSPData data = ospNewData1D(static_cast<OSPDataType>(dataType), numElements);
129 ospCopyData1D(shared, data, 0);
136 OSPData data = ospNewData2D(static_cast<OSPDataType>(dataType), numElements, numElements2);
140 ospCopyData2D(shared, data, 0, 0);
147 OSPData data =
ospNewData(static_cast<OSPDataType>(dataType), numElements, numElements2, numElements3);
149 OSPData shared =
ospNewSharedData3D(source, static_cast<OSPDataType>(dataType), numElements, numElements2, numElements3);
151 ospCopyData(shared, data, 0, 0, 0);
159 return reinterpret_cast<RTWData>(
ospNewData(static_cast<OSPDataType>(dataType), numElements));
183 uint32_t numItems3)
override
186 numItems1, numItems2, numItems3));
251 ospRelease(reinterpret_cast<OSPObject>(
object));
256 ospSetString(reinterpret_cast<OSPObject>(
object),
id, s);
261 ospSetObject(reinterpret_cast<OSPObject>(
object),
id, reinterpret_cast<OSPObject>(other));
266 reinterpret_cast<OSPObject>(obj));
271 ospSetParam(reinterpret_cast<OSPObject>(
object),
id, static_cast<OSPDataType>(dataType),
277 ospSetInt(reinterpret_cast<OSPObject>(
object),
id, x);
282 ospSetBool(reinterpret_cast<OSPObject>(
object),
id, x);
287 ospSetFloat(reinterpret_cast<OSPObject>(
object),
id, x);
292 ospSetVec2f(reinterpret_cast<OSPObject>(
object),
id, x, y);
297 ospSetVec2i(reinterpret_cast<OSPObject>(
object),
id, x, y);
302 ospSetVec3i(reinterpret_cast<OSPObject>(
object),
id, x, y, z);
307 ospSetVec3f(reinterpret_cast<OSPObject>(
object),
id, x, y, z);
312 ospSetVec4f(reinterpret_cast<OSPObject>(
object),
id, x, y, z, w);
322 ospCommit(reinterpret_cast<OSPObject>(
object));
327 return ospRenderFrameBlocking(reinterpret_cast<OSPFrameBuffer>(frameBuffer), reinterpret_cast<OSPRenderer>(renderer),
328 reinterpret_cast<OSPCamera>(camera), reinterpret_cast<OSPWorld>(world));
333 ospResetAccumulation(reinterpret_cast<OSPFrameBuffer>(frameBuffer));
338 return ospMapFrameBuffer(reinterpret_cast<OSPFrameBuffer>(frameBuffer), static_cast<OSPFrameBufferChannel>(channel));
struct RTWHandle * RTWObject
RTWData NewSharedData3D(const void *sharedData, RTWDataType type, uint32_t numItems1, uint32_t numItems2, uint32_t numItems3) override
float RenderFrame(RTWFrameBuffer frameBuffer, RTWRenderer renderer, RTWCamera camera, RTWWorld world) override
void SetDepthNormalizationGL(RTWFrameBuffer, float, float) override
void SetString(RTWObject object, const char *id, const char *s) override
#define OSP_TEXTURE_RGBA32F
RTWGroup NewGroup() override
RTWVolume NewVolume(const char *type) override
#define ospNewSharedData1D
void FrameBufferClear(RTWFrameBuffer frameBuffer) override
#define OSP_TEXTURE_RGB32F
void SetFloat(RTWObject object, const char *id, float x) override
RTWData NewCopyData2D(const void *source, RTWDataType dataType, size_t numElements, size_t numElements2) override
void SetVec3i(RTWObject object, const char *id, int x, int y, int z) override
#define ospSetObjectAsData
bool IsSupported(RTWFeature feature) const override
struct RTWHandle * RTWInstance
int GetColorTextureGL(RTWFrameBuffer) override
void UnmapFrameBuffer(const void *mapped, RTWFrameBuffer frameBuffer) override
struct RTWHandle * RTWRenderer
RTWData NewSharedData1D(const void *sharedData, RTWDataType type, uint32_t numItems1) override
RTWRenderer NewRenderer(const char *type) override
void SetVec2f(RTWObject object, const char *id, float x, float y) override
void SetVec3f(RTWObject object, const char *id, float x, float y, float z) override
#define ospNewGeometricModel
struct RTWHandle * RTWVolumetricModel
#define ospNewVolumetricModel
RTWMaterial NewMaterial(const char *renderer_type, const char *material_type) override
void SetInt(RTWObject object, const char *id, int32_t x) override
RTWFrameBuffer NewFrameBuffer(const rtw::vec2i &size, const RTWFrameBufferFormat format, const uint32_t frameBufferChannels) override
#define ospMapFrameBuffer
RTWWorld NewWorld() override
struct RTWHandle * RTWCamera
void SetVec4f(RTWObject object, const char *id, float x, float y, float z, float w) override
RTWCamera NewCamera(const char *type) override
RTWGeometricModel NewGeometricModel(RTWGeometry geometry) override
struct RTWHandle * RTWGeometry
void SetObject(RTWObject object, const char *id, RTWObject other) override
RTWTransferFunction NewTransferFunction(const char *type) override
void Release(RTWObject object) override
struct RTWHandle * RTWData
boost::graph_traits< vtkGraph * >::vertex_descriptor target(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
RTWData NewCopyData1D(const void *source, RTWDataType dataType, size_t numElements) override
#define OSP_TEXTURE_SRGBA
#define ospNewSharedData2D
void SetObjectAsData(RTWObject target, const char *id, RTWDataType type, RTWObject obj) override
void Commit(RTWObject object) override
const void * MapFrameBuffer(RTWFrameBuffer frameBuffer, const RTWFrameBufferChannel channel) override
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
struct RTWHandle * RTWGeometricModel
struct RTWHandle * RTWFrameBuffer
void SetParam(RTWObject object, const char *id, RTWDataType dataType, const void *mem) override
#define ospNewSharedData3D
int GetDepthTextureGL(RTWFrameBuffer) override
struct RTWHandle * RTWWorld
struct RTWHandle * RTWGroup
struct RTWHandle * RTWTransferFunction
RTWVolumetricModel NewVolumetricModel(RTWVolume volume) override
struct RTWHandle * RTWMaterial
RTWData NewSharedData2D(const void *sharedData, RTWDataType type, uint32_t numItems1, uint32_t numItems2) override
#define ospNewTransferFunction
void RemoveParam(RTWObject object, const char *id) override
#define ospUnmapFrameBuffer
struct RTWHandle * RTWTexture
RTWLight NewLight(const char *light_type) override
OSPFrameBufferFormat convert(RTWFrameBufferFormat format)
RTWTexture NewTexture(const char *type) override
RTWData NewData(RTWDataType dataType, size_t numElements) override
#define OSP_TEXTURE_RGBA8
#define ospNewFrameBuffer
void SetVec2i(RTWObject object, const char *id, int x, int y) override
struct RTWHandle * RTWVolume
RTWData NewCopyData3D(const void *source, RTWDataType dataType, size_t numElements, size_t numElements2, size_t numElements3) override
void SetBool(RTWObject object, const char *id, bool x) override
struct RTWHandle * RTWLight
RTWGeometry NewGeometry(const char *type) override
RTWInstance NewInstance(RTWGroup geometry) override