Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Overhauled OpenVDB Clip SOP camera frustum padding + misc QOL changes #1818

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Commits on Apr 8, 2024

  1. Overhauled OpenVDB Clip SOP camera frustum padding + misc QOL changes

    The Clip SOPs handling of frustum clipping was odd in several ways, and
    this caused confusion among users. Padding in particular was opaque and
    unintuitive.
    
    This change implements more consistent and explainable padding for the
    camera clipping mode. Padding is specified and applied in normalized
    device coordinates. Rather than reading the same float3 padding
    parm used by the other modes, this new implementation adds float2 parms
    'padwinx' and 'padwiny', specifying the amount of padding to add on the
    left/right and top/bottom sides of the camera frustum. These are enabled
    only in camera mode. Padding is applied symmetrically by default,
    similar to the old method, but can be made asymmetric by unlinking the
    parameters. There is no Z-axis padding value, as the near/far plane
    override parameters make this functionality redundant.
    
    A `legacycamclip` toggle was added to optionally revert back to the
    original implementation for compatibility reasons.
    
    To implement this change, it was necessary to make minor modifications
    to the clipping implementation in the OpenVDB library. A padding arg was
    added for the camera frustum signature of `clip`. A similar change was
    made to the `hvdb::drawFrustum()` function. All other changes were made
    just to the SOP itself.
    
    **Additional Changes:**
    + Tooltips and documentation for the node's parameters have been updated
      and expanded.
    + Some parameters that were previously non-animatable can now be
      animated. There was no documented reason given for them being fixed,
      and I've observed no issues with their being animated. It is the
      padding (old and new) and near/far clipping plane parameters which
      have been changed.
    + The `xVoxelCount` argument of `hvdb::frustumTransformFromCamera()` is
      now set to the cameras x-resolution, avoiding the rounding error that
      previously made the resulting frustum slightly inaccurate.
    + Mask clipping mode now disables the y and z components of the
      'padding' parm, to indicate that only uniform padding is supported in
      that mode.
    + When clipping in mask mode, the warning regarding nonuniform not being
      supported previously triggered whenever the three 'padding' values
      were not equal. This caused it to be raised for valid non-zero values
      as well. I've fixed it to trigger only when the y or z components are
      non-zero.
    
    Signed-off-by: Kolton Yager <Kolton.Yager@DreamWorks.com>
    kjyager committed Apr 8, 2024
    Configuration menu
    Copy the full SHA
    62f23e2 View commit details
    Browse the repository at this point in the history