Skip to content

Commit b8f2f5b

Browse files
authored
Merge pull request #37 from rnd-team-dev/r0.15.0
R0.15.0
2 parents a68e6eb + d6449b2 commit b8f2f5b

30 files changed

+3178
-2097
lines changed

CHANGELOG.rst

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,23 @@
11
Release history
22
===============
33

4+
`v0.15.0` - 2022-12-30
5+
----------------------
6+
7+
**NOTE:** NVIDIA driver r520 or above is required.
8+
9+
Added
10+
~~~~~
11+
12+
- AI upsampler and HDR denoiser
13+
- Catmull-Rom curve primitive
14+
15+
Changed
16+
~~~~~~~
17+
18+
- binaries updated to OptiX 7.6
19+
- raytracing and callbacks workflow explained in the docs
20+
421
`v0.14.4` - 2022-10-27
522
----------------------
623

@@ -536,6 +553,7 @@ Added
536553
- this changelog, markdown description content type tag for PyPI
537554
- use [Semantic Versioning](https://semver.org/spec/v2.0.0.html)
538555

556+
.. _`v0.15.0`: https://github.com/rnd-team-dev/plotoptix/releases/tag/v0.15.0
539557
.. _`v0.14.4`: https://github.com/rnd-team-dev/plotoptix/releases/tag/v0.14.4
540558
.. _`v0.14.3`: https://github.com/rnd-team-dev/plotoptix/releases/tag/v0.14.3
541559
.. _`v0.14.2`: https://github.com/rnd-team-dev/plotoptix/releases/tag/v0.14.2

README.rst

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ PlotOptiX
1313

1414
**Data visualisation and ray tracing in Python based on NVIDIA OptiX framework.**
1515

16+
`Docs <https://plotoptix.rnd.team>`__
17+
1618
- Check what we are doing with PlotOptiX on `Behance <https://www.behance.net/RnDTeam>`__, `Facebook <https://www.facebook.com/rndteam>`__, and `Instagram <https://www.instagram.com/rnd.team.studio/>`__.
1719
- Join us on `Patreon <https://www.patreon.com/rndteam?fan_landing=true>`__ for news, release plans and hi-res content.
1820

@@ -41,7 +43,7 @@ No need to write shaders, intersection algorithms, handle 3D scene technicalitie
4143

4244
Check `examples on GitHub <https://github.com/rnd-team-dev/plotoptix/tree/master/examples>`__ for practical code samples and `documentation pages <https://plotoptix.rnd.team>`__ for a complete API reference.
4345

44-
PlotOptiX is a set of CUDA shaders by `R&D Team <https://rnd.team>`_ wrapped in C#/C++ libraries with a Python API. PlotOptiX is based on `NVIDIA OptiX 7.5 <https://developer.nvidia.com/optix>`_ framework and makes use of RTX-capable GPU's.
46+
PlotOptiX is a set of CUDA shaders by `R&D Team <https://rnd.team>`_ wrapped in C#/C++ libraries with a Python API. PlotOptiX is based on `NVIDIA OptiX 7.6 <https://developer.nvidia.com/optix>`_ framework and makes use of RTX-capable GPU's.
4547

4648
You can quickly display data in a simple plot:
4749

@@ -61,7 +63,7 @@ Features
6163
- *geometries*: particles (spheres), parallelepipeds, parallelograms, tetrahedrons, linear segments, bezier curves, b-splines; *meshes*: shaded surface or wireframe, automatically generated from a parametric surface or f(x,y) data, or defined with vertices and faces, e.g. created with `pygmsh <https://github.com/nschloe/pygmsh>`__, or loaded from a file, e.g. supported by `trimesh <https://github.com/mikedh/trimesh>`__, or loaded from a Wavefront .obj file with a native loader
6264
- *materials*: flat, diffuse, reflective, refractive; including: light dispersion, surface roughness and metalness, volume scattering, and nested volumes
6365
- *light sources*: spherical and parallelogram, light emission in volumes, uniform environmental light or environment map
64-
- *post-processing*: tonal correction curves, levels adjustment, apply mask/overlay, AI denoiser
66+
- *post-processing*: tonal correction curves, levels adjustment, apply mask/overlay, AI denoiser and upsampler
6567
- *callbacks*: at the scene initialization, start and end of each frame raytracing, end of progressive accumulation
6668
- 8/16/32bps(hdr) image output to `numpy <http://www.numpy.org>`__ array, or save to popular image file formats
6769
- zero-copy access to GPU buffers wrapped in ndarrays: 8/32bps image, hit and object info, albedo, normals
@@ -73,8 +75,8 @@ Features
7375
System Requirements
7476
-------------------
7577

76-
- a `CUDA-enabled GPU <https://developer.nvidia.com/cuda-gpus>`__ with compute capability 5.0 (Maxwell) to latest (Ampere);
77-
- NVIDIA driver >= r515;
78+
- a `CUDA-enabled GPU <https://developer.nvidia.com/cuda-gpus>`__ with compute capability 5.0 (Maxwell) to latest (Ada Lovelace);
79+
- NVIDIA driver >= r520;
7880
- **Python 3 64-bit**
7981
- Windows:
8082
- Framework .NET >= 4.8 (present in all modern Windows)

docs/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
#
7070
# This is also used if you do content translation via gettext catalogs.
7171
# Usually you set "language" from the command line for these cases.
72-
language = None
72+
language = 'en'
7373

7474
# List of patterns, relative to source directory, that match files and
7575
# directories to ignore when looking for source files.

docs/images/flow_1.png

105 KB
Loading

docs/images/flow_2.png

89.2 KB
Loading

docs/npoptix.rst

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,42 @@
11
NpOptiX - base, headless raytracer
22
==================================
33

4+
Ray-tracing and compute loop
5+
----------------------------
6+
7+
Calculations in PlotOptiX are performed in threads parallel to the thread where you created :class:`plotoptix.NpOptiX`
8+
object. This design allows building interactive applications where heavy calulations are not blocking UI. There are two
9+
threads: one used for the ray tracing work done by OptiX engine (GPU work) and the second thread where any user calculations,
10+
e.g. scene updates, can be performed (usually using CPU).
11+
12+
Callbacks are provided to synchrionize user code and OptiX tasks. The full workflow is illustrated in figures below, however it is best explained
13+
with `the example code <https://github.com/rnd-team-dev/plotoptix/blob/master/examples/2_animations_and_callbacks/1_surface_plot_animated.ipynb>`__.
14+
Note, code in calbacks should follow recommendations indicated in the Fig.1. and in the :ref:`callbacks` section. The
15+
basic rules are:
16+
17+
* Access results stored in the output buffers only when they are frozen (``on_launch_finished``, ``on_rt_accum_done``) or use
18+
``on_rt_accum_done`` to synchronize your code with the end of ray tracing; otherwise buffers may be still empty or contain
19+
undefined data.
20+
* Put lenghty calculations in ``on_scene_compute`` so they can run in parallel to ray tracing. Heavy computations in other callbacks
21+
will degrade overall performance.
22+
* Do the scene and configuration updates in ``on_rt_completed``. Note that most updates will reset the accumulation frame counter and the
23+
whole ray tracing loop will be restarted, which will also clear the output buffers.
24+
25+
.. image:: images/flow_1.png
26+
:alt: PlotOptiX compute flow
27+
28+
Fig. 1. PlotOptiX computations flow. Details of the OptiX tast are ommited for clarity (i.e. scene compilation and multi-gpu management).
29+
30+
.. image:: images/flow_2.png
31+
:alt: PlotOptiX compute flow
32+
33+
Fig. 2. Timeline of tasks and callbacks. Note, ray tracing work and ``on_scene_compute`` are launched in parallel threads and ``on_rt_completed``
34+
is executed when all other task finished.
35+
36+
37+
API reference
38+
-------------
39+
440
.. autoclass:: plotoptix.NpOptiX
541

642
.. toctree::

docs/npoptix_callbacks.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
.. _callbacks:
2+
13
Callbacks
24
=========
35

0 commit comments

Comments
 (0)