GPUTexture: метод createView()
Ограниченная доступность
Эта функция не относится к Baseline, так как не работает в некоторых из наиболее широко используемых браузеров.
Экспериментальная функция: Это экспериментальная технология
Перед использованием в производстве внимательно проверьте таблицу совместимости с браузерами.
Безопасный контекст: Данная функция доступна только в безопасных контекстах (HTTPS) в некоторых или всех поддерживающих браузерах.
Примечание: Эта функция доступна в Web Workers.
Метод createView() интерфейса GPUTexture создает GPUTextureView, представляющий собой определённый вид GPUTexture.
Синтаксис
createView() createView(descriptor)
Параметры
descriptorНеобязательно-
Объект, содержащий следующие свойства:
arrayLayerCountНеобязательно-
Число, определяющее количество доступных слоёв массива для представления, начиная с значения
baseArrayLayer.Если
arrayLayerCountопущено, ему присваивается значение следующим образом:- Если
dimensionравно"1d","2d", или"3d",arrayLayerCountравно 1. - Если
dimensionравно"cube",arrayLayerCountравно 6. - Если
dimensionравно"2d-array", или"cube-array",arrayLayerCountравноGPUTexture.depthOrArrayLayers-baseArrayLayer.
- Если
aspectНеобязательно-
Перечисление, указывающее, какие аспекты текстуры доступны для представления текстуры. Возможные значения:
"all"-
Все доступные аспекты формата текстуры будут доступны для представления, что может означать все или любые из цвет, глубина и stencil, в зависимости от используемого формата.
"depth-only"-
Доступен только аспект глубины формата глубины или stencil для представления.
"stencil-only"-
Доступен только аспект stencil формата глубины-stencil для представления.
Если опущено,
aspectпринимает значение"all". baseArrayLayerНеобязательно-
Число, определяющее индекс первого слоя массива, доступного для представления. Если опущено,
baseArrayLayerпринимает значение 0. baseMipLevelНеобязательно-
Число, представляющее первый (самый подробный) уровень mipmap, доступный для представления. Если опущено,
baseMipLevelпринимает значение 0. dimensionНеобязательно-
Перечисление, указывающее формат для представления текстуры. Возможные значения:
-
"1d": Текстура отображается как одномерное изображение. -
"2d": Текстура отображается как одиночное двумерное изображение. -
"2d-array": Текстура отображается как массив двумерных изображений. -
"cube": Текстура отображается как куб. Представление имеет 6 слоёв массива, соответствующих сторонам куба. Выборка выполняется плавно по сторонам кубовой текстуры. -
"cube-array": Текстура отображается как упакованный массив N кубовых текстур, каждая из которых имеет 6 слоёв массива, соответствующих сторонам куба. Выборка выполняется плавно по сторонам кубовых текстур. -
"3d": Текстура отображается как трёхмерное изображение.
Если
dimensionопущено, ему присваивается значение следующим образом:- Если
GPUTexture.dimensionравно"1d",dimensionравно"1d". - Если
GPUTexture.dimensionравно"2d"иGPUTexture.depthOrArrayLayersравно 1,dimensionравно"2d". - Если
GPUTexture.dimensionравно"2d"иGPUTexture.depthOrArrayLayersбольше 1,dimensionравно"2d-array". - Если
GPUTexture.dimensionравно"3d",dimensionравно"3d".
-
formatНеобязательно-
Перечисление, определяющее формат представления текстуры. См. раздел Форматы текстур спецификации для всех возможных значений.
Если
formatопущено, ему будет присвоено значение следующим образом:- Если
aspectравно"depth-only"или"stencil-only", иGPUTexture.formatявляется форматом глубины или stencil,formatбудет установлено равным соответствующему формату, специфичному для аспекта. - В противном случае оно будет установлено равным
GPUTexture.format.
- Если
labelНеобязательно-
Строка, предоставляющая метку, которая может использоваться для идентификации объекта, например, в сообщениях
GPUErrorили предупреждениях консоли. mipLevelCountНеобязательно-
Число, определяющее количество уровней mipmap, доступных для представления, начиная с
baseMipLevelзначения.Если
mipLevelCountопущено, ему будет присвоено значениеGPUTexture.mipLevelCount-baseMipLevel.
Возвращаемое значение
Экземпляр объекта GPUTextureView.
Валидация
Следующие критерии должны быть выполнены при вызове createView(), в противном случае генерируется GPUValidationError, и возвращается некорректный объект GPUTextureView:
- Если
aspectравно"all",formatравноGPUTexture.format, или одному изviewFormatsуказанных в объекте описания вызоваGPUDevice.createTexture(). - Если
aspectравно"depth-only"или"stencil-only",formatравно соответствующему формату, специфичному для аспекта формата глубины или stencil. -
mipLevelCountбольше 0. -
mipLevelCount+baseMipLevelменьше или равноGPUTexture.mipLevelCount. -
arrayLayerCountбольше 0. -
arrayLayerCount+baseArrayLayerменьше или равноGPUTexture.depthOrArrayLayers, еслиGPUTexture.dimensionравно"2d", или меньше или равно 1, еслиGPUTexture.dimensionравно"1d"или"3d". - Если
sampleCountбольше 1,dimensionравно"2d". - Если
dimensionравно:-
"1d"-
GPUTexture.dimensionравно"1d" -
arrayLayerCountравно 1
-
-
"2d"-
GPUTexture.dimensionравно"2d" -
arrayLayerCountравно 1
-
-
"2d-array"-
GPUTexture.dimensionравно"2d"
-
-
"cube"-
GPUTexture.dimensionравно"2d" -
arrayLayerCountравно 6 -
GPUTexture.widthравноGPUTexture.height
-
-
"cube-array"-
GPUTexture.dimensionравно"2d" -
arrayLayerCountкратно 6 -
GPUTexture.widthравноGPUTexture.height
-
-
"3d"-
GPUTexture.dimensionравно"3d" -
arrayLayerCountравно 1
-
-
Примеры
В примерах WebGPU Демонстрация кубовой проекции, вы увидите несколько примеров того, как createView() используется, как для создания представления resource для вызова GPUDevice.createBindGroup(), так и для предоставления view в объекте depthStencilAttachment описателя GPUCommandEncoder.beginRenderPass().
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);
// ...
Спецификации
| Спецификация |
|---|
| WebGPU # dom-gputexture-createview |
Совместимость с браузерами
| Десктопные | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
createView |
113В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
previewВ настоящее время поддерживается только в Linux и Windows. |
99В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
preview | 121 | Нет | 81 | Нет | 25.0 | 121 |
texture_rgb10a2uint |
119В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
119В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
Нет | 105В настоящее время поддерживается только в ChromeOS, macOS и Windows. |
Нет | 121 | Нет | 81 | Нет | 25.0 | 121 |
См. также
- API WebGPU
© 2005–2024 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