Skip to content

Commit 06aa69c

Browse files
committed
Merge branch 'next_release'
2 parents 2346cc0 + 00b6751 commit 06aa69c

File tree

167 files changed

+6923
-4511
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

167 files changed

+6923
-4511
lines changed

CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,20 @@
11
# Changelog
22

3+
## 0.5.0
4+
##### 2023-01-23
5+
- Update to latest ANARI SDK v0.3.0
6+
- Added support for `curve` geometry subtype
7+
- Added support `image1D` sampler subtype
8+
- Added support for `primitive.index` on `sphere` geometry
9+
- Added support for missing array types for image samplers
10+
- Added volume scattering in `dpt` renderer
11+
- Added tool (`visrtxCompileShaders`) for precompiling OptiX shaders offline
12+
- Improved robustness around object subtypes unknown to VisRTX
13+
- Improved object leak warnings on device release
14+
- Moved ambient lighting from being a light subtype into renderer parameters
15+
- Fix incorrect handling of managed arrays of objects
16+
- Fix performance bug with rays repeatedly not exiting volumes
17+
318
## 0.4.0
419
##### 2022-07-22
520
- Update to latest ANARI SDK v0.2.0

CMakeLists.txt

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,21 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
4949
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
5050
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
5151

52-
project(VisRTX VERSION 0.4.0 LANGUAGES C CXX CUDA)
52+
project(VisRTX VERSION 0.5.0 LANGUAGES C CXX CUDA)
5353

5454
include(GNUInstallDirs)
5555

56+
option(
57+
VISRTX_SET_SOVERSION
58+
"(Unix) Set the library SOVERSION propert and create namelinks?"
59+
OFF
60+
)
61+
mark_as_advanced(VISRTX_SET_SOVERSION)
62+
5663
## Dependencies ###############################################################
5764

5865
# ANARI-SDK
59-
set(ANARI_REQUIRED_VERSION 0.2.0)
66+
set(ANARI_REQUIRED_VERSION 0.3.0)
6067
find_package(anari ${ANARI_REQUIRED_VERSION} EXACT REQUIRED)
6168

6269
# glm (locally included)
@@ -79,12 +86,19 @@ enable_testing()
7986
add_subdirectory(device)
8087
add_subdirectory(examples)
8188
add_subdirectory(tests)
89+
add_subdirectory(tools)
8290

8391
## Configure CMake find_package() config files ################################
8492

85-
set(VISRTX_CMAKE_INSTALL_DESTINATION
86-
${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}-${PROJECT_VERSION}
87-
)
93+
if (VISRTX_SET_SOVERSION)
94+
set(VISRTX_CMAKE_INSTALL_DESTINATION
95+
${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}-${PROJECT_VERSION}
96+
)
97+
else()
98+
set(VISRTX_CMAKE_INSTALL_DESTINATION
99+
${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
100+
)
101+
endif()
88102

89103
install(EXPORT VisRTX_Exports
90104
DESTINATION ${VISRTX_CMAKE_INSTALL_DESTINATION}

README.md

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@ Building VisRTX requires the following:
2828

2929
- CMake 3.17+
3030
- C++17 compiler
31-
- NVIDIA Driver 470+
31+
- NVIDIA Driver 495+
3232
- CUDA 11.3.1+
33-
- [OptiX 7.3+](https://developer.nvidia.com/rtx/ray-tracing/optix)
34-
- [ANARI-SDK 0.2.0](https://github.com/KhronosGroup/ANARI-SDK)
33+
- [OptiX 7.4+](https://developer.nvidia.com/rtx/ray-tracing/optix)
34+
- [ANARI-SDK 0.3.0](https://github.com/KhronosGroup/ANARI-SDK)
3535

3636
Building VisRTX is done through invoking CMake on the source directory from a
3737
stand alone build directory. This might look like
@@ -259,22 +259,16 @@ change parameters.
259259

260260
The following features are not yet implemented by VisRTX:
261261

262-
- Geometry: `curve`
263262
- Light: `spot`, instancing
264263
- Camera: `omnidirectional`, stereo rendering, direct transform parameter
265-
- Sampler: `image1D`, `image3D`, in/out transforms on `image2D`
264+
- Sampler: `image3D`, in/out transforms on `image2D`
266265
- Frame: variance property
267266
- Sparse shared arrays (non-zero stride)
268267
- Core extensions:
269268
- `ANARI_KHR_AREA_LIGHTS`
270269
- `ANARI_KHR_FRAME_COMPLETION_CALLBACK`
271270
- `ANARI_KHR_DEVICE_SYNCHRONIZATION`
272271
- `ANARI_KHR_TRANSFORMATION_MOTION_BLUR`
273-
- Introspection for individual parameters of objects other than renderers
274-
275-
The following features have known to be incomplete:
276-
277-
- Arrays for image samplers only suport FLOAT32 type elements
278272

279273
For any found bugs in features that are implemented, please [open an
280274
issue](https://github.com/NVIDIA/VisRTX/issues/new)!

device/CMakeLists.txt

Lines changed: 50 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ target_sources(${PROJECT_NAME} PRIVATE
103103
camera/Camera.cpp
104104
camera/Orthographic.cpp
105105
camera/Perspective.cpp
106+
camera/UnknownCamera.cpp
106107

107108
frame/Denoiser.cu
108109
frame/Frame.cu
@@ -113,45 +114,55 @@ target_sources(${PROJECT_NAME} PRIVATE
113114
renderer/Raycast.cpp
114115
renderer/Renderer.cpp
115116
renderer/SciVis.cpp
117+
renderer/Test.cpp
116118

117119
scene/Group.cpp
118120
scene/Instance.cpp
119121
scene/World.cpp
120122

121-
scene/light/Ambient.cpp
122123
scene/light/Directional.cpp
123124
scene/light/Light.cpp
124125
scene/light/Point.cpp
126+
scene/light/UnknownLight.cpp
125127

126128
scene/surface/Surface.cpp
127129

128-
scene/surface/geometry/Cones.cpp
129-
scene/surface/geometry/Cylinders.cpp
130+
scene/surface/geometry/Cone.cpp
131+
scene/surface/geometry/Curve.cpp
132+
scene/surface/geometry/Cylinder.cpp
130133
scene/surface/geometry/Geometry.cpp
131-
scene/surface/geometry/Quads.cpp
132-
scene/surface/geometry/Spheres.cpp
133-
scene/surface/geometry/Triangles.cpp
134+
scene/surface/geometry/Quad.cpp
135+
scene/surface/geometry/Sphere.cpp
136+
scene/surface/geometry/Triangle.cpp
137+
scene/surface/geometry/UnknownGeometry.cpp
134138

135139
scene/surface/material/Material.cpp
136140
scene/surface/material/Matte.cpp
137141
scene/surface/material/PBR.cpp
138142
scene/surface/material/TransparentMatte.cpp
143+
scene/surface/material/UnknownMaterial.cpp
139144

140145
scene/surface/material/sampler/ColorMap.cpp
146+
scene/surface/material/sampler/Image1D.cpp
141147
scene/surface/material/sampler/Image2D.cpp
148+
scene/surface/material/sampler/ImageSamplerHelpers.cpp
142149
scene/surface/material/sampler/PrimitiveSampler.cpp
143150
scene/surface/material/sampler/Sampler.cpp
151+
scene/surface/material/sampler/UnknownSampler.cpp
144152

145153
scene/volume/Volume.cpp
146154
scene/volume/SciVisVolume.cpp
155+
scene/volume/UnknownVolume.cpp
156+
157+
scene/volume/space_skipping/UniformGrid.cu
147158

148159
scene/volume/spatial_field/SpatialField.cpp
149160
scene/volume/spatial_field/StructuredRegularField.cpp
161+
scene/volume/spatial_field/StructuredRegularField.cu
162+
scene/volume/spatial_field/UnknownSpatialField.cpp
150163

151-
utility/DeferredCommitBuffer.cpp
152-
utility/DeferredUploadBuffer.cpp
164+
utility/DeferredArrayUploadBuffer.cpp
153165
utility/instrument.cpp
154-
utility/TimeStamp.cpp
155166
)
156167

157168
generate_export_header(${PROJECT_NAME}
@@ -179,7 +190,7 @@ target_link_libraries(${PROJECT_NAME}
179190
PUBLIC
180191
anari::anari
181192
PRIVATE
182-
anari::anari_utilities
193+
anari::helium
183194
anari::anari_library_debug
184195
glm_visrtx
185196
OptiX7::OptiX7
@@ -202,19 +213,28 @@ target_compile_definitions(${PROJECT_NAME} PRIVATE visrtx_EXPORTS)
202213

203214
function(GenerateEmbeddedPTX DIR BASE_NAME)
204215
set(INPUT_CU_FILE ${DIR}/${BASE_NAME}_ptx.cu)
205-
set(INPUT_TARGET ${BASE_NAME}_ptx_gen)
216+
set(INPUT_TARGET ${BASE_NAME}_ptx)
206217
set(OUTPUT_HEADER ${CMAKE_CURRENT_BINARY_DIR}/${BASE_NAME}_ptx.h)
207218

219+
set_source_files_properties(${INPUT_CU_FILE}
220+
PROPERTIES COMPILE_FLAGS "--expt-relaxed-constexpr"
221+
)
222+
208223
add_library(${INPUT_TARGET} OBJECT ${INPUT_CU_FILE})
209224
target_link_libraries(${INPUT_TARGET}
210225
PRIVATE
226+
helium
211227
anari::anari
212228
anari::anari_utilities
213229
glm_visrtx
214230
OptiX7::OptiX7
215231
CUDA::curand
216232
)
217-
target_include_directories(${INPUT_TARGET} PRIVATE ${CMAKE_CURRENT_LIST_DIR})
233+
target_include_directories(${INPUT_TARGET}
234+
PRIVATE
235+
${CMAKE_CURRENT_BINARY_DIR}
236+
${CMAKE_CURRENT_LIST_DIR}
237+
)
218238
set_property(TARGET ${INPUT_TARGET} PROPERTY CUDA_PTX_COMPILATION ON)
219239
set_property(TARGET ${INPUT_TARGET} PROPERTY CUDA_ARCHITECTURES OFF)
220240

@@ -230,34 +250,38 @@ GenerateEmbeddedPTX(renderer Debug)
230250
GenerateEmbeddedPTX(renderer DiffusePathTracer)
231251
GenerateEmbeddedPTX(renderer Raycast)
232252
GenerateEmbeddedPTX(renderer SciVis)
253+
GenerateEmbeddedPTX(renderer Test)
233254

234255
GenerateEmbeddedPTX(scene Intersectors)
235256

236257
## Install library + headers ##
237258

238-
install(TARGETS ${PROJECT_NAME}
239-
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
240-
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
241-
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
242-
)
243-
244-
set_target_properties(${PROJECT_NAME}
245-
PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR})
246-
247259
install(TARGETS ${PROJECT_NAME}
248260
EXPORT VisRTX_Exports
249261
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
250-
NAMELINK_SKIP
251-
# on Windows put the dlls into bin
252262
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
253-
# ... and the import lib into the devel package
254263
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
255264
)
256265

266+
if (VISRTX_USE_SOVERSION)
267+
set_target_properties(${PROJECT_NAME}
268+
PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR})
269+
270+
install(TARGETS ${PROJECT_NAME}
271+
EXPORT VisRTX_Exports
272+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
273+
NAMELINK_SKIP
274+
# on Windows put the dlls into bin
275+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
276+
# ... and the import lib into the devel package
277+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
278+
)
279+
endif()
280+
257281
install(
258282
FILES
259283
${PROJECT_BINARY_DIR}/${PROJECT_NAME}_export.h
260-
${CMAKE_CURRENT_LIST_DIR}/include/anari/backend/visrtx/visrtx.h
284+
${CMAKE_CURRENT_LIST_DIR}/include/anari/ext/visrtx/visrtx.h
261285
DESTINATION
262-
${CMAKE_INSTALL_INCLUDEDIR}/anari/backend/visrtx
286+
${CMAKE_INSTALL_INCLUDEDIR}/anari/ext/visrtx
263287
)

device/Object.cpp

Lines changed: 11 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -36,38 +36,25 @@
3636

3737
namespace visrtx {
3838

39-
// Helper functions ///////////////////////////////////////////////////////////
40-
41-
std::string string_printf(const char *fmt, ...)
39+
Object::Object(ANARIDataType type, DeviceGlobalState *s)
40+
: helium::BaseObject(type, s)
4241
{
43-
std::string s;
44-
va_list args, args2;
45-
va_start(args, fmt);
46-
va_copy(args2, args);
47-
48-
s.resize(vsnprintf(nullptr, 0, fmt, args2) + 1);
49-
va_end(args2);
50-
vsprintf(s.data(), fmt, args);
51-
va_end(args);
52-
s.pop_back();
53-
return s;
42+
helium::BaseObject::markUpdated();
5443
}
5544

56-
// Object definitions /////////////////////////////////////////////////////////
57-
5845
void Object::commit()
5946
{
6047
// no-op
6148
}
6249

63-
void Object::upload()
64-
{
65-
// no-op
66-
}
67-
6850
bool Object::getProperty(
6951
const std::string_view &name, ANARIDataType type, void *ptr, uint32_t flags)
7052
{
53+
if (name == "valid" && type == ANARI_BOOL) {
54+
helium::writeToVoidP(ptr, isValid());
55+
return true;
56+
}
57+
7158
return false;
7259
}
7360

@@ -76,57 +63,14 @@ void *Object::deviceData() const
7663
return nullptr;
7764
}
7865

79-
void Object::setObjectType(ANARIDataType type)
66+
bool Object::isValid() const
8067
{
81-
m_type = type;
82-
}
83-
84-
ANARIDataType Object::type() const
85-
{
86-
return m_type;
68+
return true;
8769
}
8870

8971
DeviceGlobalState *Object::deviceState() const
9072
{
91-
return m_deviceState;
92-
}
93-
94-
void Object::setDeviceState(DeviceGlobalState *d)
95-
{
96-
if (m_deviceState)
97-
throw std::runtime_error("cannot re-target the device ptr in an object");
98-
99-
m_deviceState = d;
100-
}
101-
102-
TimeStamp Object::lastUpdated() const
103-
{
104-
return m_lastUpdated;
105-
}
106-
107-
void Object::markUpdated()
108-
{
109-
m_lastUpdated = newTimeStamp();
110-
}
111-
112-
TimeStamp Object::lastCommitted() const
113-
{
114-
return m_lastCommitted;
115-
}
116-
117-
void Object::markCommitted()
118-
{
119-
m_lastCommitted = newTimeStamp();
120-
}
121-
122-
int Object::commitPriority() const
123-
{
124-
return m_commitPriority;
125-
}
126-
127-
void Object::setCommitPriority(int priority)
128-
{
129-
m_commitPriority = priority;
73+
return (DeviceGlobalState *)helium::BaseObject::m_state;
13074
}
13175

13276
} // namespace visrtx

0 commit comments

Comments
 (0)