This feature is not Baseline because it does not work in some of the most widely-used browsers.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Note: This feature is available in Web Workers.
The createView() method of the GPUTexture interface creates a GPUTextureView representing a specific view of the GPUTexture.
createView() createView(descriptor)
descriptor OptionalAn object containing the following properties:
arrayLayerCount OptionalA number defining how many array layers are accessible to the view, starting with the baseArrayLayer value.
If arrayLayerCount is omitted, it is given a value as follows:
dimension is "1d", "2d", or "3d", arrayLayerCount is 1.dimension is "cube", arrayLayerCount is 6.dimension is "2d-array", or "cube-array", arrayLayerCount is GPUTexture.depthOrArrayLayers - baseArrayLayer.aspect OptionalAn enumerated value specifying which aspect(s) of the texture are accessible to the texture view. Possible values are:
"all"All available aspects of the texture format will be accessible to the view, which can mean all or any of color, depth, and stencil, depending on what kind of format you are dealing with.
"depth-only"Only the depth aspect of a depth-or-stencil format will be accessible to the view.
"stencil-only"Only the stencil aspect of a depth-or-stencil format will be accessible to the view.
If omitted, aspect takes a value of "all".
baseArrayLayer OptionalA number defining the index of the first array layer accessible to the view. If omitted, baseArrayLayer takes a value of 0.
baseMipLevel OptionalA number representing the first (most detailed) mipmap level accessible to the view. If omitted, baseMipLevel takes a value of 0.
dimension OptionalAn enumerated value specifying the format to view the texture as. Possible values are:
"1d": The texture is viewed as a one-dimensional image."2d": The texture is viewed as a single two-dimensional image."2d-array": The texture is viewed as an array of two-dimensional images."cube": The texture is viewed as a cubemap. The view has 6 array layers, corresponding to the [+X, -X, +Y, -Y, +Z, -Z] faces of the cube. Sampling is done seamlessly across the faces of the cubemap."cube-array": The texture is viewed as a packed array of N cubemaps, each with 6 array layers corresponding to the [+X, -X, +Y, -Y, +Z, -Z] faces of the cube. Sampling is done seamlessly across the faces of the cubemaps."3d": The texture is viewed as a three-dimensional image.If dimension is omitted, it is given a value as follows:
GPUTexture.dimension is "1d", dimension is "1d".GPUTexture.dimension is "2d" and GPUTexture.depthOrArrayLayers is 1, dimension is "2d".GPUTexture.dimension is "2d" and GPUTexture.depthOrArrayLayers is more than 1, dimension is "2d-array".GPUTexture.dimension is "3d", dimension is "3d".format OptionalAn enumerated value specifying the format of the texture view. See the Texture formats section of the specification for all the possible values.
If format is omitted, it will be given a value as follows:
aspect is "depth-only" or "stencil-only", and GPUTexture.format is a depth-or-stencil format, format will be set equal to the appropriate aspect-specific format.GPUTexture.format.label OptionalA string providing a label that can be used to identify the object, for example in GPUError messages or console warnings.
mipLevelCount OptionalA number defining how many mipmap levels are accessible to the view, starting with the baseMipLevel value.
If mipLevelCount is omitted, it will be given a value of GPUTexture.mipLevelCount - baseMipLevel.
usage OptionalA set of bitwise flags representing a subset of the source texture's usage flags (available in the GPUTexture.usage property) that are compatible with the chosen view format. This can be used to restrict the allowed view usage in cases where the view format is incompatible with certain usages. The available usage flags are listed in the GPUTexture.usage value table.
The default value is 0, which represents the source texture's full set of usage flags. If the view's format doesn't support all of the texture's usages, the default will fail, and the view's usage must be specified explicitly.
A GPUTextureView object instance.
The following criteria must be met when calling createView(), otherwise a GPUValidationError is generated and an invalid GPUTextureView object is returned:
aspect is "all", format is equal to GPUTexture.format, or one of the viewFormats specified in the originating GPUDevice.createTexture() call's descriptor object.aspect is "depth-only" or "stencil-only", format is equal to the appropriate aspect-specific format of the depth-or-stencil format.mipLevelCount is greater than 0.mipLevelCount + baseMipLevel is less than or equal to GPUTexture.mipLevelCount.arrayLayerCount is greater than 0.arrayLayerCount + baseArrayLayer is less than or equal to GPUTexture.depthOrArrayLayers if GPUTexture.dimension is "2d", or less than or equal to 1 if GPUTexture.dimension is "1d" or "3d".sampleCount is greater than 1, dimension is "2d".dimension is: "1d" GPUTexture.dimension is "1d"
arrayLayerCount is 1"2d" GPUTexture.dimension is "2d"
arrayLayerCount is 1"2d-array" GPUTexture.dimension is "2d"
"cube" GPUTexture.dimension is "2d"
arrayLayerCount is 6GPUTexture.width is equal to GPUTexture.height
"cube-array" GPUTexture.dimension is "2d"
arrayLayerCount is a multiple of 6GPUTexture.width is equal to GPUTexture.height
"3d" GPUTexture.dimension is "3d"
arrayLayerCount is 1format supports all of the usages specified in the usage property.createView() usageIn the WebGPU Samples Cubemap demo, you will see multiple examples of how createView() is used, both as to create a view resource for a GPUDevice.createBindGroup() call, and to provide a view in the depthStencilAttachment object of a GPUCommandEncoder.beginRenderPass() descriptor.
const uniformBindGroup = device.createBindGroup({
layout: pipeline.getBindGroupLayout(0),
entries: [
{
binding: 0,
resource: {
buffer: uniformBuffer,
offset: 0,
size: uniformBufferSize,
},
},
{
binding: 1,
resource: sampler,
},
{
binding: 2,
resource: cubemapTexture.createView({
dimension: "cube",
}),
},
],
});
const renderPassDescriptor: GPURenderPassDescriptor = {
colorAttachments: [
{
view: undefined, // Assigned later
loadOp: "clear",
storeOp: "store",
},
],
depthStencilAttachment: {
view: depthTexture.createView(),
depthClearValue: 1.0,
depthLoadOp: "clear",
depthStoreOp: "store",
},
};
// …
const commandEncoder = device.createCommandEncoder();
const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);
// …
createView() with usage restrictionIn this snippet, we create a texture and then create a view that has its usage restricted via the usage property.
const texture = myDevice.createTexture({
size: [4, 4],
format: "rgba8unorm",
usage:
GPUTextureUsage.RENDER_ATTACHMENT |
GPUTextureUsage.TEXTURE_BINDING |
GPUTextureUsage.STORAGE_BINDING,
viewFormats: ["rgba8unorm-srgb"],
});
const view = texture.createView({
format: "rgba8unorm-srgb",
usage: GPUTextureUsage.RENDER_ATTACHMENT, // Restrict allowed usage
});
| Specification |
|---|
| WebGPU> # dom-gputexture-createview> |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
createView |
113Currently supported on ChromeOS, macOS, and Windows only. |
113Currently supported on ChromeOS, macOS, and Windows only. |
141Currently supported on Windows only, in all contexts except for service workers. |
99Currently supported on ChromeOS, macOS, and Windows only. |
26 | 121 | No | 81 | 26 | 25.0 | 121 | 26 |
texture_rgb10a2uint |
119Currently supported on ChromeOS, macOS, and Windows only. |
119Currently supported on ChromeOS, macOS, and Windows only. |
No | 105Currently supported on ChromeOS, macOS, and Windows only. |
No | 121 | No | 81 | No | 25.0 | 121 | No |
usage |
132Currently supported on ChromeOS, macOS, and Windows only. |
132Currently supported on ChromeOS, macOS, and Windows only. |
No | 117Currently supported on ChromeOS, macOS, and Windows only. |
No | 132 | No | 87 | No | No | 132 | No |
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/GPUTexture/createView