พื้นผิวแบบจำนวนลอยตัว 32 บิตที่กรองได้
พื้นผิวแบบทศนิยม 32 บิตใช้เพื่อจัดเก็บข้อมูลที่แม่นยำสูง เช่น รูปภาพ HDR และแผนที่ความลึก ซึ่งมีความสำคัญอย่างยิ่งสำหรับ GPU ที่ใช้เล่นเกมระดับสูงและแอปพลิเคชันระดับมืออาชีพ
การรองรับพื้นผิวแบบลอยตัว 32 บิตที่กรองได้อธิบายถึงความสามารถของ GPU ในการกรองพื้นผิวแบบจุดลอยตัว 32 บิต ซึ่งหมายความว่า GPU สามารถปรับขอบของพื้นผิวแบบทศนิยมให้เรียบเนียนขึ้น ทำให้พื้นผิวดูไม่ขรุขระ ซึ่งคล้ายกับส่วนขยาย "OES_texture_float_linear" ใน WebGL
GPU บางรุ่นไม่รองรับพื้นผิวแบบ Float 32 บิตที่กรองได้ เมื่อฟีเจอร์ "float32-filterable"
พร้อมใช้งานใน GPUAdapter
แล้ว คุณจะขอ GPUDevice
ที่มีฟีเจอร์นี้และกรองพื้นผิวด้วยรูปแบบ "r32float", "rg32float" และ "rgba32float" ได้ ดูตัวอย่างต่อไปนี้และ issue 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
เราได้เพิ่มรูปแบบเวิร์กเท็กซ์ใหม่ที่เรียกว่า "unorm10-10-10-2" หรือ "rgb10a2" ลงในข้อกำหนด WebGPU โดยประกอบด้วยค่า 32 บิตที่แพ็ก 1 ค่าที่มีค่าจำนวนเต็มแบบไม่ลงนามที่ปรับมาตรฐานแล้ว 4 ค่า ซึ่งจัดเรียงเป็น 10 บิต, 10 บิต, 10 บิต และ 2 บิต ดูตัวอย่างต่อไปนี้และ issue 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
เราได้เพิ่มรูปแบบพื้นผิวใหม่ที่เรียกว่า "rgb10a2uint" ลงในข้อกำหนด WebGPU ประกอบด้วยรูปแบบพิกเซลแบบแพ็ก 32 บิตที่มีองค์ประกอบจำนวนเต็มแบบไม่ลงนาม 4 รายการ ได้แก่ สีแดง 10 บิต สีเขียว 10 บิต สีน้ำเงิน 10 บิต และแอลฟา 2 บิต ดูตัวอย่างต่อไปนี้และ issue 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....
การอัปเดต Dawn
การค้นหาการประทับเวลาช่วยให้แอปพลิเคชัน WebGPU วัดเวลาที่ใช้โดยคำสั่ง GPU ในการเรียกใช้ได้อย่างแม่นยำ (ลงไปจนถึงนาโนวินาที) รูปแบบ API ในการบันทึกการค้นหาการประทับเวลาในช่วงเริ่มต้นและสิ้นสุดของพาสได้รับการอัปเดตให้ตรงกับข้อกำหนดของ WebGPU แล้ว ดูตัวอย่างต่อไปนี้และ issue 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
Chrome 131
- ตัดระยะทางใน WGSL
- GPUCanvasContext getConfiguration()
- องค์ประกอบพื้นฐานของจุดและเส้นต้องไม่มีอคติด้านความลึก
- ฟังก์ชันการสแกนแบบรวมในตัวสำหรับกลุ่มย่อย
- การรองรับการดึงข้อมูลแบบหลายดึงข้อมูลโดยอ้อมในขั้นทดลอง
- ตัวเลือกการคอมไพล์โมดูล Shader เป็นแบบคณิตศาสตร์ที่เข้มงวด
- นํา GPUAdapter requestAdapterInfo() ออก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 130
- การผสมผสานแหล่งที่มาแบบคู่
- การปรับปรุงเวลาคอมไพล์ Shader ใน Metal
- การเลิกใช้งาน requestAdapterInfo() ของ GPUAdapter
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 129
- การรองรับ HDR ด้วยโหมดการปรับโทนสีของ Canvas
- การรองรับกลุ่มย่อยที่เพิ่มขึ้น
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 128
- การทดสอบกลุ่มย่อย
- เลิกใช้งานการตั้งค่าความเอียงของภาพสำหรับเส้นและจุด
- ซ่อนคำเตือนข้อผิดพลาดของเครื่องมือสำหรับนักพัฒนาเว็บที่ตรวจไม่พบหาก preventDefault
- WGSL จะปัดเศษการสุ่มตัวอย่างก่อน แล้วทำอย่างใดอย่างหนึ่งต่อไปนี้
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 127
- การรองรับ OpenGL ES ใน Android แบบทดลอง
- แอตทริบิวต์ข้อมูล GPUAdapter
- การปรับปรุงความสามารถในการทำงานร่วมกันของ WebAssembly
- ปรับปรุงข้อผิดพลาดเกี่ยวกับโปรแกรมเข้ารหัสคำสั่ง
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 126
- เพิ่มขีดจํากัด maxTextureArrayLayers
- การเพิ่มประสิทธิภาพการอัปโหลดบัฟเฟอร์สําหรับแบ็กเอนด์ Vulkan
- การปรับปรุงเวลาคอมไพล์ Shader
- บัฟเฟอร์คำสั่งที่ส่งต้องไม่ซ้ำกัน
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 125
Chrome 124
- พื้นผิวพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวและแบบอ่านและเขียน
- การรองรับ Service Worker และ Shared Worker
- แอตทริบิวต์ข้อมูลอะแดปเตอร์ใหม่
- แก้ไขข้อบกพร่อง
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 123
- การรองรับฟังก์ชันในตัวของ DP4a ใน WGSL
- พารามิเตอร์พอยน์เตอร์ที่ไม่จํากัดใน WGSL
- Syntax sugar สำหรับการนำคอมโพสิทมาอ้างอิงใน WGSL
- แยกสถานะอ่านอย่างเดียวสำหรับแสตนซิลและมิติความลึก
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 122
- ขยายการเข้าถึงด้วยโหมดความเข้ากันได้ (ฟีเจอร์ที่อยู่ระหว่างการพัฒนา)
- เพิ่มขีดจํากัด maxVertexAttributes
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 121
- รองรับ WebGPU ใน Android
- ใช้ DXC แทน FXC สำหรับการคอมไพล์ shader ใน Windows
- การค้นหาการประทับเวลาในการคำนวณและผ่านการแสดงผล
- จุดแรกเข้าเริ่มต้นไปยังโมดูล Shader
- รองรับ display-p3 เป็นพื้นที่สี GPUExternalTexture
- ข้อมูลกองหน่วยความจำ
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 120
- การรองรับค่าทศนิยม 16 บิตใน WGSL
- ก้าวข้ามขีดจำกัด
- การเปลี่ยนแปลงสถานะความลึกของสเตนซิล
- การอัปเดตข้อมูลอะแดปเตอร์
- การแปลงค่าการค้นหาการประทับเวลา
- ฟีเจอร์ทำความสะอาดช่วงฤดูใบไม้ผลิ
Chrome 119
- พื้นผิวแบบจำนวนลอยตัว 32 บิตที่กรองได้
- รูปแบบเวิร์กเท็กซ์ unorm10-10-10-2
- รูปแบบพื้นผิว rgb10a2uint
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 118
- การรองรับ HTMLImageElement และ ImageData ใน
copyExternalImageToTexture()
- การรองรับแบบทดลองสำหรับพื้นผิวพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียวและอ่าน/เขียน
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 117
- ยกเลิกการตั้งค่าบัฟเฟอร์เวิร์กเทกซ์
- ยกเลิกการตั้งค่ากลุ่มการเชื่อมโยง
- ซ่อนข้อผิดพลาดจากการสร้างไปป์ไลน์แบบแอซิงค์เมื่ออุปกรณ์สูญหาย
- การอัปเดตการสร้างโมดูล Shader ของ SPIR-V
- การปรับปรุงประสบการณ์การใช้งานของนักพัฒนาแอป
- การแคชไปป์ไลน์ที่มีเลย์เอาต์ที่สร้างขึ้นโดยอัตโนมัติ
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 116
- การผสานรวม WebCodecs
- อุปกรณ์ที่สูญหายที่ GPUAdapter
requestDevice()
แสดง - ทำให้การเล่นวิดีโอราบรื่นหากมีการเรียกใช้
importExternalTexture()
- การปฏิบัติตามข้อกำหนด
- การปรับปรุงประสบการณ์การใช้งานของนักพัฒนาแอป
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 115
- ส่วนขยายภาษา WGSL ที่รองรับ
- การรองรับ Direct3D 11 แบบทดลอง
- ใช้ GPU แบบแยกต่างหากโดยค่าเริ่มต้นเมื่อใช้แหล่งจ่ายไฟ AC
- การปรับปรุงประสบการณ์การใช้งานของนักพัฒนาแอป
- ข้อมูลอัปเดตเกี่ยวกับ Dawn
Chrome 114
- เพิ่มประสิทธิภาพ JavaScript
- getCurrentTexture() ใน Canvas ที่ไม่ได้กําหนดค่าจะแสดงข้อผิดพลาด InvalidStateError
- ข้อมูลอัปเดตเกี่ยวกับ WGSL
- ข้อมูลอัปเดตเกี่ยวกับ Dawn