BlenderPhi v4.5.5
- Karolina cluster: https://code.it4i.cz/raas/blenderphi/-/raw/main/releases/blenderphi-v4.5.5/blenderphi-v4.5.5-karolina-linux-x64-gcc13.tar.xz
- New BRaaS-HPC display driver for interactive remote rendering.
- Optional GPUJPEG compression path for remote display.
- Binary XML scene loader (
cycles_xml_bin) with NanoVDB and raw volume support. - New volume meshing controls and NanoVDB-driven metadata handling.
- Unified byte-RGBA display pipeline on CPU, CUDA, HIP, and oneAPI.
- New build options for GPU/CPU image handling on all GPU backends.
- Added a new
BRaaSHPCDisplayDriverimplementation in the Cycles Blender integration. - The driver plugs into the generic
DisplayDriverinterface and provides:- Custom mapping/unmapping of the display texture buffer.
- A path to copy data from Cycles’ render buffers into a BRaaS-HPC-managed buffer.
- Support for both half-float and byte RGBA output (via
buffer_uchar_srgba()).
- The driver is linked against
braas_hpc_renderengine::braas_hpc_renderengineBRaaS-HPC RenderEngine, enabling interaction with the external BRaaS-HPC render engine.
- Link: https://github.com/It4innovations/braas-hpc-gpujpeg
- New build-time option:
WITH_CLIENT_GPUJPEGin the top-levelCMakeLists.txt. - When enabled:
- Blender/Cycles locates GPUJPEG via
find_package(GPUJPEG REQUIRED)inintern/cycles/blender/CMakeLists.txt. - The BRaaS-HPC display driver is compiled with GPUJPEG support.
- At runtime, the driver checks the
CYCLES_BRAAS_HPC_USE_GPUJPEGenvironment variable to enable/disable GPUJPEG compression dynamically, and prints a diagnostic message if GPUJPEG was not compiled in.
- Blender/Cycles locates GPUJPEG via
- Introduced a new
uchar4display buffer (display_rgba_byte_) alongside existing half-float buffers. - Added
film_convert_byte_rgba_*kernels on CPU, CUDA, HIP, and oneAPI backends:- Convert float render buffers to sRGBA
uchar4buffers. - Provide unified handling of byte outputs for fast network transport or GPUJPEG encoding.
- Convert float render buffers to sRGBA
- The display destination now exposes
pixels_uchar_srgba/d_pixels_uchar_srgbawhen a byte buffer is used, and the display driver can advertisebuffer_uchar_srgba()accordingly.
- Replaced the old XML loader in standalone Cycles:
cycles_xml.cpp/.hare commented out from the build.- New
cycles_xml_bin.cpp/.hare added, and standalone now includesapp/cycles_xml_bin.h.
- The new loader supports:
- Volume attributes with
volume_typehandling. - NanoVDB grids (when enabled).
- Raw volume data as a fallback.
- Direct creation of
NanoVDBImageLoaderinstances from in-memory nanogrid data, avoiding filesystem round-trips.
- Volume attributes with
- Added a new property to
Volume:NODE_SOCKET_API(bool, volume_mesh)inintern/cycles/scene/volume.h.
- In
GeometryManager::device_update_preprocess:- Automatic volume mesh generation (
create_volume_mesh) is now conditional on!volume->get_volume_mesh().
- Automatic volume mesh generation (
- This allows explicit control over whether a volume should be meshed or not — important when backends/pipelines handle volumes differently (e.g., NanoVDB vs mesh).
- Extended
VDBImageLoader:- Stores raw NanoVDB grid data (
nanogrid_data) and derives metadata:- Number of channels based on grid type (scalar vs vector grid).
byte_size, resolution, and world-space bounding box.- World transform from
grid->map().mMatDandmVecD.
- Stores raw NanoVDB grid data (
- Added alternative
OIIOImageLoaderconstructor taking a name and vector data plus custom metadata — makes it easier to feed in-memory images into Cycles.
- Introduced build-time option
WITH_GPU_CPUIMAGEin device/kernel CMake:intern/cycles/device/CMakeLists.txtdefines-DWITH_GPU_CPUIMAGEwhen enabled.intern/cycles/kernel/CMakeLists.txtpropagatesWITH_GPU_CPUIMAGEto CUDA and HIP compile flags.- In oneAPI context (
context_begin.h), includeskernel/device/cpu/image.hwhenWITH_GPU_CPUIMAGEis defined; otherwise falls back tokernel/device/gpu/image.h.
- This enables GPU kernels to optionally reuse CPU image handling code for specific HPC/cluster configurations.
- Extended
DisplayDriverinterface (display_driver.h) with optional BRaaS-related hooks:virtual bool only_device_buffer()— hint that only device buffers (no CPU copy) are used.virtual bool buffer_uchar_srgba()— indicates byte-RGBA buffer usage.virtual void copy_texture_buffer(const half4* rgba_pixels, int texture_x, int texture_y, int pixels_width, int pixels_height)— optional callback to copy from a host buffer into the driver’s storage.
- Existing drivers can ignore these new methods by relying on defaults; the BRaaS-HPC driver overrides them.
WITH_CLIENT_GPUJPEG(OFF by default)- Controls GPUJPEG support for BRaaS-HPC client compression.
WITH_GPU_CPUIMAGE- Enables compilation paths that use CPU image handling on GPU backends (CUDA, HIP, oneAPI).
GPUJPEG(required whenWITH_CLIENT_GPUJPEGis ON).braas_hpc_renderengineBRaaS-HPC RenderEngine (required byintern/cycles/blenderwhen BRaaS-HPC integration is enabled).
- The new
volume_meshflag provides better control over geometry generation for volume data, important when mixing OpenVDB/NanoVDB volumes with mesh-based acceleration structures.
Blender as a whole is licensed under the GNU General Public License, Version 3. Individual files may have a different but compatible license.
See blender.org/about/license for details.