Class WGSLShaderRenderer

The Renderer class is responsible for managing the WebGPU rendering context, creating and executing render passes, and handling resources like buffers and textures.

Constructors

  • Parameters

    • canvas: HTMLCanvasElement
    • device: GPUDevice
    • context: GPUCanvasContext
    • Optionalgeometry: IGeometry

    Returns WGSLShaderRenderer

Properties

canvas: HTMLCanvasElement
context: GPUCanvasContext
device: GPUDevice
frame: number = 0
frameCount: number = 0
geometry: Geometry
isPaused: any
renderPassBacklog: Map<string, IRenderPass>
renderPassBuilder: RenderPassBuilder
renderPipleline: GPURenderPipeline
screenBindGroup: GPUBindGroup
textures: IWGSLTextureData[]
uniforms: Uniforms

Methods

  • Adds a compute pass to the backlog.

    Parameters

    • label: string

      The label for the compute pass.

    • computeShaderCode: string

      The WGSL code for the compute shader.

    • textures: IWGSLTextureData[] = []

      An optional array of textures to use in the compute pass.

    • Optionalworkgroupsize: {
          workgroup_size: string;
          x: number;
          y: number;
          z: number;
      }
      • workgroup_size: string
      • x: number
      • y: number
      • z: number

    Returns RenderPass

    The created RenderPass object.

  • Adds a main render pass to the backlog.

    Parameters

    Returns void

  • Adds a render pass to the backlog.

    Parameters

    • label: string

      The label for the render pass.

    • material: Material

      The material to use for the render pass.

    • geometry: Geometry

      The geometry to use for the render pass.

    • textures: IWGSLTextureData[] = []

      An optional array of textures to use in the render pass.

    Returns RenderPass

    The created RenderPass object.

  • Returns void

  • Creates a buffer on the GPU.

    Parameters

    • arr: Float32Array | Uint16Array

      The data to store in the buffer.

    • usage: number

      The usage flags for the buffer.

    • vertexSize: number

      The size of each vertex in bytes.

    Returns GPUBuffer

    The created GPUBuffer.

  • Creates a main render pipeline for a given material. This pipeline combines the output of other render passes.

    Parameters

    • uniformBuffer: GPUBuffer

      The uniform buffer for the pipeline.

    • material: Material

      The material to use for the pipeline.

    Returns GPURenderPipeline

    The created GPURenderPipeline.

  • Creates a render pipeline for a given material.

    Parameters

    • uniformBuffer: GPUBuffer

      The uniform buffer for the pipeline.

    • material: Material

      The material to use for the pipeline.

    Returns GPURenderPipeline

    The created GPURenderPipeline.

  • Creates a render target texture.

    Parameters

    • width: number

      The width of the render target.

    • height: number

      The height of the render target.

    Returns {
        buffer: GPUTexture;
        bufferView: GPUTextureView;
    }

    An object containing the texture and texture view for the render target.

    • buffer: GPUTexture
    • bufferView: GPUTextureView
  • Returns void

  • Starts the rendering loop.

    Parameters

    • t: number

      The initial time.

    • maxFps: number = 200

      The maximum frames per second.

    • OptionalonFrame: ((frame: number) => void)

      An optional callback function to be called on each frame.

        • (frame): void
        • Parameters

          • frame: number

          Returns void

    Returns void

  • Updates the renderer and executes all render passes in the backlog.

    Parameters

    • time: number

      The current time in seconds.

    Returns void