> ## Documentation Index
> Fetch the complete documentation index at: https://rive.app/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# GPUTexture

A GPU texture (2-D, cube, 3-D, or array).

## Fields

### `width`

Width of mip 0 in texels.

### `height`

Height of mip 0 in texels.

### `format`

Pixel format.

## Constructors

### `new`

<div class="signature">
  ```lua theme={null}
  new(desc: {width: number, height: number, format: TextureFormat?, type: TextureType?, renderTarget: boolean?, mipmaps: number?, layers: number?, sampleCount: number?, label: string?,}) -> GPUTexture
  ```
</div>

## Methods

### `view`

<div class="signature">
  ```lua theme={null}
  view(desc: {dimension: TextureType?, aspect: TextureAspect?, baseMipLevel: number?, mipCount: number?, baseLayer: number?, layerCount: number?,}?) -> GPUTextureView
  ```
</div>

Create a view into a sub-range of this texture. All fields optional;
omit desc entirely for a full-texture view.
Views are immutable. Create them once at init next to the texture and
reuse them every frame. Calling view() in a per-frame draw callback
creates and destroys a native GPU object each frame.

### `upload`

<div class="signature">
  ```lua theme={null}
  upload(desc: {data: buffer, mipLevel: number?, layer: number?, width: number?, height: number?,}) -> ()
  ```
</div>

Upload pixel data to a specific mip / layer.
