Release history
v0.18.2 - 2024-12-13
Changed
Moved to OptiX 8.1.
Encoder code upgraded to use FFmpeg 7.0; FFmpeg libs excluded from the Windows release (too large to keep them within the package).
v0.18.1 - 2024-03-09
Added
Intel Open Image Denoiser libraries: HDR/LDR, supporting RGB/Albedo/Normal inputs.
Optional counting of transmission path segments (previously they were counted always and included in the segment range limits).
Const-size geometry primitives (same radii, or u/v/w vectors for all data points) with much lower memory consumption, beneficial e.g. for volume plots.
Volume coloring material for semi-transparent volume visualization (experimental).
Changed
Reviewed and improved camera kernels.
Fixed
Require min SM 5.0 instead of 6.0.
Minor lighting issues with masked transparency materials.
v0.17.1 - 2023-10-06
Added
Noise-balanced work distribution: absolute and relative noise modes.
v0.17.0 - 2023-08-18
Added
Noise-balanced work distribution.
v0.16.1 - 2023-06-04
NOTE: Binaries recompiled with OptiX 7.7, NVIDIA driver r530 or above is required.
Added
CuPy support for texture and geometry data updates
New curve geometries: Ribbon, Beziers
Changed
no dedicated PyTorch/CuPy/… methods, all types handled with single corresponding method
v0.16.0 - 2023-05-17
Added
set texture data from pytorch tensors
texture filter modes enabled, default is trilinear, optionally can be changed to nearest
set geometry data directly from numpy array or pytorch tensor (no host copy is mada)
synchronization method to update host copy with data from gpu: NpOptiX.sync_raw_data()
convenience method to get a copy of geometry data (more simple than PinnedBuffer, though returns a copy): NpOptiX.get_data()
v0.15.1 - 2023-03-16
Added
OpenCV-like intrinsic matrix in camera setup
configurable denoiser start frame
Changed
ovrlaping refractive volumes handling
v0.15.0 - 2022-12-30
NOTE: NVIDIA driver r520 or above is required.
Added
AI upsampler and HDR denoiser
Catmull-Rom curve primitive
Changed
binaries updated to OptiX 7.6
raytracing and callbacks workflow explained in the docs
v0.14.4 - 2022-10-27
Changed
packages updated to VS 2022, DllExport changed to the one by 3F
code updated to support pythonnet 3.0, thus compatible with all pythons up to 3.10
v0.14.3 - 2022-08-13
NOTE: NVIDIA driver r515 or above is required.
Changed
updated to use OptiX 7.5 (performance improvements are in, new features in the next release),
PTX replaced with IR format, generated with CUDA 11.7
several multi-gpu improvements and fixes
v0.14.2 - 2021-10-10
Changed
fix crashes on pipeline compilation config changes
v0.14.1 - 2021-07-23
Changed
updated to use OptiX 7.3 (performance improvements are in, new features in the next release), PTX generated with CUDA 11.4
v0.14.0 - 2021-07-03
Added
delete_geometry() method
Changed
all set_xxx methods available for geometries, cameras, lights, materials now can update also properties of existing objects; properties possible to update are listed in docs
improved triangulation of faces of uploaded mesh: all polygons without holes are handled
Fixed
one shader per ptx to fix problems with 471.11 driver
v0.13.3 - 2021-03-08
Added
option to save abedo and normal buffers also when they are not required by the denoiser
edge id and edge vertex id for graphs encoded in hit_info in the same was as face id and vertex id for meshes
improved speed of selecting unique edges in the mesh
specialized support for the coverage estimation in mobile communications
improved docs
v0.13.2 - 2020-12-21
Added
camera projection modes with ray origins and ray directions/targets defined with textures
v0.13.1 - 2020-12-21
This is PyPI-only release that fixes bug in binaries packaging.
v0.13.0 - 2020-12-21
Added
improved memory model: some buffers are not allocated until needed, host memory is used if no space on device
support for 8 bit per channel textures (previously all textures converted to 32 bit fp)
custom projection camera with ray target positions provided in a texture
minimum ray tracing size can be even 1 pixel now
v0.12.0 - 2020-11-17
Added
make_material method for easy configuration of material shaders
metalness and metalness texture support
enable changes of material in geometry update methods (why it was not possible before…?)
v0.11.1 - 2020-10-21
Code updated to OptiX 7.2. This is a minor step, preparing for the new features of the low level library.
Fixed
bug when new geometry families were added dynamically, e.g. b-splines to the scene with meshes only
bug in deserialization of bezier and bspline geometries
v0.11.0 - 2020-09-27
Added
direct access to internal geometry buffers (memory shared with ndarrays on the python side)
graph / mesh wireframe geometry, available also for all surface plots
m_shadow_catcher, material useful for preparation of packshot style images
Fixed
clear the shader compilation cache on installing (incompatible code was surviving updates)
several fixes in b-splines geometry
v0.10.1 - 2020-08-30
Added
enabled orthogonal projection camera
Fixed
crash on empty geometries that appeared with the driver 452
v0.10.0 - 2020-08-17
Added
fisheye camera, custom projection camera
thin lens and fisheye camera variants supporting chromatic aberration (transverse and longitudinal)
zero-copy access to device buffers wrapped in ndarrays: 8/32bps image, hit and object info, albedo, normals
configurable denoiser inputs: rgb-only, rgb+albedo, rgb+albedo+normals
Fixed
more accurate light dispersion
v0.9.0 - 2020-07-20
NVIDIA driver >= 450 is required to run this release.
Added
enabled normal buffer in AI denoiser
new geometries for curves: BSplineQuad and BSplineCubic approximating data points, SegmentChain for a piecewise-linear plot
Changes
update to OptiX 7.1 SDK and CUDA 11 (note: CUDA toolkit is not required in your system to run PlotOptiX)
v0.8.2 - 2020-07-12
Added
method to update parallelogram light using center/target 3D points and scalar lengths of u/v sides (missing in v0.8.0)
Changes
lower memory usage on both host and gpu
tested with pythonnet 2.5.1 and Mono 6.x - linux installation made easier
v0.8.1 - 2020-06-14
Added
camera mode for baking 360 degree panoramic views
support 16 bit per channel and hdr (32 bit fp per channel) output to image files and ndarray
support reading hdr images
Fixed
correct light emission in volumes
fix restoring scene global variables from json
more verbose messaging on initialization problems
fix camera switching when ray generation program changes
v0.8.0 - 2020-06-04
Added
diffuse/reflective/plastic material transparency handled with alpha channel of textures
load multiple meshes from .obj with materials specified in a dictionary, and an option to select parent mesh (then transormations of parent are applied to children meshes as well)
setup parallelogram light using center/target 3D points and scalar lengths of u/v sides
method to select objects for manual manipulation in gui (if e.g. cannot click object invisible in the view)
Fixed
scatterng in volumes: support enabled in background modes AmbientAndVolume, TextureFixed, and TextureEnvironment; subsurface color added to material parameters
keep_on_host argument of load_displacement() and load_normal_tilt() removed (value always set to false now; it was a bug in linux);
v0.7.2 - 2020-05-13
Added
raw mesh geometry (defined explicitly with vertices, faces, normals, and uv mapping)
selection of devices
Fixed
color range scaling for arrays of const coloe (utility function)
v0.7.1 - 2020-04-11
Added
set/release gimbal lock in camera rotations
geometry scaling by vector and w.r.t. provided point
sub-launch loop breaking on UI events (e.g. camera rotation)
Fixed
nan’s in mesh normal calculatons
improved bvh memory allocations can handle more primitives in data sets
texture values prescale when gamma is 1.0
v0.7.0 - 2020-03-27
PlotOptiX has moved to OptiX 7 framework in this version. This is a major change, basically a rewrite of entire ray-tracting engine, followed by several breaking changes in the Python API. Denoiser binaries included in GPU driver and improved compilation of shaders code are among advantages of the new framework. The long lasting issues with using PlotOptiX on some hardware configurations, related to the shader compilation should be resolved now.
OptiX 7 shifts significant parts of functionality to the application side. Multi-GPU support and most of the ray-tracting host state is now maintained by PlotOptiX code. Be warned that this code is fresh! If you spot problems, go ahead and submit issue to the tracker on GitHub.
Changes
no need to install denoiser binaries separately, no OptiX binaries shipped with PlotOptiX package (these libraries are now included in the GPU driver)
setup_denoiser() removed, denoising is now configured with add_postproc() method
uniform configuration of textures used by materials, geometries, background, etc., see load_texture() and set_texture_2d() methods
material textures are now referenced by texture name instead of full texture description included in the material definition
some of material properties names changed, see updated pre-defined materials
NormalTilt removed from GeomAttributeProgram, surface normals are modulated with material textures
tonal correction parameter tonemap_igamma (inverse value of gamma) changed to tonemap_gamma (gamma value)
JSON structure changed and not backward-compatible for several scene components, which means scenes saved with earlier releases wont load with v0.7.0
Added
surface roughness textures
load_texture() method to facilitate reading textures from file
v0.5.2 - 2019-10-15
Fixed
dependency on vcruntime140_1.dll in Windows binaries, introduced in v0.5.1 with the VS tools upgrade
v0.5.1 - 2019-09-27
Added
ray tracing timeout parameter, use set_param(rt_timeout=n_ms) and get_param(“rt_timeout”)
Fixed
timeout instead of freeze if stucked in the internal OptiX launch() function
default lighting was not initialized properly after refactoring made in v0.5.0
v0.5.0 - 2019-09-20
Added
scene saving/loading in JSON file format or python’s dictionary (note, format is not finally freezed and may change on migration to OptiX 7)
callbacks re-configurable after initialization
load selected/all/merged objects from Wavefront .obj files
thin-walled material
Changes
load_mesh_obj() method renamed to load_merged_mesh_obj(); the new load_mesh_obj() loads meshes selected by the name or loads all meshes from the file with no merging
light shading mode configured with set_param() and get_param() methods
v0.4.8 - 2019-09-07
Added
Oren-Nayar diffuse reflectance model (in addition to the default Lambertian), adjustable surface roughness
adjustable surface rougness also for metalic and dielectric (glass) materials, improved predefined materials
Changes
metalic and mirror materials use primitive colors to colorize the reflection (primitive color overrides surface albedo) so color data can be effectively used also with these materials
v0.4.7 - 2019-08-28
Added
select and rotate/move/scale objects and lights in GUI with mouse (same as for the camera)
status bar in GUI, shows selected item, 2D/3D coordinates of the surface under the pointer, and FPS
method to set fixed size of the ray-tracing output in GUI (or go back to auto-fit to window size)
v0.4.6 - 2019-08-19
Added
methods to rotate camera about given point, eye about target, target about eye, in local and global coordinates
Changes
calculate normal tilt on the fly in the surface displacement mode, speed not affected, much lower gpu memory footprint
Fixed
normal tilt mode in textured parallelepipeds bug resulting with transparent walls in some configs
v0.4.5 - 2019-08-11
Added
particles geometry with 3D orientation (so textures can be applied), textured glass color
shading normal tilt (particles, parallelograms, parellelepipeds, tetrahedrons) and surface displacement (particles) using texture data
overlay a texture in 2D postprocessing
v0.4.2 - 2019-07-23
Added
method to get light source parameters in a dictionary
examples installer - so examples compatible with the recent PyPI release can be downloaded locally without cloning the repository
Fixed
OptiX-CUDA interop: readback buffer pointer is now obtained for a single GPU in multi-GPU systems, this solves issue on multi-GPU systems
v0.4.1 - 2019-07-14
Added
2D color preprocessing utility
reading normalized images
Fixed
read_image method name in linux library loader
v0.4.0 - 2019-07-06
Added
AI denoiser
light dispersion in refractions
method to update material properties after construction
enable textured materials
utilities for reading image files to numpy array, support for huge tiff images (>>GB)
Fixed
update of parallelogram light properties
selection of SM architecture
v0.3.1 - 2019-06-26
Added
textured background (fixed texture or environment map, from numpy array or image file)
json converters for vector types (more compact scene description)
Fixed
removed dependency on CUDA release, CUDA required for video encoding features only
v0.3.0 - 2019-06-09
Added
linux support
parametric surface
Changes
update to NVIDIA Video Codec SDK 9.0 and FFmpeg 4.1
no need for CUDA_PATH environment variable
v0.2.2 - 2019-05-26
Added
color calculation convenience method: scaling, exposure and inverted gamma correction
h.264 encoder profile and preset selection
Changes
major speed improvement in general, plus faser convergence in out of focus regions
refactoring for linux support
Fixed
missing parallelogram support
v0.2.1 - 2019-05-19
Added
OpenSimplex noise generator
basic interface to the video encoder (save video output to mp4 files)
save current image to file
v0.2.0 - 2019-05-12
Added
RTX-accelerated mesh geometry for surface plots, reading 3D meshes from Wavefront .obj fromat
several configurable 2D postprocessing stages
Fixed
bug on geometry update when data size was changed with u/v/w vectors not provided
v0.1.4 - 2019-04-25
Added
methods to rotate geometry/primitive about provided 3D point
autogenerated documentation, improved and completed docstring in the code
Changed
use tuples instead of x, y, z arguments in rotation/move methods
v0.1.3 - 2019-04-19
Two weeks and some steps from the initial release. Starting changelog.
Added
RTX-accelerated tetrahedrons geometry
generate aligned or randomly rotated data markers if some vectors are missing
methods to read back camera eye/target, light position, color and r/u/v
get_param() to read back the rt parameters
this changelog, markdown description content type tag for PyPI
use [Semantic Versioning](https://semver.org/spec/v2.0.0.html)