Engine API Reference - v2.6.1
    Preparing search index...

    Class GraphicsDevice

    The graphics device manages the underlying graphics context. It is responsible for submitting render state changes and graphics primitives to the hardware. A graphics device is tied to a specific canvas HTML element. It is valid to have more than one canvas element per page and create a new graphics device against each.

    Hierarchy (View Summary)

    Index

    Properties

    backBufferAntialias: boolean = false

    True if the back buffer should use anti-aliasing.

    The canvas DOM element that provides the underlying WebGL context used by the graphics device.

    gpuProfiler: GpuProfiler

    The GPU profiler.

    insideRenderPass: boolean = false
    isHdr: boolean = false

    True if the back-buffer is using HDR format, which means that the browser will display the rendered images in high dynamic range mode. This is true if the options.displayFormat is set to DISPLAYFORMAT_HDR when creating the graphics device using createGraphicsDevice, and HDR is supported by the device.

    isWebGL2: boolean = false

    True if the deviceType is WebGL2

    isWebGPU: boolean = false

    True if the deviceType is WebGPU

    maxAnisotropy: number

    The maximum supported texture anisotropy setting.

    maxColorAttachments: number = 1

    The maximum supported number of color buffers attached to a render target.

    maxCubeMapSize: number

    The maximum supported dimension of a cube map.

    maxSamples: number = 1

    The maximum supported number of hardware anti-aliasing samples.

    maxTextureSize: number

    The maximum supported dimension of a texture.

    maxVolumeSize: number

    The maximum supported dimension of a 3D texture (any axis).

    precision: string

    The highest shader precision supported by this graphics device. Can be 'hiphp', 'mediump' or 'lowp'.

    samples: number

    The number of hardware anti-aliasing samples used by the frame buffer.

    scope: ScopeSpace

    The scope namespace for shader attributes and variables.

    supportsClipDistances: boolean = false

    True if the device supports clip distances (WebGPU only). Clip distances allow you to restrict primitives' clip volume with user-defined half-spaces in the output of vertex stage.

    supportsCompute: boolean = false

    True if the device supports compute shaders.

    supportsStorageTextureRead: boolean = false

    True if the device can read from StorageTexture in the compute shader. By default, the storage texture can be only used with the write operation. When a shader uses this feature, it's recommended to use a requires directive to signal the potential for non-portability at the top of the WGSL shader code:

    requires readonly_and_readwrite_storage_textures;
    
    textureFloatFilterable: boolean = false

    True if filtering can be applied when sampling float textures.

    textureFloatRenderable: boolean

    True if 32-bit floating-point textures can be used as a frame buffer.

    textureHalfFloatRenderable: boolean

    True if 16-bit floating-point textures can be used as a frame buffer.

    textureRG11B10Renderable: boolean = false

    True if small-float textures with format PIXELFORMAT_111110F can be used as a frame buffer. This is always true on WebGL2, but optional on WebGPU device.

    Accessors

    Methods

    • Dispatch multiple compute shaders inside a single compute shader pass.

      Parameters

      • computes: Compute[]

        An array of compute shaders to dispatch.

      • Optionalname: string = 'Unnamed'

        The name of the dispatch, used for debugging and reporting only.

      Returns void

    • Fire an event, all additional arguments are passed on to the event listener.

      Parameters

      • name: string

        Name of event to fire.

      • Optionalarg1: any

        First argument that is passed to the event handler.

      • Optionalarg2: any

        Second argument that is passed to the event handler.

      • Optionalarg3: any

        Third argument that is passed to the event handler.

      • Optionalarg4: any

        Fourth argument that is passed to the event handler.

      • Optionalarg5: any

        Fifth argument that is passed to the event handler.

      • Optionalarg6: any

        Sixth argument that is passed to the event handler.

      • Optionalarg7: any

        Seventh argument that is passed to the event handler.

      • Optionalarg8: any

        Eighth argument that is passed to the event handler.

      Returns EventHandler

      Self for chaining.

      obj.fire('test', 'This is the message');
      
    • Get a renderable HDR pixel format supported by the graphics device.

      Note:

      • When the filterable parameter is set to false, this function returns one of the supported formats on the majority of devices apart from some very old iOS and Android devices (99%).
      • When the filterable parameter is set to true, the function returns a format on a considerably lower number of devices (70%).

      Parameters

      • Optionalformats: number[] = ...

        An array of pixel formats to check for support. Can contain:

      • Optionalfilterable: boolean = true

        If true, the format also needs to be filterable. Defaults to true.

      • Optionalsamples: number = 1

        The number of samples to check for. Some formats are not compatible with multi-sampling, for example PIXELFORMAT_RGBA32F on WebGPU platform. Defaults to 1.

      Returns undefined | number

      The first supported renderable HDR format or undefined if none is supported.

    • Test if there are any handlers bound to an event name.

      Parameters

      • name: string

        The name of the event to test.

      Returns boolean

      True if the object has handlers bound to the specified event name.

      obj.on('test', () => {}); // bind an event to 'test'
      obj.hasEvent('test'); // returns true
      obj.hasEvent('hello'); // returns false
    • Detach an event handler from an event. If callback is not provided then all callbacks are unbound from the event, if scope is not provided then all events with the callback will be unbound.

      Parameters

      • Optionalname: string

        Name of the event to unbind.

      • Optionalcallback: HandleEventCallback

        Function to be unbound.

      • Optionalscope: any

        Scope that was used as the this when the event is fired.

      Returns EventHandler

      Self for chaining.

      const handler = () => {};
      obj.on('test', handler);

      obj.off(); // Removes all events
      obj.off('test'); // Removes all events called 'test'
      obj.off('test', handler); // Removes all handler functions, called 'test'
      obj.off('test', handler, this); // Removes all handler functions, called 'test' with scope this
    • Attach an event handler to an event.

      Parameters

      • name: string

        Name of the event to bind the callback to.

      • callback: HandleEventCallback

        Function that is called when event is fired. Note the callback is limited to 8 arguments.

      • Optionalscope: any = ...

        Object to use as 'this' when the event is fired, defaults to current this.

      Returns EventHandle

      Can be used for removing event in the future.

      obj.on('test', (a, b) => {
      console.log(a + b);
      });
      obj.fire('test', 1, 2); // prints 3 to the console
      const evt = obj.on('test', (a, b) => {
      console.log(a + b);
      });
      // some time later
      evt.off();
    • Attach an event handler to an event. This handler will be removed after being fired once.

      Parameters

      • name: string

        Name of the event to bind the callback to.

      • callback: HandleEventCallback

        Function that is called when event is fired. Note the callback is limited to 8 arguments.

      • Optionalscope: any = ...

        Object to use as 'this' when the event is fired, defaults to current this.

      Returns EventHandle

      • can be used for removing event in the future.
      obj.once('test', (a, b) => {
      console.log(a + b);
      });
      obj.fire('test', 1, 2); // prints 3 to the console
      obj.fire('test', 1, 2); // not going to get handled
    • Sets the current index buffer on the graphics device. For subsequent draw calls, the specified index buffer will be used to provide index data for any indexed primitives.

      Parameters

      • indexBuffer: null | IndexBuffer

        The index buffer to assign to the device.

      Returns void

    • Sets the specified render target on the device. If null is passed as a parameter, the back buffer becomes the current target for all rendering operations.

      Parameters

      • renderTarget: null | RenderTarget

        The render target to activate.

      Returns void

      // Set a render target to receive all rendering output
      device.setRenderTarget(renderTarget);

      // Set the back buffer to receive all rendering output
      device.setRenderTarget(null);
    • Sets the current vertex buffer on the graphics device. For subsequent draw calls, the specified vertex buffer(s) will be used to provide vertex data for any primitives.

      Parameters

      • vertexBuffer: VertexBuffer

        The vertex buffer to assign to the device.

      Returns void