Spec-Zone.ru › Web APIs

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API