Source code for drtk.msi
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
import torch as th
from drtk.utils import load_torch_ops
load_torch_ops("drtk.msi_ext")
[docs]
@th.compiler.disable
def msi(
ray_o: th.Tensor,
ray_d: th.Tensor,
texture: th.Tensor,
sub_step_count: int = 2,
min_inv_r: float = 1.0,
max_inv_r: float = 0.0,
stop_thresh: float = 1e-7,
) -> th.Tensor:
"""
Renders a Multi-Sphere Image which is similar to the one described in "NeRF++: Analyzing and Improving
Neural Radiance Fields"
The implementation performs bilinear sampling in the spatial dimensions of each layer and cubic between
the layers.
Args:
ray_o (th.Tensor): Ray origins [N x 3]
ray_d (th.Tensor): Ray directions [N x 3]
texture (th.Tensor): The MSI texture [L x 4 x H x W], where L - number of layers.
The first 3 channels are the color channels, and the fourth one is the sigma (transmittance)
channel (negative log of alpha).
sub_step_count (int, optional): Rate of the subsampling of the layers. Default is 2.
min_inv_r (float, optional): Inverse of the minimum sphere radius. Default is 1 for unit radius.
max_inv_r (float, optional): Inverse of the maximum sphere radius. Default is 0 for infinite radius.
stop_thresh (bool, optional): The threshold for early ray termination when the accumulated
transmittance goes beyond the specified value.
Returns:
output (Tensor): Result of the sampled MSI. First three channels are the color channels, and the 4th
one is sigma (transmittance). [N x 4]
"""
return th.ops.msi_ext.msi(
ray_o, ray_d, texture, sub_step_count, min_inv_r, max_inv_r, stop_thresh
)