Spec-Zone.ru › Web APIs

GPUDevice: метод createSampler()

Ограниченная доступность

Эта функция не относится к Baseline, так как она не работает во всех широко используемых браузерах.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Экспериментально: Это экспериментальная технология
Перед использованием в производственной среде внимательно проверьте таблицу совместимости браузеров.

Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.

Примечание: Эта функция доступна в Web Workers.

Метод createSampler() интерфейса GPUDevice создаёт объект GPUSampler, который управляет тем, как шейдеры преобразуют и фильтруют данные ресурсов текстур.

Синтаксис

createSampler()
createSampler(descriptor)

Параметры

descriptor Необязательно

Объект, содержащий следующие свойства:

addressModeU Необязательно

Перечисление, определяющее поведение выборки, когда ширина области выборки выходит за пределы ширины текстуры. Возможные значения:

  • "clamp-to-edge": Координаты текстуры ограничены значениями от 0,0 до 1,0 включительно.
  • "repeat": Координаты текстуры повторяются на противоположную сторону текстуры.
  • "mirror-repeat": Координаты текстуры повторяются на противоположную сторону текстуры, но текстура переворачивается, если целая часть координаты нечётная.

Если опущено, addressModeU по умолчанию "clamp-to-edge".

addressModeV Необязательно

Перечисление, определяющее поведение выборки, когда высота области выборки выходит за пределы высоты текстуры. Возможные и значения по умолчанию такие же, как для addressModeU.

addressModeW Необязательно

Перечисление, определяющее поведение выборки, когда глубина области выборки выходит за пределы глубины текстуры. Возможные и значения по умолчанию такие же, как для addressModeU.

compare Необязательно

Если указано, выборка будет выборкой сравнения указанного типа. Возможные (перечисленные) значения:

  • "never": Сравнение никогда не проходит.
  • "less": Указанное значение проходит тест сравнения, если оно меньше значения выборки.
  • "equal": Указанное значение проходит тест сравнения, если оно равно значению выборки.
  • "less-equal": Указанное значение проходит тест сравнения, если оно меньше или равно значению выборки.
  • "greater": Указанное значение проходит тест сравнения, если оно больше значения выборки.
  • "not-equal": Указанное значение проходит тест сравнения, если оно не равно значению выборки.
  • "greater-equal": Указанное значение проходит тест сравнения, если оно больше или равно значению выборки.
  • "always": Сравнение всегда проходит.

Выборки сравнения могут использовать фильтрацию, но результаты выборки зависят от реализации и могут отличаться от обычных правил фильтрации.

label Необязательно

Строка, предоставляющая метку, которую можно использовать для идентификации объекта, например, в сообщениях GPUError или предупреждениях консоли.

lodMinClamp Необязательно

Число, определяющее минимальный уровень детализации, используемый при выборке текстуры. Если опущено, lodMinClamp по умолчанию 0.

lodMaxClamp Необязательно

Число, определяющее максимальный уровень детализации, используемый при выборке текстуры. Если опущено, lodMaxClamp по умолчанию 32.

maxAnisotropy Необязательно

Указывает максимальное значение анизотропии, используемое выборкой. Если опущено, maxAnisotropy по умолчанию 1.

Большинство реализаций поддерживают значения maxAnisotropy в диапазоне от 1 до 16 включительно. Использованное значение будет ограничено максимальным значением, поддерживаемым платформой.

magFilter Необязательно

Перечисление, определяющее поведение выборки, когда область выборки меньше или равна одному тексту. Возможные значения:

  • "nearest": Возвращает значение тексту, ближайшего к координатам текстуры.
  • "linear": Выбирает две тексту в каждом измерении и возвращает линейную интерполяцию между их значениями.

Если опущено, magFilter по умолчанию "nearest".

Примечание: Необходимо включить float32-filterable функцию для r32float-, rg32float- и rgba32float-format GPUTexture для возможности фильтрации.

minFilter Необязательно

Перечисление, определяющее поведение выборки, когда область выборки больше одного тексту. Возможные и значения по умолчанию такие же, как для magFilter.

mipmapFilter Необязательно

Перечисление, определяющее поведение при выборке между уровнями mipmap. Возможные и значения по умолчанию такие же, как для magFilter.

Возвращаемое значение

Экземпляр объекта GPUSampler.

Проверка

При вызове createSampler() должны быть соблюдены следующие условия, в противном случае генерируется GPUValidationError и возвращается недопустимый объект GPUSampler:

  • lodMinClamp должно быть равно или больше 0.
  • lodMaxClamp должно быть равно или больше lodMinClamp.
  • maxAnisotropy должно быть равно или больше 1.
  • Если maxAnisotropy больше 1, magFilter, minFilter, и mipmapFilter должны быть "linear".

Примеры

Следующий фрагмент создаёт GPUSampler, который выполняет трилинейную фильтрацию и повторяет координаты текстуры:

// ...

const sampler = device.createSampler({
  addressModeU: "repeat",
  addressModeV: "repeat",
  magFilter: "linear",
  minFilter: "linear",
  mipmapFilter: "linear",
});

В примере Shadow Mapping WebGPU используется выборка сравнения для выборки из текстуры глубины, чтобы отобразить тени.

Спецификации

Спецификация
WebGPU
# dom-gpudevice-createsampler

Совместимость с браузерами

Рабочие столы Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
createSampler
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
previewВ настоящее время поддерживается только на Linux и Windows.
99В настоящее время поддерживается только на ChromeOS, macOS и Windows.
preview 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/GPUDevice/createSampler

Spec-Zone.ru

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