읽기 전용 및 읽기-쓰기 저장소 텍스처
저장소 텍스처 결합 유형을 사용하면 셰이더가 TEXTURE_BINDING
사용을 추가하지 않고도 저장소 텍스처에서 읽고 특정 형식에 혼합 읽기 및 쓰기를 실행할 수 있습니다. navigator.gpu.wgslLanguageFeatures
에 "readonly_and_readwrite_storage_textures"
WGSL 언어 확장 프로그램이 있는 경우 이제 바인드 그룹 레이아웃을 만들 때 GPUStorageTexture
액세스를 "read-write"
또는 "read-only"
로 설정할 수 있습니다. 이전에는 "write-only"
로 제한되었습니다.
그러면 WGSL 셰이더 코드에서 저장소 텍스처에 read_write
및 read
액세스 한정자를 사용할 수 있고, textureLoad()
및 textureStore()
내장 함수가 그에 따라 동작하며, 새로운 textureBarrier()
내장 함수를 사용하여 작업 그룹의 텍스처 메모리 액세스를 동기화할 수 있습니다.
WGSL 셰이더 코드 상단에서 requires readonly_and_readwrite_storage_textures;
의 비이식 가능성을 알리려면 requires-directive를 사용하는 것이 좋습니다. 다음 예와 issue dawn:1972를 참고하세요.
if (!navigator.gpu.wgslLanguageFeatures.has("readonly_and_readwrite_storage_textures")) {
throw new Error("Read-only and read-write storage textures are not available");
}
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const bindGroupLayout = device.createBindGroupLayout({
entries: [{
binding: 0,
visibility: GPUShaderStage.COMPUTE,
storageTexture: {
access: "read-write", // <-- New!
format: "r32uint",
},
}],
});
const shaderModule = device.createShaderModule({ code: `
requires readonly_and_readwrite_storage_textures;
@group(0) @binding(0) var tex : texture_storage_2d<r32uint, read_write>;
@compute @workgroup_size(1, 1)
fn main(@builtin(local_invocation_id) local_id: vec3u) {
var data = textureLoad(tex, vec2i(local_id.xy));
data.x *= 2;
textureStore(tex, vec2i(local_id.xy), data);
}`
});
// You can now create a compute pipeline with this shader module and
// send the appropriate commands to the GPU.
서비스 워커 및 공유 워커 지원
Chrome의 WebGPU는 웹 작업자 지원을 한 단계 업그레이드하여 서비스 워커와 공유 작업자를 모두 지원합니다. 서비스 워커를 사용하여 백그라운드 작업과 오프라인 기능을 개선하고 공유 작업자를 사용하여 스크립트 간에 리소스를 효율적으로 공유할 수 있습니다. 문제 chromium:41494731을 참고하세요.
확장 프로그램 서비스 워커에서 WebGPU를 사용하는 방법을 알아보려면 Chrome 확장 프로그램 샘플 및 WebLLM Chrome 확장 프로그램을 확인하세요.
새 어댑터 정보 속성
사용자가 chrome://flags/#enable-webgpu-developer-features
에서 'WebGPU 개발자 기능' 플래그를 사용 설정한 경우 이제 requestAdapterInfo()
를 호출할 때 비표준 d3dShaderModel
및 vkDriverVersion
어댑터 정보 속성을 사용할 수 있습니다. 지원되는 경우:
d3dShaderModel
는 지원되는 최대 D3D 셰이더 모델 번호입니다. 예를 들어 값 62는 현재 드라이버가 HLSL SM 6.2를 지원함을 나타냅니다. 문서 및 issue dawn:1254를 참고하세요.vkDriverVersion
는 공급업체에서 지정한 Vulkan 드라이버의 버전 번호입니다. 문서 및 chromium:327457605 문제를 참고하세요.
버그 수정
layout: "auto"
를 사용하여 일치하는 바인드 그룹이 있는 두 개의 파이프라인을 만든 다음 첫 번째 파이프라인으로 바인드 그룹을 만들고 두 번째 파이프라인에서 이를 사용하면 이제 GPUValidationError가 발생합니다. 이를 허용하는 것은 구현 버그였으며 이제 적절한 테스트로 수정되었습니다. issue dawn:2402를 참고하세요.
Dawn 업데이트
Dawn API에서 wgpuDeviceSetUncapturedErrorCallback
로 설정된 캡처되지 않은 오류 콜백은 이제 GPU 기기가 손실된 후 호출되지 않습니다. 이 수정사항은 Dawn을 JavaScript API 사양 및 Blink 구현과 일치시킵니다. issue dawn:2459를 참고하세요.
여기에는 주요 내용 중 일부만 다룹니다. 전체 커밋 목록을 확인하세요.
WebGPU의 새로운 기능
WebGPU의 새로운 기능 시리즈에서 다룬 모든 항목의 목록입니다.
Chrome 131
- WGSL에서 거리 클립하기
- GPUCanvasContext getConfiguration()
- 점 및 선 원시에는 깊이 바이어스가 없어야 함
- 하위 그룹을 위한 포용 스캔 기본 제공 함수
- 다중 그리기 간접 광고 실험 지원
- 셰이더 모듈 컴파일 옵션 엄격한 수학
- GPUAdapter requestAdapterInfo() 삭제
- Dawn 업데이트
Chrome 130
Chrome 129
Chrome 128
- 하위 그룹 실험
- 선 및 점의 설정 깊이 바이어스 지원 중단
- preventDefault인 경우 포착되지 않은 오류 DevTools 경고 숨기기
- WGSL은 먼저 샘플링을 보간하고 다음 중 하나를 실행합니다.
- Dawn 업데이트
Chrome 127
Chrome 126
Chrome 125
Chrome 124
Chrome 123
- WGSL의 DP4a 내장 함수 지원
- WGSL의 제한되지 않은 포인터 매개변수
- WGSL에서 합성물 역참조를 위한 문법 슈가
- 스텐실 및 깊이 측면의 별도 읽기 전용 상태
- Dawn 업데이트
Chrome 122
Chrome 121
- Android에서 WebGPU 지원
- Windows에서 셰이더 컴파일에 FXC 대신 DXC 사용하기
- 컴퓨팅 및 렌더링 패스의 타임스탬프 쿼리
- 셰이더 모듈의 기본 진입점
- display-p3을 GPUExternalTexture 색상 공간으로 지원
- 메모리 힙 정보
- Dawn 업데이트
Chrome 120
Chrome 119
Chrome 118
copyExternalImageToTexture()
에서 HTMLImageElement 및 ImageData 지원- 읽기 쓰기 저장소 텍스처 및 읽기 전용 저장소 텍스처에 대한 실험적 지원
- Dawn 업데이트
Chrome 117
- 꼭짓점 버퍼 설정 해제
- 바인드 그룹 설정 해제
- 기기 연결이 끊겼을 때 비동기 파이프라인 생성 오류를 표시하지 않음
- SPIR-V 셰이더 모듈 만들기 업데이트
- 개발자 환경 개선
- 자동 생성된 레이아웃으로 파이프라인 캐싱
- Dawn 업데이트
Chrome 116
- WebCodecs 통합
- GPUAdapter
requestDevice()
에서 반환된 분실 기기 importExternalTexture()
가 호출될 때 동영상 재생을 원활하게 유지- 사양 준수
- 개발자 환경 개선
- Dawn 업데이트