Filtrowane 32-bitowe tekstury typu float
32-bitowe tekstury z liczbami zmiennoprzecinkowymi są używane do przechowywania danych o wysokiej precyzji, takich jak obrazy HDR i mapy głębi. Są one szczególnie ważne w przypadku procesorów graficznych używanych w zaawansowanych grach i profesjonalnych aplikacjach.
Obsługa 32-bitowych tekstur z możliwością filtrowania określa zdolność GPU do filtrowania 32-bitowych tekstur z liczbami zmiennoprzecinkowymi. Oznacza to, że GPU może wygładzić krawędzie tekstur zmiennoprzecinkowych, dzięki czemu będą one wyglądać mniej kanciasto. Jest to podobne do rozszerzenia „OES_texture_float_linear” w WebGL.
Nie wszystkie karty graficzne obsługują 32-bitowe tekstury typu float, które można filtrować. Gdy funkcja "float32-filterable"
jest dostępna w GPUAdapter
, możesz teraz zażądać GPUDevice
z tą funkcją i filtrować tekstury w formatach „r32float”, „rg32float” i „rgba32float”. Zapoznaj się z tym przykładem i problemem 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....
Format wierzchołka unorm10-10-10-2
Do specyfikacji WebGPU dodano nowy format wierzchołka o nazwie „unorm10-10-10-2”, czyli „rgb10a2”. Składa się z jednej zapakowanej wartości 32-bitowej z 4 znormalizowanymi wartościami bez znaku, uporządkowanymi w postaci 10 bitów, 10 bitów, 10 bitów i 2 bitów. Zobacz poniższy przykład i problem 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.
Format tekstury rgb10a2uint
Do specyfikacji WebGPU dodaliśmy nowy format tekstury o nazwie „rgb10a2uint”. Składa się z 32-bitowego skompresowanego formatu pikseli z 4 niepodpisanymi liczbami całkowitymi: 10-bitowym czerwonym, 10-bitowym zielonym, 10-bitowym niebieskim i 2-bitowym alfa. Zobacz poniższy przykład i problem 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....
Aktualizacje o świcie
Zapytania dotyczące sygnatury czasowej pozwalają aplikacjom WebGPU dokładnie mierzyć (do nanosekundy) czas wykonywania poleceń GPU. Interfejs API do przechwytywania zapytań z datą i godziną na początku i na końcu przejść zostało zaktualizowane zgodnie ze specyfikacją WebGPU. Zobacz poniższy przykład i problem 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);
To tylko niektóre z najważniejszych informacji. Zapoznaj się z pełną listą commitów.
Co nowego w WebGPU
Lista wszystkich tematów omawianych w cyklu Co nowego w WebGPU.
Chrome 131
- Odległości klipów w WGSL
- GPUCanvasContext getConfiguration()
- Punkty i linie nie mogą mieć ustawienia głębi
- Funkcje wbudowane w skanowanie z uwzględnieniem wszystkich grup
- Dodanie eksperymentalnej obsługi pośredniego rysowania wielokrotnego
- Opcja kompilacji modułu shadera: ścisłe obliczenia matematyczne
- Usuwanie metody requestAdapterInfo() klasy GPUAdapter
- Informacje o świcie
Chrome 130
- Mieszanie dwóch źródeł
- Skrócony czas kompilowania shadera w metalu
- Wycofanie interfejsu GPUAdapter requestAdapterInfo()
- Aktualizacje dotyczące Dawn
Chrome 129
Chrome 128
- Eksperymentowanie z podgrupami
- Wycofywanie odchylenia ustawień głębi w przypadku linii i punktów
- Ukrywanie ostrzeżenia DevTools o nieuwzględnionym błędzie, jeśli wywołano funkcję preventDefault
- WGSL interpoluje próbkowanie najpierw i potem
- Aktualizacje dotyczące Dawn
Chrome 127
- Doświadczalna obsługa OpenGL ES na Androidzie
- Atrybut informacji o karcie GPU
- Ulepszenia interoperacyjności WebAssembly
- Poprawione błędy kodera poleceń
- Informacje o świcie
Chrome 126
- Zwiększanie limitu maxTextureSlateWarstwy
- Optymalizacja przesyłania buforów w backendzie Vulkan
- Ulepszenia dotyczące czasu kompilacji shaderów
- Przesłane bufory poleceń muszą być unikalne
- Aktualizacje dotyczące Dawn
Chrome 125
- Podgrupy (funkcja w trakcie opracowywania)
- Renderowanie na potrzeby wycinka tekstury 3D
- Aktualizacje dotyczące Dawn
Chrome 124
- Tekstury tylko do odczytu i do odczytu i zapisu
- Obsługa pracowników usług i pracowników wspólnych
- Nowe atrybuty informacji o adapterze
- Poprawki błędów
- Aktualizacje dotyczące Dawn
Chrome 123
- Obsługa wbudowanych funkcji DP4a w WGSL
- Parametry wskaźnika bez ograniczeń w WGSL
- Składnia cukrowa do odwoływania się do elementów złożonych w WGSL
- Oddzielny stan tylko do odczytu w przypadku elementów związanych z szablonem i głębią
- Aktualizacje dotyczące Dawn
Chrome 122
- Zwiększenie zasięgu dzięki trybowi zgodności (funkcja w trakcie tworzenia)
- Zwiększenie limitu maxVertexAttributes
- Aktualizacje dotyczące Dawn
Chrome 121
- Obsługa WebGPU na Androidzie
- Używanie DXC zamiast FXC do kompilowania shaderów w systemie Windows
- Zapytania o sygnatury czasowe w przelotach obliczeniowych i renderowania
- Domyślne punkty wejścia do modułów shaderów
- Obsługa przestrzeni barw display-p3 jako przestrzeni barw GPUExternalTexture
- Informacje o kupach pamięci
- Aktualizacje dotyczące Dawn
Chrome 120
- Obsługa 16-bitowych wartości zmiennoprzecinkowych w WGSL
- Przekraczanie limitów
- Zmiany stanu głębi cieniowania
- Aktualizacje informacji o adapterze
- Kwantyzacja zapytań dotyczących sygnatury czasowej
- Funkcje sprzątania wiosenną
Chrome 119
- Filtrowane tekstury 32-bitowe zmiennoprzecinkowe
- format wierzchołkowy unorm10-10-10-2
- Format tekstury rgb10a2uint
- Aktualizacje dotyczące Dawn
Chrome 118
- Obsługa HTMLImageElement i ImageData w
copyExternalImageToTexture()
- Eksperymentalna obsługa tekstury pamięci do odczytu i zapisu oraz tylko do odczytu
- Aktualizacje dotyczące Dawn
Chrome 117
- Bufor wierzchołka nieustawiony
- Cofnij grupę wiązania
- Wyciszaj błędy tworzenia potoku asynchronicznego w przypadku utraty urządzenia
- Aktualizacje dotyczące tworzenia modułów shaderów SPIR-V
- Ułatwienie pracy programistom
- Potoki pamięci podręcznej z układem generowanym automatycznie
- Aktualizacje dotyczące Dawn
Chrome 116
- Integracja z WebCodecs
- Utracone urządzenie zwrócone przez GPUAdapter
requestDevice()
- Utrzymanie płynnego odtwarzania filmu, jeśli wywołana zostanie funkcja
importExternalTexture()
- Zgodność ze specyfikacją
- Polepszanie wrażeń programistów
- Informacje o świcie
Chrome 115
- Obsługiwane rozszerzenia językowe WGSL
- Wstępna obsługa Direct3D 11
- Uzyskaj oddzielny procesor graficzny domyślnie na zasilaniu z sieci
- Ułatwienie pracy programistom
- Informacje o świcie
Chrome 114
- Optymalizacja kodu JavaScript
- Funkcja getCurrentTexture() w nieskonfigurowanym obszarze roboczym powoduje zgłoszenie nieprawidłowego stanu błędu
- Aktualizacje WGSL
- Aktualizacje dotyczące Dawn