October 16, 2017, 09:22 (GMT) |
Merge remote-tracking branch 'origin/master' into openvdb |
November 23, 2016, 15:50 (GMT) |
Removed the deprecated OpenVDB shader node for direct loading of .vdb files. This node was already disabled. All vdb data should eventually be loaded through the Cycles sync procedure as object data. Specialized nodes for accessing voxel data may eventually be added again for convenience, but these would just be advanced attribute nodes. |
November 23, 2016, 08:52 (GMT) |
Merge branch 'master' into openvdb |
November 18, 2016, 08:45 (GMT) |
Fix double freeing of OpenVDB data from dangling pointers in device data. |
November 17, 2016, 12:30 (GMT) |
Move registration of volumes from attributes out of the smoke sim logic. This bit of code will be the same for every potential source of volumetric data. |
November 17, 2016, 09:12 (GMT) |
Cleanup of Blender sync code for OpenVDB volume attributes. Besides removing some debug printing lines, the code should also become easier to adapt to alternative sources of volume data beside the smoke sim. |
November 16, 2016, 16:05 (GMT) |
Use tri-linear ("box") interpolation for OpenVDB grids rather than nearest point sampling. Cycles shading options contain a setting for tri-cubic sampling as well, but this is not supported in OpenVDB by default (only tri-quadratic). Cubic sampling appears a bit pointless anyway, compared to the ability to add actual geometric detail. |
November 16, 2016, 15:36 (GMT) |
Merge branch 'master' into openvdb |
November 16, 2016, 09:09 (GMT) |
Fix voxel attribute sampling position when using VDB grids. OpenVDB handles inverse transform from object to grid space internally. |
November 13, 2016, 20:59 (GMT) |
Removed unused util_volume files. |
November 13, 2016, 20:42 (GMT) |
Merge branch 'cvdb_ray_isect' into openvdb |
November 13, 2016, 16:59 (GMT) |
Set the primitive type for volume samples to VOLUME. This is so the primitive_attribute_* functions correctly look for voxel attributes. |
November 13, 2016, 14:14 (GMT) |
Fix various cleanup issues and inconsistencies. All volumes are held in the scene volumes list now, so VolumeManager doesn't need to free them explicitly. The ImageManager reference in VoxelAttribute is an artifact from smoke rendering, this should be phased out eventually and can be assumed to be NULL for Volumes. Make sure the VolumeManager cleans up the device memory properly, in particular the ray intersector instances must be freed. |
November 13, 2016, 12:40 (GMT) |
Proper volume data storage in Cycles when syncing from Blender data. Previously a viewport render would continuously keep adding Volume instances to the VolumeManager data, because there was no way to detect existing volume data. Now the `id_map` model known from meshes and other data types is used for volume data as well. Note that the VolumeKey currently simply uses an Object ID pointer, thus assuming a single Volume per object. In the future volumes could become a real ID type in Blender, or the specific volume could be narrowed down with additional info in the key. |
November 13, 2016, 10:25 (GMT) |
Added an assert to catch non-uniform grids earlier. OpenVDB ray intersectors only support uniform grids. This should be checked as early as possible to allow feedback to the Cycles user (i.e. the Blender app). For now the assert just prevents exceptions from OpenVDB itself, until a transparent mechanism for this is implemented. |
November 13, 2016, 10:24 (GMT) |
Removed direct grid lists in VolumeManager, all grids should be in Volumes now. |
November 13, 2016, 10:22 (GMT) |
Disables VolumeManager functions that load grids directly from a filename. These are legacy functions from the OpenVDB import node, but they don't work with the new design any more because there is no specific Volume instance to add the grids to. |
November 12, 2016, 12:47 (GMT) |
Improved thread data handling for the OpenVDB Cycles node. OpenVDB grid accessors, samplers, and ray intersectors must be stored per thread. Previously this data was stored in a per-thread map in each grid. This causes problems because the pthread_id keys can become invalid, and it also creates a lot of unused accessors. The patch switches thread data storage around, so that thread-local data is now passed along KernelGlobals for every work task as needed (tasks only run in one thread). This system is much more reliable and similar to other cases of thread-local data, such as OSL shaders. The patch also removes the virtual base class for "volumes", which might give a minor performance improvement. If a generic volume type for Cycles is needed it can be abstracted from scratch. Removed the unused thread_id list in Cycles CPU tasks, which were only needed for the now deprecated OpenVDB grid accessor lookup. |
November 9, 2016, 11:01 (GMT) |
Merge branch 'master' into cvdb_ray_isect |
November 9, 2016, 10:35 (GMT) |
Fix invalid default value type when constructing a default volume shader graph. |
|