WebGPU의 새로운 기능 (Chrome 140)

François Beaufort
François Beaufort

게시일: 2025년 8월 27일

기기 요청이 어댑터를 사용함

WebGPU 사양에 따르면 어댑터는 기기 요청이 성공하면 '사용됨'으로 표시됩니다. 따라서 동일한 어댑터를 사용하는 후속 requestDevice() 호출은 이제 거부된 프로미스를 반환합니다. 이전에는 이러한 호출이 생성 시 손실된 기기를 반환했습니다. 문제 415825174를 참고하세요.

const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();

await adapter.requestDevice(); // Fails because adapter has been consumed.

텍스처 뷰가 사용되는 곳에서 텍스처를 사용하는 약식

이제 GPUTextureGPUBindingResource로 직접 사용하여 바인딩을 위해 셰이더에 노출할 수 있습니다. 인체공학적 개선을 위해 GPURenderPassColorAttachment view, GPURenderPassColorAttachment resolveTarget, GPURenderPassDepthStencilAttachment view로도 사용할 수 있습니다. 이렇게 하면 GPUTextureView를 사용하여 기본 뷰를 가져오는 것보다 간단한 접근 방식을 사용할 수 있습니다. 문제 425906323을 참고하세요.

const bindGroup = myDevice.createBindGroup({
  layout: myPipeline.getBindGroupLayout(0),
  entries: [
    { binding: 0, resource: mySampler },
    { binding: 1, resource: myTexture }, // Same as myTexture.createView()
    { binding: 2, resource: myExternalTexture },
    { binding: 3, resource: myBuffer },
  ],
});

WGSL textureSampleLevel이 1D 텍스처 지원

이제 1D 텍스처를 textureSampleLevel()를 사용하여 샘플링할 수 있어 2D 텍스처와 일관성을 유지할 수 있습니다. 이를 통해 이전에는 textureSample()를 사용하는 프래그먼트 셰이더에서만 가능했던 꼭짓점 셰이더에서 1D 텍스처를 샘플링할 수 있습니다. 문제 382514673을 참고하세요.

bgra8unorm 읽기 전용 저장소 텍스처 사용 지원 중단

읽기 전용 스토리지 텍스처와 함께 "bgra8unorm" 형식을 사용하는 것은 이제 지원 중단됩니다. WebGPU 사양에서는 이를 명시적으로 허용하지 않으며 Chrome에서 이전에 허용된 것은 버그였습니다. 이 형식은 쓰기 전용 액세스를 위한 것이며 이식할 수 없기 때문입니다. 문제 427681156을 참고하세요.

GPUAdapter isFallbackAdapter 속성 삭제

이전에 공지한 대로 GPUAdapter isFallbackAdapter 속성이 삭제되었습니다. Chrome 136에서 도입된 GPUAdapterInfo isFallbackAdapter 속성으로 대체됩니다. 삭제 의도를 참고하세요.

새벽 업데이트

wgpuInstanceGetWGSLLanguageFeatures() 함수는 인스턴스에서 지원하는 WGSL 언어 기능 목록을 가져오는 데 사용됩니다. 이전에는 WGPUStatus 값을 반환했습니다. 실패할 수 없으므로 값을 반환하지 않도록 업데이트되었습니다. 문제 429178774를 참고하세요.

이제 wgpuSurfacePresent() 함수는 서페이스에 현재 텍스처가 없는 경우 WGPUStatus 오류를 반환합니다. 문제 425930323을 참고하세요.

새로운 wgpu::InstanceFeatureName::MultipleDevicesPerAdapter 기능을 사용하면 어댑터가 '소비'되지 않고 여러 기기를 만들 수 있습니다. 문제 415825174를 참고하세요.

dump_shaders_on_failure 기기 전환 버튼을 사용하면 디버깅 목적으로 실패 시에만 셰이더를 덤프할 수 있습니다. 이 기능은 D3 백엔드에만 적용되지만 향후 다른 백엔드로 확장될 수 있습니다. 문제 429187478을 참고하세요.

특히 모바일 GPU의 성능을 개선하기 위해 렌더링 패스를 제출할 때 오버헤드를 줄이도록 Vulkan 백엔드가 여러 번 변경되었습니다. 예: VkFramebuffers 캐싱

여기에서는 몇 가지 주요 사항만 다룹니다. 전체 커밋 목록을 확인하세요.

WebGPU의 새로운 기능

WebGPU의 새로운 기능 시리즈에서 다룬 모든 항목의 목록입니다.

Chrome 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

Chrome 131

Chrome 130

Chrome 129

Chrome 128

Chrome 127

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113