게시일: 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을 참고하세요.
새벽 업데이트
필터링 샘플러를 사용하여 깊이 텍스처를 샘플링할 수 없습니다. 깊이 텍스처는 필터링되지 않은 샘플러 또는 비교 샘플러에서만 사용할 수 있습니다. 문제 379788112를 참고하세요.
WGPURequiredLimits
및 WGPUSupportedLimits
구조가 WGPULimits
로 병합되었습니다. 문제 374263404를 참고하세요.
다음 구조체의 이름이 변경되었습니다. 문제 42240793을 참고하세요.
WGPUImageCopyBuffer
는 이제WGPUTexelCopyBufferInfo
입니다.WGPUImageCopyTexture
는 이제WGPUTexelCopyTextureInfo
입니다.WGPUTextureDataLayout
는 이제WGPUTexelCopyBufferLayout
입니다.
subgroupMinSize
및 subgroupMaxSize
멤버가 WGPUAdapterInfo
구조체에 추가되었습니다. webgpu-headers PR을 참고하세요.
이제 나중에 XCode의 Metal 디버거에 로드할 수 있는 .gputrace 파일을 저장하는 DAWN_TRACE_FILE_BASE
환경 변수로 프로그램을 실행할 때 Metal에서 Dawn API 사용량을 추적할 수 있습니다. Dawn 디버깅 문서를 참고하세요.
여기에서는 몇 가지 주요 사항만 다룹니다. 전체 커밋 목록을 확인하세요.
WebGPU의 새로운 기능
WebGPU의 새로운 기능 시리즈에서 다룬 모든 항목의 목록입니다.
Chrome 140
- 기기 요청이 어댑터를 사용함
- 텍스처 뷰가 사용되는 경우 텍스처를 사용하는 약어
- WGSL textureSampleLevel이 1D 텍스처 지원
- bgra8unorm 읽기 전용 저장소 텍스처 사용 지원 중단
- GPUAdapter isFallbackAdapter 속성 삭제
- 새벽 업데이트
Chrome 139
Chrome 138
- 버퍼를 바인딩 리소스로 사용하는 약식
- 생성 시 매핑된 버퍼의 크기 요구사항 변경
- 최근 GPU의 아키텍처 보고서
- GPUAdapter isFallbackAdapter 속성 지원 중단
- 새벽 업데이트
Chrome 137
- externalTexture 바인딩에 텍스처 뷰 사용
- 오프셋과 크기를 지정하지 않고 버퍼 복사
- 원자에 대한 포인터를 사용하는 WGSL workgroupUniformLoad
- GPUAdapterInfo powerPreference 속성
- GPURequestAdapterOptions compatibilityMode 속성 삭제
- 새벽 업데이트
Chrome 136
Chrome 135
- null 바인드 그룹 레이아웃으로 파이프라인 레이아웃 생성 허용
- 뷰포트가 렌더링 타겟 경계를 지나 확장되도록 허용
- Android에서 실험용 호환성 모드에 더 쉽게 액세스
- maxInterStageShaderComponents 한도 삭제
- 새벽 업데이트
Chrome 134
Chrome 133
- 추가 unorm8x4-bgra 및 1컴포넌트 꼭짓점 형식
- 정의되지 않은 값으로 알 수 없는 한도를 요청하도록 허용
- WGSL 정렬 규칙 변경사항
- discard를 사용한 WGSL 성능 향상
- 외부 텍스처에 VideoFrame displaySize 사용
- copyExternalImageToTexture를 사용하여 기본이 아닌 방향의 이미지 처리
- 개발자 환경 개선
- featureLevel로 호환성 모드 사용 설정
- 실험용 하위 그룹 기능 정리
- maxInterStageShaderComponents 한도 지원 중단
- 새벽 업데이트
Chrome 132
- 텍스처 뷰 사용량
- 32비트 부동 소수점 텍스처 혼합
- GPUDevice adapterInfo 속성
- 잘못된 형식으로 캔버스 컨텍스트를 구성하면 JavaScript 오류가 발생함
- 텍스처의 샘플러 제한 필터링
- 확장된 하위 그룹 실험
- 개발자 환경 개선
- 16비트 정규화된 텍스처 형식 실험적 지원
- 새벽 업데이트
Chrome 131
- WGSL에서 거리 클리핑
- GPUCanvasContext getConfiguration()
- 점 및 선 기본 요소에는 깊이 바이어스가 없어야 합니다
- 하위 그룹의 포괄적 검색 기본 제공 함수
- multi-draw indirect 실험적 지원
- 셰이더 모듈 컴파일 옵션 strict math
- GPUAdapter requestAdapterInfo() 삭제
- 새벽 업데이트
Chrome 130
Chrome 129
Chrome 128
- 하위 그룹 실험
- 선과 점의 깊이 편향 설정 지원 중단
- preventDefault인 경우 포착되지 않은 오류 DevTools 경고 숨기기
- WGSL 보간 샘플링이 먼저 실행되고 다음 중 하나가 실행됩니다.
- 새벽 업데이트
Chrome 127
Chrome 126
Chrome 125
Chrome 124
Chrome 123
Chrome 122
Chrome 121
- Android에서 WebGPU 지원
- Windows에서 셰이더 컴파일에 FXC 대신 DXC 사용
- 컴퓨팅 및 렌더링 패스의 타임스탬프 쿼리
- 셰이더 모듈의 기본 진입점
- GPUExternalTexture 색상 공간으로 display-p3 지원
- 메모리 힙 정보
- 새벽 업데이트
Chrome 120
Chrome 119
Chrome 118
Chrome 117
- 꼭짓점 버퍼 설정 해제
- 바인드 그룹 설정 해제
- 기기가 손실된 경우 비동기 파이프라인 생성에서 오류 무시
- SPIR-V 셰이더 모듈 생성 업데이트
- 개발자 환경 개선
- 자동으로 생성된 레이아웃으로 파이프라인 캐싱
- 새벽 업데이트
Chrome 116
- WebCodecs 통합
- GPUAdapter
requestDevice()
에서 반환된 손실된 기기 importExternalTexture()
이 호출되는 경우 동영상 재생을 원활하게 유지- 사양 준수
- 개발자 환경 개선
- 새벽 업데이트