게시일: 2025년 3월 26일
null 바인드 그룹 레이아웃으로 파이프라인 레이아웃 만들기 허용
이전에는 빈 바인드 그룹 레이아웃을 만들려면 바인딩이 0인 바인드 그룹을 추가해야 했는데 이는 불편했습니다. 이제 파이프라인 레이아웃을 만들 때 null 바인딩 그룹 레이아웃이 허용되고 무시되므로 더 이상 필요하지 않습니다. 이렇게 하면 개발이 더 쉬워집니다.
예를 들어 바인드 그룹 레이아웃 0과 2만 사용하는 파이프라인을 만들 수 있습니다. 바인딩 그룹 레이아웃 1을 프래그먼트 데이터에 할당하고 바인딩 그룹 레이아웃 2를 정점 데이터에 할당한 다음 프래그먼트 셰이더 없이 렌더링할 수 있습니다. 문제 377836524를 참고하세요.
const bgl0 = myDevice.createBindGroupLayout({ entries: myGlobalEntries });
const bgl1 = myDevice.createBindGroupLayout({ entries: myFragmentEntries });
const bgl2 = myDevice.createBindGroupLayout({ entries: myVertexEntries });
// Create a pipeline layout that will be used to render without a fragment shader.
const myPipelineLayout = myDevice.createPipelineLayout({
bindGroupLayouts: [bgl0, null, bgl2],
});
뷰포트가 렌더링 타겟 경계를 넘어 확장되도록 허용
뷰포트가 렌더링 타겟 경계를 벗어날 수 있도록 뷰포트 유효성 검사 요구사항이 완화되었습니다. 이는 현재 표시 영역 외부로 확장될 수 있는 UI와 같은 2D 요소를 그릴 때 특히 유용합니다. 문제 390162929를 참고하세요.
const passEncoder = myCommandEncoder.beginRenderPass({
colorAttachments: [
{
view: myColorTexture.createView(),
loadOp: "clear",
storeOp: "store",
},
],
});
// Set a viewport that extends past the render target's bounds by 8 pixels
// in all directions.
passEncoder.setViewport(
/*x=*/ -8,
/*y=*/ -8,
/*width=*/ myColorTexture.width + 16,
/*height=*/ myColorTexture.height + 16,
/*minDepth=*/ 0,
/*maxDepth=*/ 1,
);
// Draw geometry and complete the render pass as usual.
Android에서 실험용 호환성 모드에 더 쉽게 액세스
이제 chrome://flags/#enable-unsafe-webgpu
플래그만으로 Android의 실험용 WebGPU 호환성 모드에 필요한 모든 기능을 사용 설정할 수 있습니다. 이를 통해 featureLevel: "compatibility"
옵션을 사용하여 호환성 모드에서 GPUAdapter를 요청하고 Vulkan을 지원하지 않는 기기에서 OpenGL ES 백엔드에 액세스할 수도 있습니다. 다음 예와 문제 dawn:389876644를 참고하세요.
// Request a GPUAdapter in compatibility mode.
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });

maxInterStageShaderComponents 제한 삭제
이전에 공지된 바와 같이 maxInterStageShaderComponents 한도는 다음과 같은 여러 요인으로 인해 삭제되었습니다.
maxInterStageShaderVariables
중복: 이 한도는 이미 셰이더 단계 간에 전달되는 데이터의 양을 제어하는 유사한 목적으로 사용됩니다.- 경미한 불일치: 두 한도의 계산 방법에는 약간의 차이가 있지만 이러한 차이는 미미하며
maxInterStageShaderVariables
한도 내에서 효과적으로 관리할 수 있습니다. - 간소화:
maxInterStageShaderComponents
를 삭제하면 셰이더 인터페이스가 간소화되고 개발자의 복잡성이 줄어듭니다. 미묘한 차이가 있는 두 가지 한도를 별도로 관리하는 대신 더 적절한 이름을 지정하고 포괄적인maxInterStageShaderVariables
에 집중할 수 있습니다.
삭제 인텐트 및 문제 364338810을 참고하세요.
Dawn 업데이트
더 이상 필터링 샘플러를 사용하여 깊이 텍스처를 샘플링할 수 없습니다. 참고로 깊이 텍스처는 필터링되지 않거나 비교 샘플러와 함께만 사용할 수 있습니다. 문제 379788112를 참고하세요.
WGPURequiredLimits
및 WGPUSupportedLimits
구조가 WGPULimits
로 평면화되었습니다. 문제 374263404를 참고하세요.
다음 구조체의 이름이 변경되었습니다. 문제 42240793을 참고하세요.
WGPUImageCopyBuffer
는 이제WGPUTexelCopyBufferInfo
입니다.WGPUImageCopyTexture
는 이제WGPUTexelCopyTextureInfo
입니다.WGPUTextureDataLayout
는 이제WGPUTexelCopyBufferLayout
입니다.
subgroupMinSize
및 subgroupMaxSize
멤버가 WGPUAdapterInfo
구조체에 추가되었습니다. webgpu-headers PR을 참고하세요.
이제 DAWN_TRACE_FILE_BASE
환경 변수를 사용하여 프로그램을 실행할 때 Metal에서 Dawn API 사용을 추적할 수 있습니다. 이 환경 변수는 나중에 XCode의 Metal 디버거에 로드할 수 있는 .gputrace 파일을 저장합니다. Dawn 디버깅 문서를 참고하세요.
여기에는 주요 내용 중 일부만 다룹니다. 전체 커밋 목록을 확인하세요.
WebGPU의 새로운 기능
WebGPU의 새로운 기능 시리즈에서 다룬 모든 항목의 목록입니다.
Chrome 135
- null 바인드 그룹 레이아웃으로 파이프라인 레이아웃 만들기 허용
- 뷰포트가 렌더링 타겟 경계를 넘어 확장되도록 허용
- Android에서 실험용 호환성 모드에 더 쉽게 액세스
- maxInterStageShaderComponents 제한 삭제
- Dawn 업데이트
Chrome 134
Chrome 133
- 추가 unorm8x4-bgra 및 1개 구성요소 정점 형식
- 정의되지 않은 값으로 알 수 없는 한도를 요청할 수 있도록 허용
- WGSL 정렬 규칙 변경사항
- 삭제로 WGSL 성능 향상
- 외부 텍스처에 VideoFrame displaySize 사용하기
- copyExternalImageToTexture를 사용하여 기본이 아닌 방향의 이미지 처리
- 개발자 환경 개선
- featureLevel을 사용하여 호환성 모드 사용 설정
- 실험용 하위 그룹 기능 정리
- maxInterStageShaderComponents 한도 지원 중단
- Dawn 업데이트
Chrome 132
- 텍스처 뷰 사용량
- 32비트 부동 소수점 텍스처 혼합
- GPUDevice adapterInfo 속성
- 잘못된 형식으로 캔버스 컨텍스트를 구성하면 JavaScript 오류가 발생함
- 텍스처에 대한 샘플러 필터링 제한사항
- 확장된 하위 그룹 실험
- 개발자 환경 개선
- 16비트 정규화된 텍스처 형식의 실험적 지원
- Dawn 업데이트
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 업데이트