code: def forward(
      self,
      rays_o,
      rays_d,
      light_d=None,
      ambient_ratio=1.0,
      shading_type=None,
      return_normal_image=False,
      return_normal_perturb=False,
      **kwargs,
  ):
      return self._render(
          rays_o=rays_o,
          rays_d=rays_d,
          light_d=light_d,
          ambient_ratio=ambient_ratio,
          shading_type=shading_type,
          return_normal_image=return_normal_image,
          return_normal_perturb=return_normal_perturb,
          **kwargs,
      )
  
file_path: NeMo/nemo/collections/multimodal/modules/nerf/renderers/torchngp_volume_renderer.py
imports: import math
  import torch
  import torch.nn.functional
  import nemo.collections.multimodal.modules.nerf.utils.torch_ngp.raymarching
  from nemo.collections.multimodal.modules.nerf.materials.materials_base import ShadingEnum
  from nemo.collections.multimodal.modules.nerf.renderers.base_renderer import BaseRenderer
label_desc: Use image node_id 3 for calling the TorchNGPVolumeRenderer obj's underlying member method code with example usage: obj.forward(rays_o, rays_d, light_d, ambient_ratio, shading_type, return_normal_image, return_normal_perturb) and returns: self