5 #include <ospray/ospray_util.h>
7 #include "../Backend.h"
18 VTK_ABI_NAMESPACE_BEGIN
58 return OSP_TEXTURE_RA8;
63 return OSP_TEXTURE_FORMAT_INVALID;
78 static bool once =
false;
81 ret =
static_cast<RTWError>(ospInit(
nullptr,
nullptr));
82 OSPDevice device = ospGetCurrentDevice();
85 std::runtime_error(
"OSPRay device could not be fetched!");
87 #if OSPRAY_VERSION_MINOR > 1
88 ospDeviceSetErrorCallback(device, [](
void *, OSPError,
const char *errorDetails) {
89 std::cerr <<
"OSPRay ERROR: " << errorDetails << std::endl;
92 ospDeviceSetErrorFunc(device, [](OSPError,
const char *errorDetails) {
93 std::cerr <<
"OSPRay ERROR: " << errorDetails << std::endl;
128 OSPData data = ospNewData1D(static_cast<OSPDataType>(dataType), numElements);
132 ospCopyData1D(shared, data, 0);
139 OSPData data = ospNewData2D(static_cast<OSPDataType>(dataType), numElements, numElements2);
143 ospCopyData2D(shared, data, 0, 0);
150 OSPData data =
ospNewData(static_cast<OSPDataType>(dataType), numElements, numElements2, numElements3);
152 OSPData shared =
ospNewSharedData3D(source, static_cast<OSPDataType>(dataType), numElements, numElements2, numElements3);
154 ospCopyData(shared, data, 0, 0, 0);
162 return reinterpret_cast<RTWData>(
ospNewData(static_cast<OSPDataType>(dataType), numElements));
186 uint32_t numItems3)
override
189 numItems1, numItems2, numItems3));
254 ospRelease(reinterpret_cast<OSPObject>(
object));
259 ospSetString(reinterpret_cast<OSPObject>(
object),
id, s);
264 ospSetObject(reinterpret_cast<OSPObject>(
object),
id, reinterpret_cast<OSPObject>(other));
269 reinterpret_cast<OSPObject>(obj));
274 ospSetParam(reinterpret_cast<OSPObject>(
object),
id, static_cast<OSPDataType>(dataType),
280 ospSetInt(reinterpret_cast<OSPObject>(
object),
id, x);
285 ospSetBool(reinterpret_cast<OSPObject>(
object),
id, x);
290 ospSetFloat(reinterpret_cast<OSPObject>(
object),
id, x);
295 ospSetVec2f(reinterpret_cast<OSPObject>(
object),
id, x, y);
300 ospSetVec2i(reinterpret_cast<OSPObject>(
object),
id, x, y);
305 ospSetVec3i(reinterpret_cast<OSPObject>(
object),
id, x, y, z);
310 ospSetVec3f(reinterpret_cast<OSPObject>(
object),
id, x, y, z);
315 ospSetVec4f(reinterpret_cast<OSPObject>(
object),
id, x, y, z, w);
325 ospCommit(reinterpret_cast<OSPObject>(
object));
330 return ospRenderFrameBlocking(reinterpret_cast<OSPFrameBuffer>(frameBuffer), reinterpret_cast<OSPRenderer>(renderer),
331 reinterpret_cast<OSPCamera>(camera), reinterpret_cast<OSPWorld>(world));
336 ospResetAccumulation(reinterpret_cast<OSPFrameBuffer>(frameBuffer));
341 return ospMapFrameBuffer(reinterpret_cast<OSPFrameBuffer>(frameBuffer), static_cast<OSPFrameBufferChannel>(channel));
366 VTK_ABI_NAMESPACE_END
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