class_docstr: Base class for volume rendering.
  
  Implementation follows Ben Mildenhall et el. (2020) at https://arxiv.org/abs/2003.08934.
class_docstr_tok: ["Base","class","for","volume","rendering",".","Implementation","follows","Ben","Mildenhall","et","el",".","(","2020",")","at","https",":","\/\/arxiv.org\/abs\/2003.08934","."]
code: def _render(self, alpha: Tensor, rgbs: Tensor) -> Tensor:
      trans = torch.cumprod(1 - alpha + self._eps, dim=-2)  # (*, N, 1)
      trans = torch.roll(
          trans, shifts=self._shift, dims=-2
      )  # (*, N, 1)
      trans[..., : self._shift, :] = 1  # (*, N, 1)
  
      weights = trans * alpha  # (*, N, 1)
  
      rgbs_rendered = torch.sum(weights * rgbs, dim=-2)  # (*, 3)
  
      return rgbs_rendered
  
file_path: kornia/kornia/nerf/volume_renderer.py
imports: import torch
  from kornia.core import Tensor
  from kornia.core.check import KORNIA_CHECK_SHAPE
  from kornia.nerf.samplers import calc_ray_t_vals
label_desc: Use image node_id 2 for calling the VolumeRenderer obj's underlying member method code with example usage: obj._render(alpha, rgbs) and returns: rgbs_rendered