Date - Apr 11, 2024
Partial USD Support (see below).
GeomScatter plugin and GeomUtils.readScatterData() function.
New VFB Layer Manger API.
Added Python 3.11 binding.
Added Node.js 18, Electron v23 and Electron v27 binding.
Updated copyPlugins between renderers API (see below).
USD support in "read-only" mode via the VRayScene plugin,
Experimental, partial support, subject to change:
USD files can be loaded with VRayRenderer.load/loadScene(filename).
Updated Util.copyPlugins():
Added new signatures with more informative pre- and post-create callbacks;
Added new signatures which allow copying plugins of a specified type;
Deprecated the function with the old signatures;
Bug fixing.
[Python] Added a new TransformList type (implemented as a dynamic array of
Transforms). Used it in GeomUtils.readScatterData()
[Node.js] Added a new non-resizable TransformList type backed-up by
FloatList/Float32Array (accessible via the 'floatList' property).
Used it in GeomUtils.readScatterData()
[Python] Added a new PluginList type (a dynamic array of Plugin instances).
Now getInstnces() returns a PluginList instead of python list.
[Python] Added missing equality comparison to Plugin classes and categories.
(e.g. plugin.getClass() == renderer.classes.Node would work correctly now)
[Node.js] Added a new array-like resizable PluginList type, a descendent of
Array. Now getInstnces() returns a PluginList instead of an array of plugins
but this should be transparent to the user in most cases.
Read OpenColorIO data via OCIOConfigurationData type.
[C++, .Net] Added a VRayProfilerWrite callback/event for profiler output.
[.Net, Node.js] Added missing UIGuides string to propertyMeta.
Added methods/properties to VRayRenderer for enabling the Visual Debugger.
New auto-exposure and auto white balance algorithms implemented in the
SettingsCamera plugin.
VFB zoom camera control with keyboard and mouse now works with CameraPhysical as well.
Added examples for vrscene export and pack assets, vrdata and vrfiles.
Exposed flags in RendererOptions for showing the VFB Pause, Update IPR,
CopyToHostFrameBuffer, AddLightMixREToScene and AddDenoiserREToScene buttons.
Added the ability to set user callbacks/event handlers for them.
Removed padding between BitmapInfoHeader and actual bitmap pixel data in in-memory
BMPs created by compress/convertToBmp() function. Now the result is the same as
directly writing to a file. Also in-memory BMPs are now bottom-top with positive
height instead of top-bottom with negative height.
Added GeomScatter, GeomEnmesh, Create-proxy-with-instancer-data and V-Ray Profiler
examples.
[C++] Added PluginMeta.isValid() method.
Added an example to list GPU support of the V-Ray Plugin types and their parameters.
[C++] Added PluginTypeId. Now in addition to a name string, plugin types can be
referenced by an integer TypeId as well.
[C++, .Net] Updated the ScenePreview class:
Added GeomInstancer data type,
Added getInstancerParticles() and a Particle struct,
Added getWorldBoundingBox() for all Object types,
Added getDecalSize() and getClipperSize().
[.Net] VRayRenderer.GetPlugin<T> now works with any parent type of the
actual plugin type or interface implemented by the plugin.
[.Net] IPluginRef<T> interface now implements IPluginRef thus making it
implicitly convertible to IPluginRef.
[.Net] Added two Box.Expand() methods to make the Box struct consistent with C++.
Added VRayRenderer.isFrameSkipped() helper function to check if the user
has clicked on the Stop button in VFB while rendering animation.
Fixed a bug in consecutive calls for incremental vrscene file export where
if any of the calls had a non-empty list of explicit plugins, the list wasn't cleared
for the next export.
[C++] Updated VRayServerInit to use VRAY_APPSDK_BIN and VRAY_SDK environment
variables to locate VRaySDKLibrary and V-Ray binary files.
Date - Apr 26, 2023
V-Ray Proxies support
Experimental (subject to changes)
Date - 2 Nov, 2022
Date - 3 Feb, 2022
Date - 5 Mar, 2021
* New V-Ray VFB (codenamed VFB2).
* Share VRayRenderer instances among programming languages.
* [C++] Added move semantics to the Value type and the Plugin property setters.
C++11 is now required to use AppSDK in C++.
* Added Python 3.8 binding.
* Added .Net Core builds.
* [VFB2] Added functions to get/set VFB2 settings as JSON.
* [VFB2] Added an update notification event/callback to VRayRenderer.
* [VFB2] Added LightMix Transfer To Scene event/callback to VRayRenderer.
* [VFB2] Added a flag to disable the VFB2 Transfer To Scene button to RendererOptions.
* [VFB2] Window handle functions:
- Added getNativeHandle(), getQWidget(), setNativeParentWindow(),
setQWidgetParent() and getMinimumSize();
- Marked getWindowHandle() and setParentWindow() as deprecated/obsolete.
* Added the ability to share the same VRayRenderer instance among different
programming languages:
- Added VRayRenderer.getInstanceHandle() method
(InstanceHandle read-only property in C#);
- Added VRayRenderer(instanceHandle) constructor.
* Added new checkDRHost(hostString) function that checks whether a VRayServer instance
is listening on a given host/port and returns info about it if it is.
* Filter the available CUDA and Optix devices in their corresponding get and set
functions;
* Exposed CUDA Compute Capability info.
* Added vfb.loadBackgroundImage() to load VFB CC background image.
* [Python] Completely removed old list wrapper type.
* denoiseNow() now accepts an optional "ready" callback function.
* [C++, .Net] Added two new methods get/setRenderSizes which get/set all ImageSize,
CropRegion and RenderRegion parameters and the state of the VFB region button state.
* Added VFB::clearImage() and VFB::resetState() methods.
* [C++] Added overloads with move semantics to loadAsText/appendAsText functions.
* [.Net] Added ToString() to Plugin and PluginRef.
* [.Net] Added GetHashCode() and Equals() methods, and operator== to PluginRef and PluginLink.
* Disallowed invalid characters in plugin names; Added allowInvalidCharactersInPluginNames
flag to RendererOptions to force old behavior and allow them.
* [.Net] Throw exception if creating a new plugin fails. In most cases it would happen
because of the new bad plugin name checks.
* [Node.js, Python] Changed vfb.saveImage to use the default ImageWriterOptions
if the user hasn't passed any options at all as it is in C++ and .Net
* Changed ImageWriterOptions in all languages to always set IWI_MULTI_CHANNEL
(i.e. produce a single multi-channel file if the file format supports it)
if the user hasn't passed any options at all as it is in C++ and .Net
* [Node.js, Python, Windows] Fixed setSDKLibraryPath() in Node.js and Python didn't work
with relative paths. Now it works with both absolute and relative paths.
Also full VRaySDKLibrary path is now returned by getSDKLibraryErrorString()
if the file has been found and loaded.
* Removed gpuPluginPath member from RendererOptions.
* [C++, .Net] Added callbacks for color corrections and compositing layer changes in VFB.
* [C++] Added the missing setValue(double) and getDouble methods to Plugin class.
* Added returning default values of TYPE_TEXTURE* plugin property types.
* Added Object Select render element.
* Added cameraName setters/getters to easily switch cameras which has the scene_name
property.
* [.Net] Replaced VRayImage.ToBitmapImage() with VRayImage.ToBitmapStream() in order
to avoid GDI+ dependency.
* Changed the current frame and time logic when rendering a sequence. Now the current
frame and time are changed before the wait for sequence continue is started.
VRayRenderer::getCurrentTime() and VRayRenderer::getCurrentFrame() now return
the time or frame number of the next frame that will be rendered in the sequence.
Also aborting the renderer while it is waiting to continue the sequence will
leave the next frame number as current time of the renderer.
* readFullData() and readPreviewData() added reading of the following data channels:
MeshObjectInfo, HairObjectInfo, ParticleObjectInfo, Hair geometry, Particle geometry,
GeometryVoxelsBBoxes, HairVoxelsBBoxes, ParticleVoxelsBBoxes
* New interfaces with ProxyReadParams input (which don't require creating a VRayRenderer)
for readFullData(), readPreviewData(), readPreviewGeometry(), readPreviewHair() and
readPreviewParticles()
* New interfaces with MeshFileData input (which don't require creating a VRayRenderer)
for createMeshFile() and createCombinedMeshFile()
* New interfaces with AnimatedTransform input for createMeshFile() and createCombinedMeshFile()
(transformations at corresponding keyframes which are written to the created file)
* readFullData() and readPreviewData() now contain start indices data,
indicating where the data belonging to the individual geometry / hair / particle voxel starts.
* readFullData() and readPreviewData() now return ObjectInfo containing the range of voxels
included in the corresponding geometry / hair / particle object.
* [C++] Made callback setters and callback execution thread-safe.
* Fixed reading heterogeneous lists at different times when they were set from code.
* Fixed "progressiveImageUpdated" events not fired for lightcache updates in bucket
mode with render region set.
* When possible, preserve the type of plugin property numerical values
(bool/int/float/double) when they are set and read back from code.
* [.Net] Fixed a bug in Matrix.Transpose()
* [.Net] Fixed wrong output sizes of output downscaled images returned from some methods.