Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

In the initial 24.2 release, matte aggregate volumes may not correctly hold out against non-matte volumes may not completely correctly hold out each other. We anticipate that this will be addressed in an upcoming dot release.

Mipmapping and prebaked acceleration

Mipmapping allows the renderer to efficiently load prefiltered versions of a texture when the texture detail is much smaller than the filter sizeis a standard technique used to improve texture aliasing and rendering performance by automatically choosing an appropriate texture resolution level from a pyramid based on viewing size and angle of the texture on screen. This technique can also be used for applied to volumetric data as well. In comprised of voxels: in much the same way that a 2D mipmap pyramid level contains texels that are averages of four finer texels, a 3D mipmap pyramid level contains voxels that are each averaged from eight finer voxels. Mipmapping a volume asset will increase its disk space significantly, and may increase memory during rendering somewhat if the finest voxels are appropriately sized to the level of detail required for the camera; however, if the voxels are much finer in detail than the camera settings require, mipmapping can save significant RAM and render time because the renderer will only load coarser averaged voxels instead. Aggregate volumes using the impl_openvdb plugin as a data source for the volume primitives can enable mipmapping by setting the filterWidth parameter to a value greater than 0; this parameter is a multiplier on the standard filterwidth computed by the renderer.

Aggregate volumes also support reading prebaked acceleration information from a volume file. When the new Attribute "volume" "int dsominmax" is set to [1], the renderer can build an acceleration structure from the volume much faster using minimum and maximum values of the density that are baked into separate mipmap pyramids in the file. This results in much faster time to first pixel as the renderer no longer needs to run density shading in a preprocess upfront before shooting rays. This optimization is only possible if the volume density is not altered (increased) by shading, and if the density signal comes directly from the file. If the volume density is derived procedurally in a shader, dsominmax should be set to 0. An exception exists: impl_openvdb supports new controls that allow for global scaling and shaping of the density while still supporting the dsominmax 1 optimization.

...