code: def __init__(
      self,
      device: Device = "cpu",
      cameras: Optional[TensorProperties] = None,
      lights: Optional[TensorProperties] = None,
      materials: Optional[Materials] = None,
      blend_params: Optional[BlendParams] = None,
  ) -> None:
      super().__init__()
      self.lights = (
          lights if lights is not None else PointLights(device=device)
      )
      self.materials = (
          materials
          if materials is not None
          else Materials(device=device)
      )
      self.cameras = cameras
      self.blend_params = (
          blend_params if blend_params is not None else BlendParams()
      )
  
imports: import warnings
  from typing import Optional
  import torch
  import torch.nn
  from ...common.datatypes import Device
  from ...structures.meshes import Meshes
  from ..blending import BlendParams, hard_rgb_blend, sigmoid_alpha_blend, softmax_rgb_blend
  from ..lighting import PointLights
  from ..materials import Materials
  from ..splatter_blend import SplatterBlender
  from ..utils import TensorProperties
  from .rasterizer import Fragments
  from .shading import _phong_shading_with_pixels, flat_shading, gouraud_shading, phong_shading
label_desc: Use image node_id 1 to create a new ShaderBase object from inherited base classes: nn with example: obj = ShaderBase(device, cameras, lights, materials, blend_params)