rhodonite
    Preparing search index...

    Interface ICGAPIResourceRepository

    Interface defining the contract for Computer Graphics API Resource Repository implementations. This interface abstracts graphics resource management operations across different APIs (WebGL, WebGPU). Implementations handle creation, management, and deletion of graphics resources like textures, buffers, shaders, and framebuffers.

    interface ICGAPIResourceRepository {
        allocateTexture(
            options: {
                format: TextureFormatEnum;
                height: number;
                mipLevelCount: number;
                width: number;
            },
        ): number;
        attachColorBufferCubeToFrameBufferObject(
            framebuffer: FrameBuffer,
            attachmentIndex: number,
            faceIndex: number,
            mipLevel: number,
            renderable: IRenderable,
        ): void;
        attachColorBufferLayerToFrameBufferObject(
            framebuffer: FrameBuffer,
            attachmentIndex: number,
            renderable: IRenderable,
            layerIndex: number,
            mipLevel: number,
        ): void;
        attachColorBufferToFrameBufferObject(
            framebuffer: FrameBuffer,
            attachmentIndex: number,
            renderable: IRenderable,
        ): void;
        attachDepthBufferToFrameBufferObject(
            framebuffer: FrameBuffer,
            renderable: IRenderable,
        ): void;
        attachDepthStencilBufferToFrameBufferObject(
            framebuffer: FrameBuffer,
            renderable: IRenderable,
        ): void;
        attachStencilBufferToFrameBufferObject(
            framebuffer: FrameBuffer,
            renderable: IRenderable,
        ): void;
        clearFrameBuffer(
            engine: Engine,
            renderPass: RenderPass,
            displayIdx?: number,
        ): void;
        createCompressedTexture(
            textureDataArray: TextureData[],
            compressionTextureType: CompressionTextureTypeEnum,
        ): Promise<number>;
        createCompressedTextureFromBasis(
            basisFile: _BasisFile,
            options: { border: number; format: EnumIO; type: ComponentTypeEnum },
        ): number;
        createCubeTexture(
            engine: Engine,
            mipLevelCount: number,
            images: {
                negX: DirectTextureData;
                negY: DirectTextureData;
                negZ: DirectTextureData;
                posX: DirectTextureData;
                posY: DirectTextureData;
                posZ: DirectTextureData;
            }[],
            width: number,
            height: number,
        ): [number, Sampler];
        createCubeTextureFromFiles(
            engine: Engine,
            baseUri: string,
            mipLevelCount: number,
            isNamePosNeg: boolean,
            hdriFormat: EnumIO,
        ): Promise<[number, Sampler, number, number]>;
        createFrameBufferObject(): number;
        createIndexBuffer(accessor: Accessor): number;
        createRenderBuffer(
            width: number,
            height: number,
            internalFormat: TextureParameterEnum,
            isMSAA: boolean,
            sampleCountMSAA: number,
        ): number;
        createRenderTargetTexture(
            options: {
                format: TextureParameterEnum;
                height: number;
                mipLevelCount: number;
                width: number;
            },
        ): number;
        createRenderTargetTextureArray(
            options: {
                arrayLength: number;
                format: EnumIO;
                height: number;
                internalFormat: TextureParameterEnum;
                level: number;
                type: ComponentTypeEnum;
                width: number;
            },
        ): number;
        createRenderTargetTextureCube(
            options: {
                format: TextureParameterEnum;
                height: number;
                mipLevelCount: number;
                width: number;
            },
        ): number;
        createShaderProgram(
            options: {
                attributeNames: AttributeNames;
                attributeSemantics: VertexAttributeEnum[];
                config: Config;
                engine: Engine;
                fragmentShaderStr: string;
                material: Material;
                onError?: (message: string) => void;
                primitive: Primitive;
                vertexShaderStr: string;
            },
        ): number;
        createTextureArray(
            width: number,
            height: number,
            arrayLength: number,
            mipLevelCount: number,
            internalFormat: TextureFormatEnum,
            format: EnumIO,
            type: ComponentTypeEnum,
            imageData: TypedArray,
        ): number;
        createTextureFromDataUri(
            dataUri: string,
            options: {
                border: number;
                format: EnumIO;
                generateMipmap: boolean;
                internalFormat: TextureParameterEnum;
                level: number;
                type: ComponentTypeEnum;
            },
        ): Promise<number>;
        createTextureFromHTMLImageElement(
            imageData: HTMLImageElement,
            options: {
                border: number;
                format: EnumIO;
                generateMipmap: boolean;
                height: number;
                internalFormat: TextureParameterEnum;
                level: number;
                type: ComponentTypeEnum;
                width: number;
            },
        ): Promise<number>;
        createTextureFromImageBitmapData(
            imageData: ImageBitmapData,
            options: {
                border: number;
                format: EnumIO;
                generateMipmap: boolean;
                height: number;
                internalFormat: TextureParameterEnum;
                level: number;
                type: ComponentTypeEnum;
                width: number;
            },
        ): Promise<number>;
        createTextureSampler(
            options: {
                anisotropy: boolean;
                isPremultipliedAlpha?: boolean;
                magFilter: TextureParameterEnum;
                minFilter: TextureParameterEnum;
                shadowCompareMode: boolean;
                wrapR: TextureParameterEnum;
                wrapS: TextureParameterEnum;
                wrapT: TextureParameterEnum;
            },
        ): number;
        createVertexBuffer(accessor: Accessor): number;
        createVertexBufferAndIndexBuffer(primitive: Primitive): VertexHandles;
        createVertexBufferFromTypedArray(typedArray: TypedArray): number;
        deleteFrameBufferObject(frameBufferObjectHandle: number): void;
        deleteRenderBuffer(renderBufferUid: number): void;
        deleteTexture(textureHandle: number): void;
        deleteVertexBuffer(resourceHandle: number): void;
        deleteVertexDataResources(vertexHandles: VertexHandles): void;
        generateMipmaps2d(
            textureHandle: number,
            width: number,
            height: number,
        ): void;
        generateMipmapsCube(
            textureHandle: number,
            width: number,
            height: number,
        ): void;
        getCanvasSize(): [number, number];
        getCubeTexturePixelData(
            textureHandle: number,
            width: number,
            height: number,
            faceIndex: number,
        ): Promise<Uint8Array<ArrayBufferLike>>;
        getPixelDataFromTexture(
            textureHandle: number,
            x: number,
            y: number,
            width: number,
            height: number,
        ): Uint8Array;
        getPixelDataFromTextureAsync(
            textureHandle: number,
            x: number,
            y: number,
            width: number,
            height: number,
        ): Promise<Uint8Array<ArrayBufferLike>>;
        getTexturePixelData(
            textureHandle: number,
            width: number,
            height: number,
            frameBufferUid: number,
            colorAttachmentIndex: number,
        ): Promise<Uint8Array<ArrayBufferLike>>;
        isSupportMultiViewVRRendering(engine: Engine): boolean;
        loadImageToMipLevelOfTexture2D(
            options: {
                data: TypedArray;
                format: TextureFormatEnum;
                height: number;
                mipLevel: number;
                rowSizeByPixel: number;
                textureUid: number;
                type: ComponentTypeEnum;
                width: number;
                xOffset: number;
                yOffset: number;
            },
        ): void;
        resizeCanvas(width: number, height: number): void;
        setVertexDataToPipeline(
            bufferHandles: {
                iboHandle?: number;
                vaoHandle: number;
                vboHandles: number[];
            },
            primitive: Primitive,
            instanceIDBufferUid: number,
        ): void;
        setViewport(engine: Engine, viewport?: Vector4): void;
        updateIndexBuffer(accessor: Accessor, resourceHandle: number): void;
        updateVertexBuffer(accessor: Accessor, resourceHandle: number): void;
        updateVertexBufferAndIndexBuffer(
            primitive: Primitive,
            vertexHandles: VertexHandles,
        ): void;
    }

    Implemented by

    Index

    Methods

    • Allocates a texture with specified dimensions and format without initial data. This creates an empty texture that can be filled later or used as a render target.

      Parameters

      • options: {
            format: TextureFormatEnum;
            height: number;
            mipLevelCount: number;
            width: number;
        }

        Texture allocation parameters

        • format: TextureFormatEnum

          Internal texture format

        • height: number

          Texture height in pixels

        • mipLevelCount: number

          Number of mipmap levels to allocate

        • width: number

          Texture width in pixels

      Returns number

      The texture resource handle

    • Attaches a specific face of a cube texture as a color buffer to a framebuffer. This enables rendering to individual faces of cube textures.

      Parameters

      • framebuffer: FrameBuffer

        The target framebuffer

      • attachmentIndex: number

        Color attachment index (0-based)

      • faceIndex: number

        Cube face index (0-5)

      • mipLevel: number

        Mipmap level to attach

      • renderable: IRenderable

        The cube texture to attach

      Returns void

    • Attaches a specific layer of a texture array as a color buffer to a framebuffer. This enables layered rendering to texture arrays.

      Parameters

      • framebuffer: FrameBuffer

        The target framebuffer

      • attachmentIndex: number

        Color attachment index (0-based)

      • renderable: IRenderable

        The texture array to attach

      • layerIndex: number

        Index of the layer to attach

      • mipLevel: number

        Mipmap level to attach

      Returns void

    • Attaches a color buffer (texture or renderbuffer) to a framebuffer object. This allows the framebuffer to render color data to the attached buffer.

      Parameters

      • framebuffer: FrameBuffer

        The target framebuffer

      • attachmentIndex: number

        Color attachment index (0-based)

      • renderable: IRenderable

        The color buffer to attach

      Returns void

    • Clears the framebuffer associated with the given render pass. This operation clears color, depth, and/or stencil buffers as configured in the render pass.

      Parameters

      • engine: Engine
      • renderPass: RenderPass

        The render pass containing clear configuration

      • OptionaldisplayIdx: number

      Returns void

    • Creates a compressed texture from a Basis Universal file. Basis Universal provides efficient texture compression that can be transcoded to various GPU-specific formats at runtime.

      Parameters

      • basisFile: _BasisFile

        The Basis Universal file containing compressed texture data

      • options: { border: number; format: EnumIO; type: ComponentTypeEnum }

        Texture creation parameters

        • border: number

          Border width (typically 0)

        • format: EnumIO

          Target pixel format after transcoding

        • type: ComponentTypeEnum

          Component data type

      Returns number

      The texture resource handle

    • Creates a cube texture from image files with automatic loading. This method handles the loading and assembly of 6 cube faces from file sources.

      Parameters

      • engine: Engine
      • baseUri: string

        Base URI for the cube texture files

      • mipLevelCount: number

        Number of mipmap levels to generate

      • isNamePosNeg: boolean

        Whether to use positive/negative naming convention

      • hdriFormat: EnumIO

        HDRI format specification for high dynamic range textures

      Returns Promise<[number, Sampler, number, number]>

      Promise resolving to a tuple of [texture handle, sampler, width, height]

    • Creates a framebuffer object for off-screen rendering. Framebuffers allow rendering to textures instead of the default screen buffer.

      Returns number

      The framebuffer object resource handle

    • Creates an index buffer from an accessor containing index data. Index buffers are used to define the order in which vertices are processed.

      Parameters

      • accessor: Accessor

        Accessor containing index data and metadata

      Returns number

      The index buffer resource handle

    • Creates a renderbuffer for use as a framebuffer attachment. Renderbuffers are optimized for use as render targets but cannot be sampled as textures.

      Parameters

      • width: number

        Renderbuffer width in pixels

      • height: number

        Renderbuffer height in pixels

      • internalFormat: TextureParameterEnum

        Internal format of the renderbuffer

      • isMSAA: boolean

        Whether to enable multi-sample anti-aliasing

      • sampleCountMSAA: number

        Number of MSAA samples (if MSAA is enabled)

      Returns number

      The renderbuffer resource handle

    • Creates a render target texture for off-screen rendering. This texture can be used as a color attachment in framebuffers for rendering operations.

      Parameters

      • options: {
            format: TextureParameterEnum;
            height: number;
            mipLevelCount: number;
            width: number;
        }

        Render target creation parameters

        • format: TextureParameterEnum

          Internal texture format

        • height: number

          Texture height in pixels

        • mipLevelCount: number

          Number of mipmap levels

        • width: number

          Texture width in pixels

      Returns number

      The render target texture resource handle

    • Creates a render target texture array for layered rendering. This allows rendering to multiple texture layers in a single pass.

      Parameters

      • options: {
            arrayLength: number;
            format: EnumIO;
            height: number;
            internalFormat: TextureParameterEnum;
            level: number;
            type: ComponentTypeEnum;
            width: number;
        }

        Render target array creation parameters

        • arrayLength: number

          Number of texture layers

        • format: EnumIO

          Pixel data format

        • height: number

          Texture height in pixels

        • internalFormat: TextureParameterEnum

          Internal texture format

        • level: number

          Mipmap level

        • type: ComponentTypeEnum

          Component data type

        • width: number

          Texture width in pixels

      Returns number

      The render target texture array resource handle

    • Creates a render target cube texture for environment mapping and shadow mapping. This allows rendering to all six faces of a cube texture.

      Parameters

      • options: {
            format: TextureParameterEnum;
            height: number;
            mipLevelCount: number;
            width: number;
        }

        Render target cube creation parameters

        • format: TextureParameterEnum

          Internal texture format

        • height: number

          Texture height in pixels

        • mipLevelCount: number

          Number of mipmap levels

        • width: number

          Texture width in pixels

      Returns number

      The render target cube texture resource handle

    • Creates a shader program from vertex and fragment shader source code. This method compiles, links, and validates the shader program for use in rendering.

      Parameters

      • options: {
            attributeNames: AttributeNames;
            attributeSemantics: VertexAttributeEnum[];
            config: Config;
            engine: Engine;
            fragmentShaderStr: string;
            material: Material;
            onError?: (message: string) => void;
            primitive: Primitive;
            vertexShaderStr: string;
        }

        Shader program creation parameters

        • attributeNames: AttributeNames

          Names of vertex attributes

        • attributeSemantics: VertexAttributeEnum[]

          Semantic meanings of vertex attributes

        • config: Config

          Configuration for the shader program

        • engine: Engine

          Engine instance for logging

        • fragmentShaderStr: string

          Fragment shader source code

        • material: Material

          Material that will use this shader program

        • OptionalonError?: (message: string) => void

          Optional error callback for compilation/linking errors

        • primitive: Primitive

          Primitive geometry that will be rendered with this shader

        • vertexShaderStr: string

          Vertex shader source code

      Returns number

      The shader program resource handle

    • Creates a texture array from provided image data. Texture arrays allow efficient rendering of multiple related textures.

      Parameters

      • width: number

        Texture width in pixels

      • height: number

        Texture height in pixels

      • arrayLength: number

        Number of textures in the array

      • mipLevelCount: number

        Number of mipmap levels

      • internalFormat: TextureFormatEnum

        Internal texture format

      • format: EnumIO

        Pixel data format

      • type: ComponentTypeEnum

        Component data type

      • imageData: TypedArray

        The texture data as a typed array

      Returns number

      The texture array resource handle

    • Creates a texture from a data URI string. This method decodes base64-encoded image data and creates a GPU texture.

      Parameters

      • dataUri: string

        The data URI string containing encoded image data

      • options: {
            border: number;
            format: EnumIO;
            generateMipmap: boolean;
            internalFormat: TextureParameterEnum;
            level: number;
            type: ComponentTypeEnum;
        }

        Texture creation parameters

        • border: number

          Border width (typically 0)

        • format: EnumIO

          Pixel data format

        • generateMipmap: boolean

          Whether to automatically generate mipmaps

        • internalFormat: TextureParameterEnum

          Internal texture format for GPU storage

        • level: number

          Mipmap level (typically 0 for base level)

        • type: ComponentTypeEnum

          Component data type

      Returns Promise<number>

      Promise resolving to the texture resource handle

    • Creates a texture from an HTML image element with specified parameters. This method handles the conversion of HTML image elements to GPU textures.

      Parameters

      • imageData: HTMLImageElement

        The HTML image element containing the texture data

      • options: {
            border: number;
            format: EnumIO;
            generateMipmap: boolean;
            height: number;
            internalFormat: TextureParameterEnum;
            level: number;
            type: ComponentTypeEnum;
            width: number;
        }

        Texture creation parameters

        • border: number

          Border width (typically 0)

        • format: EnumIO

          Pixel data format

        • generateMipmap: boolean

          Whether to automatically generate mipmaps

        • height: number

          Texture height in pixels

        • internalFormat: TextureParameterEnum

          Internal texture format for GPU storage

        • level: number

          Mipmap level (typically 0 for base level)

        • type: ComponentTypeEnum

          Component data type

        • width: number

          Texture width in pixels

      Returns Promise<number>

      Promise resolving to the texture resource handle

    • Creates a texture from image bitmap data with specified parameters. This method handles various image sources and converts them to GPU textures.

      Parameters

      • imageData: ImageBitmapData

        The source image data (HTMLImageElement, HTMLVideoElement, etc.)

      • options: {
            border: number;
            format: EnumIO;
            generateMipmap: boolean;
            height: number;
            internalFormat: TextureParameterEnum;
            level: number;
            type: ComponentTypeEnum;
            width: number;
        }

        Texture creation parameters

        • border: number

          Border width (typically 0)

        • format: EnumIO

          Pixel data format

        • generateMipmap: boolean

          Whether to automatically generate mipmaps

        • height: number

          Texture height in pixels

        • internalFormat: TextureParameterEnum

          Internal texture format for GPU storage

        • level: number

          Mipmap level (typically 0 for base level)

        • type: ComponentTypeEnum

          Component data type

        • width: number

          Texture width in pixels

      Returns Promise<number>

      Promise resolving to the texture resource handle

    • Creates a vertex buffer from an accessor containing vertex data. The accessor provides metadata about the data layout and type information.

      Parameters

      • accessor: Accessor

        Accessor containing vertex data and metadata

      Returns number

      The vertex buffer resource handle

    • Creates both vertex and index buffers for a primitive geometry. This is a convenience method that handles the creation of all necessary buffers for rendering a geometric primitive.

      Parameters

      • primitive: Primitive

        The primitive geometry containing vertex and index data

      Returns VertexHandles

      Object containing handles for all created vertex-related resources

    • Creates a vertex buffer directly from a typed array. This is a more direct approach when you have raw vertex data without accessor metadata.

      Parameters

      • typedArray: TypedArray

        The typed array containing vertex data

      Returns number

      The vertex buffer resource handle

    • Deletes a framebuffer object and frees associated resources.

      Parameters

      • frameBufferObjectHandle: number

        Handle to the framebuffer to delete

      Returns void

    • Deletes a renderbuffer resource and frees associated GPU memory.

      Parameters

      • renderBufferUid: number

        Handle to the renderbuffer to delete

      Returns void

    • Deletes all vertex-related resources (vertex buffers, index buffers, VAOs). This method ensures proper cleanup of all resources associated with vertex data.

      Parameters

      • vertexHandles: VertexHandles

        Object containing handles to all vertex-related resources to delete

      Returns void

    • Generates mipmaps for a 2D texture. Mipmaps improve rendering quality and performance by providing pre-filtered texture versions.

      Parameters

      • textureHandle: number

        Handle to the texture

      • width: number

        Base texture width in pixels

      • height: number

        Base texture height in pixels

      Returns void

    • Generates mipmaps for a cube texture. This creates mipmaps for all six faces of the cube texture.

      Parameters

      • textureHandle: number

        Handle to the cube texture

      • width: number

        Base texture width in pixels

      • height: number

        Base texture height in pixels

      Returns void

    • Reads pixel data from a specific face of a cube texture. This creates a temporary framebuffer, attaches the cube face, and reads the pixels.

      Parameters

      • textureHandle: number

        Handle to the cube texture

      • width: number

        Width of the face texture

      • height: number

        Height of the face texture

      • faceIndex: number

        Index of the cube face (0=+X, 1=-X, 2=+Y, 3=-Y, 4=+Z, 5=-Z)

      Returns Promise<Uint8Array<ArrayBufferLike>>

      Promise resolving to the pixel data as a Uint8Array (RGBA format)

    • Reads pixel data directly from a 2D texture without requiring a framebuffer. Creates a temporary framebuffer internally to read the texture data. This is useful for reading texture data from textures that are not attached to a framebuffer.

      Parameters

      • textureHandle: number

        Handle to the texture to read from

      • x: number

        X offset to start reading from

      • y: number

        Y offset to start reading from

      • width: number

        Width of the region to read

      • height: number

        Height of the region to read

      Returns Uint8Array

      The pixel data as a Uint8Array in RGBA format

    • Reads pixel data directly from a 2D texture asynchronously. This method works with both WebGL and WebGPU backends. Creates a temporary framebuffer internally to read the texture data.

      Parameters

      • textureHandle: number

        Handle to the texture to read from

      • x: number

        X offset to start reading from

      • y: number

        Y offset to start reading from

      • width: number

        Width of the region to read

      • height: number

        Height of the region to read

      Returns Promise<Uint8Array<ArrayBufferLike>>

      Promise resolving to the pixel data as a Uint8Array in RGBA format

    • Reads pixel data from a texture attached to a framebuffer. This allows CPU access to rendered texture data for analysis or processing.

      Parameters

      • textureHandle: number

        Handle to the texture to read from

      • width: number

        Width of the region to read

      • height: number

        Height of the region to read

      • frameBufferUid: number

        Handle to the framebuffer containing the texture

      • colorAttachmentIndex: number

        Index of the color attachment to read from

      Returns Promise<Uint8Array<ArrayBufferLike>>

      Promise resolving to the pixel data as a Uint8Array

    • Checks if the current graphics API supports multi-view VR rendering. Multi-view rendering allows efficient stereo rendering for VR applications.

      Parameters

      Returns boolean

      True if multi-view VR rendering is supported, false otherwise

    • Loads image data to a specific mipmap level of an existing texture. This method allows for partial texture updates and mipmap level management.

      Parameters

      • options: {
            data: TypedArray;
            format: TextureFormatEnum;
            height: number;
            mipLevel: number;
            rowSizeByPixel: number;
            textureUid: number;
            type: ComponentTypeEnum;
            width: number;
            xOffset: number;
            yOffset: number;
        }

        Image loading parameters

        • data: TypedArray

          The actual image data as a typed array

        • format: TextureFormatEnum

          Format of the source image data

        • height: number

          Height of the image data to copy

        • mipLevel: number

          Target mipmap level

        • rowSizeByPixel: number

          Size of each row in pixels

        • textureUid: number

          Handle to the target texture

        • type: ComponentTypeEnum

          Data type of the source image

        • width: number

          Width of the image data to copy

        • xOffset: number

          X offset within the texture for the copy region

        • yOffset: number

          Y offset within the texture for the copy region

      Returns void

    • Resizes the canvas to the specified dimensions. This operation may trigger viewport adjustments and resource reallocation.

      Parameters

      • width: number

        The new canvas width in pixels

      • height: number

        The new canvas height in pixels

      Returns void

    • Configures the graphics pipeline with vertex data for rendering. This method sets up the vertex array object (VAO) and binds the necessary buffers.

      Parameters

      • bufferHandles: { iboHandle?: number; vaoHandle: number; vboHandles: number[] }

        Object containing buffer handles

        • OptionaliboHandle?: number

          Index Buffer Object handle (optional)

        • vaoHandle: number

          Vertex Array Object handle

        • vboHandles: number[]

          Array of Vertex Buffer Object handles

      • primitive: Primitive

        The primitive geometry defining vertex layout

      • instanceIDBufferUid: number

        Handle to instance ID buffer for instanced rendering

      Returns void

    • Sets the viewport for rendering operations. The viewport defines the area of the framebuffer that will be rendered to.

      Parameters

      • engine: Engine
      • Optionalviewport: Vector4

        Optional viewport rectangle as [x, y, width, height]. If not provided, uses full framebuffer

      Returns void

    • Updates an existing index buffer with new data from an accessor. This allows for dynamic modification of index data without recreating the buffer.

      Parameters

      • accessor: Accessor

        Accessor containing the new index data

      • resourceHandle: number

        Handle to the existing index buffer to update

      Returns void

    • Updates an existing vertex buffer with new data from an accessor. This allows for dynamic modification of vertex data without recreating the buffer.

      Parameters

      • accessor: Accessor

        Accessor containing the new vertex data

      • resourceHandle: number

        Handle to the existing vertex buffer to update

      Returns void

    • Updates both vertex and index buffers for a primitive geometry. This is a convenience method for updating all vertex-related data at once.

      Parameters

      • primitive: Primitive

        The primitive geometry containing updated vertex and index data

      • vertexHandles: VertexHandles

        Object containing handles to the buffers to update

      Returns void