diff options
author | Patrick Mours <pmours@nvidia.com> | 2022-05-20 19:01:26 +0300 |
---|---|---|
committer | Patrick Mours <pmours@nvidia.com> | 2022-05-23 20:08:01 +0300 |
commit | a8c81ffa83122661b80e842ddd641e366b3d5c04 (patch) | |
tree | a366980386a9369edd4fda51d9d566fdf2d8743c /source/blender/makesdna | |
parent | 14a5a91e0e033d712134c112a4778b495bd73ba1 (diff) |
Cycles: Add half precision float support for volumes with NanoVDB
This patch makes it possible to change the precision with which to
store volume data in the NanoVDB data structure (as float, half, or
using variable bit quantization) via the previously unused precision
field in the volume data block.
It makes it possible to further reduce memory usage during
rendering, at a slight cost to the visual detail of a volume.
Differential Revision: https://developer.blender.org/D10023
Diffstat (limited to 'source/blender/makesdna')
-rw-r--r-- | source/blender/makesdna/DNA_volume_defaults.h | 1 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_volume_types.h | 7 |
2 files changed, 8 insertions, 0 deletions
diff --git a/source/blender/makesdna/DNA_volume_defaults.h b/source/blender/makesdna/DNA_volume_defaults.h index ee98f0ea4fd..1057fc75d34 100644 --- a/source/blender/makesdna/DNA_volume_defaults.h +++ b/source/blender/makesdna/DNA_volume_defaults.h @@ -23,6 +23,7 @@ #define _DNA_DEFAULT_VolumeRender \ { \ + .precision = VOLUME_PRECISION_HALF, \ .space = VOLUME_SPACE_OBJECT, \ .step_size = 0.0f, \ .clipping = 0.001f, \ diff --git a/source/blender/makesdna/DNA_volume_types.h b/source/blender/makesdna/DNA_volume_types.h index a2e558aa790..a25bfe0ebec 100644 --- a/source/blender/makesdna/DNA_volume_types.h +++ b/source/blender/makesdna/DNA_volume_types.h @@ -126,6 +126,13 @@ typedef enum VolumeWireframeDetail { VOLUME_WIREFRAME_FINE = 1, } VolumeWireframeDetail; +/** #VolumeRender.precision */ +typedef enum VolumeRenderPrecision { + VOLUME_PRECISION_HALF = 0, + VOLUME_PRECISION_FULL = 1, + VOLUME_PRECISION_VARIABLE = 2, +} VolumeRenderPrecision; + /** #VolumeRender.space */ typedef enum VolumeRenderSpace { VOLUME_SPACE_OBJECT = 0, |