Фильтруемые 32-битные плавающие текстуры
32-битные текстуры с плавающей точкой используются для хранения высокоточных данных, таких как HDR-изображения и карты глубины. Они особенно важны для графических процессоров, используемых в высокопроизводительных игровых и профессиональных приложениях.
Поддержка фильтруемых 32-битных плавающих текстур описывает способность графического процессора фильтровать 32-битные плавающие текстуры. Это означает, что графический процессор может сглаживать края плавающих текстур, делая их менее зазубренными. Это похоже на расширение "OES_texture_float_linear" в WebGL.
Не все графические процессоры поддерживают фильтруемые 32-битные плавающие текстуры. Когда функция "float32-filterable"
доступна в GPUAdapter
, вы можете запросить GPUDevice
с этой функцией и фильтровать текстуры с форматами "r32float", "rg32float" и "rgba32float". Смотрите следующий пример и выдайте dawn:1664 .
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("float32-filterable")) {
throw new Error("Filterable 32-bit float textures support is not available");
}
// Explicitly request filterable 32-bit float textures support.
const device = await adapter.requestDevice({
requiredFeatures: ["float32-filterable"],
});
// Create a sampler with linear filtering.
const sampler = device.createSampler({
magFilter: "linear",
});
// Create a texture with rgba32float format.
const texture = device.createTexture({
size: [100, 100],
format: "rgba32float",
usage: GPUTextureUsage.COPY_DST | GPUTextureUsage.TEXTURE_BINDING,
});
// Write data to texture, create a bindgroup with sampler and texture and
// send the appropriate commands to the GPU....
формат вершин unorm10-10-10-2
В спецификацию WebGPU добавлен новый формат вершин под названием "unorm10-10-10-2", он же "rgb10a2". Он состоит из одного упакованного 32-битного значения с четырьмя нормализованными беззнаковыми целыми значениями, организованными как 10 бит, 10 бит, 10 бит и 2 бита. Смотрите следующий пример и выдайте dawn:2044 .
// Define the layout of vertex attribute data with unorm10-10-10-2 format.
const buffers = [
{
arrayStride: 0,
attributes: [
{ format: "unorm10-10-10-2", offset: 0, shaderLocation: 0 },
],
},
];
// Describe the vertex shader entry point and its input buffer layouts.
const vertex = {
module: myVertexShaderModule,
entryPoint: "main",
buffers,
};
// Pass vertex to device.createRenderPipeline() and
// use vec4<f32> type in WGSL shader code to manipulate data.
формат текстуры rgb10a2uint
В спецификацию WebGPU добавлен новый формат текстуры под названием "rgb10a2uint". Он состоит из 32-битного упакованного пиксельного формата с четырьмя беззнаковыми целочисленными компонентами: 10-битный красный, 10-битный зеленый, 10-битный синий и 2-битная альфа. См. следующий пример и проблему dawn:1936 .
// Create a texture with rgb10a2uint format.
const texture = device.createTexture({
size: [100, 100],
format: "rgb10a2uint",
usage: GPUTextureUsage.COPY_DST | GPUTextureUsage.TEXTURE_BINDING,
});
// Write data to texture, create a bindgroup with texture and
// send the appropriate commands to the GPU....
Обновления рассвета
Запросы меток времени позволяют приложениям WebGPU точно (с точностью до наносекунды) измерять время выполнения команд GPU. Форма API для захвата запросов меток времени в начале и конце проходов была обновлена для соответствия спецификации WebGPU. См. следующий пример и выдачу dawn:1800 .
// Create a timestamp query set that will store the timestamp values.
wgpu::QuerySetDescriptor querySetDescriptor = {
.count = 2,
.type = wgpu::QueryType::Timestamp};
wgpu::QuerySet querySet = device.CreateQuerySet(&querySetDescriptor);
wgpu::RenderPassTimestampWrites timestampWrites = {
.querySet = querySet,
.beginningOfPassWriteIndex = 0,
.endOfPassWriteIndex = 1};
wgpu::ComputePassDescriptor pass{.timestampWrites = ×tampWrites};
// Write the queue timestamp into beginningOfPassWriteIndex and
// endOfPassWriteIndex of myQuerySet respectively before and after the pass
// commands execute.
myEncoder.BeginComputePass(&pass);
Это охватывает только некоторые из ключевых моментов. Ознакомьтесь с исчерпывающим списком коммитов .
Что нового в WebGPU
Список всего, что было рассмотрено в серии « Что нового в WebGPU» .
Хром 138
- Сокращение для использования буфера в качестве связующего ресурса
- Требования к размеру меняются для буферов, отображаемых при создании
- Отчет об архитектуре последних графических процессоров
- Отменить использование атрибута GPUAdapter isFallbackAdapter
- Обновления рассвета
Хром 137
- Использовать вид текстуры для привязки externalTexture
- Буферы копируются без указания смещения и размера
- WGSL workgroupUniformLoad с использованием указателя на атомарный
- Атрибут powerPreference GPUAdapterInfo
- Удалить атрибут совместимости GPURequestAdapterOptions
- Обновления рассвета
Хром 136
- GPUAdapterInfo — атрибут FallbackAdapter
- Улучшение времени компиляции шейдера на D3D12
- Сохраняйте и копируйте изображения холста
- Снять ограничения режима совместимости
- Обновления рассвета
Хром 135
- Разрешить создание макета конвейера с макетом группы нулевой привязки
- Разрешить областям просмотра выходить за пределы границ целевых объектов рендеринга
- Более простой доступ к экспериментальному режиму совместимости на Android
- Удалить ограничение maxInterStageShaderComponents
- Обновления рассвета
Хром 134
- Улучшите рабочие нагрузки машинного обучения с помощью подгрупп
- Удалить поддержку плавающих фильтруемых типов текстур как смешиваемых
- Обновления рассвета
Хром 133
- Дополнительные форматы вершин unorm8x4-bgra и 1-компонентные
- Разрешить запрашивать неизвестные лимиты с неопределенным значением
- Изменения правил выравнивания WGSL
- Повышение производительности WGSL с отбрасыванием
- Используйте VideoFrame displaySize для внешних текстур
- Обработка изображений с ориентацией, отличной от стандартной, с помощью copyExternalImageToTexture
- Улучшение опыта разработчиков
- Включить режим совместимости с featureLevel
- Экспериментальная подгруппа функций очистки
- Отменить ограничение maxInterStageShaderComponents
- Обновления рассвета
Хром 132
- Использование вида текстуры
- Смешивание 32-битных плавающих текстур
- Атрибут GPUDevice adapterInfo
- Настройка контекста холста с недопустимым форматом приводит к ошибке JavaScript
- Фильтрация ограничений сэмплера на текстуры
- Расширенные эксперименты с подгруппами
- Улучшение опыта разработчиков
- Экспериментальная поддержка 16-битных нормализованных форматов текстур
- Обновления рассвета
Хром 131
- Расстояния клипов в WGSL
- GPUCanvasContext получитьКонфигурацию()
- Точечные и линейные примитивы не должны иметь смещения глубины.
- Встроенные функции сканирования для подгрупп
- Экспериментальная поддержка многоразового непрямого вывода
- Опция компиляции шейдерного модуля строгая математика
- Удалить GPUAdapter requestAdapterInfo()
- Обновления рассвета
Хром 130
- Смешивание двух источников
- Улучшение времени компиляции шейдеров на Metal
- Устаревание GPUAdapter requestAdapterInfo()
- Обновления рассвета
Хром 129
- Поддержка HDR с режимом тональной компрессии Canvas
- Расширенная поддержка подгрупп
- Обновления рассвета
Хром 128
- Эксперименты с подгруппами
- Отменить настройку смещения глубины для линий и точек
- Скрыть предупреждение DevTools об неперехваченной ошибке, если preventDefault
- WGSL сначала интерполирует выборку и либо
- Обновления рассвета
Хром 127
- Экспериментальная поддержка OpenGL ES на Android
- Атрибут информации GPUAdapter
- Улучшения взаимодействия WebAssembly
- Улучшены ошибки кодировщика команд
- Обновления рассвета
Хром 126
- Увеличить лимит maxTextureArrayLayers
- Оптимизация загрузки буфера для бэкэнда Vulkan
- Улучшения времени компиляции шейдера
- Отправленные буферы команд должны быть уникальными.
- Обновления рассвета
Хром 125
Хром 124
- Текстуры хранения данных, доступные только для чтения и для чтения и записи
- Поддержка работников сферы услуг и коллективных работников
- Новые атрибуты информации об адаптере
- Исправления ошибок
- Обновления рассвета
Хром 123
- Поддержка встроенных функций DP4a в WGSL
- Неограниченные параметры указателя в WGSL
- Синтаксический сахар для разыменования композитов в WGSL
- Отдельное состояние «только для чтения» для аспектов трафарета и глубины
- Обновления рассвета
Хром 122
- Расширьте охват с помощью режима совместимости (функция в разработке)
- Увеличить лимит maxVertexAttributes
- Обновления рассвета
Хром 121
- Поддержка WebGPU на Android
- Используйте DXC вместо FXC для компиляции шейдеров в Windows
- Запросы временных меток в проходах вычислений и рендеринга
- Точки входа по умолчанию в шейдерные модули
- Поддержка display-p3 как цветового пространства GPUExternalTexture
- Информация о кучах памяти
- Обновления рассвета
Хром 120
- Поддержка 16-битных значений с плавающей точкой в WGSL
- Раздвиньте границы
- Изменения в состоянии трафарета глубины
- Обновления информации об адаптере
- Квантование запросов временных меток
- Особенности генеральной уборки
Хром 119
- Фильтруемые 32-битные плавающие текстуры
- формат вершин unorm10-10-10-2
- формат текстуры rgb10a2uint
- Обновления рассвета
Хром 118
- Поддержка HTMLImageElement и ImageData в
copyExternalImageToTexture()
- Экспериментальная поддержка текстур хранения данных для чтения и записи и только для чтения
- Обновления рассвета
Хром 117
- Сбросить буфер вершин
- Отменить привязку группы
- Ошибки тишины при создании асинхронного конвейера при потере устройства
- Обновления создания шейдерного модуля SPIR-V
- Улучшение опыта разработчиков
- Кэширование конвейеров с автоматически сгенерированной компоновкой
- Обновления рассвета
Хром 116
- Интеграция WebCodecs
- Потерянное устройство, возвращенное GPUAdapter
requestDevice()
- Сохраняйте плавность воспроизведения видео, если вызывается
importExternalTexture()
- Соответствие спецификации
- Улучшение опыта разработчиков
- Обновления рассвета
Хром 115
- Поддерживаемые расширения языка WGSL
- Экспериментальная поддержка Direct3D 11
- Получите дискретный графический процессор по умолчанию при питании от сети переменного тока
- Улучшение опыта разработчиков
- Обновления рассвета
Хром 114
- Оптимизировать JavaScript
- getCurrentTexture() на ненастроенном холсте выдает InvalidStateError
- Обновления WGSL
- Обновления рассвета