게시일: 2025년 10월 22일
텍스처 형식 지원 기능 확장
새로운 'texture-formats-tier1' GPU 기능을 사용하면 개발자가 WebGPU의 낮은 기능에 맞게 다시 작성하지 않고도 기존 콘텐츠를 웹으로 포팅할 수 있습니다. 렌더링 첨부 파일, 혼합 가능, 멀티샘플링 기능, "read-only"
또는 "write-only"
저장소 텍스처 액세스를 지원하는 새로운 "r16unorm"
, "r16snorm"
, "rg16unorm"
, "rg16snorm"
, "rgba16unorm"
, "rgba16snorm"
텍스처 형식을 지원합니다. 렌더링 첨부 파일, 혼합 가능, 멀티샘플링 및 해결 기능이 있는 기존 "r8snorm"
, "rg8snorm"
, "rgba8snorm"
텍스처 형식도 허용합니다. "read-only"
또는 "write-only"
저장소 텍스처 액세스를 사용하면 더 많은 텍스처 형식을 사용할 수도 있습니다.
새로운 'texture-formats-tier2' GPU 기능을 사용하면 특정 형식의 "read-write"
저장소 텍스처 액세스가 가능해지며, 이는 Unreal Engine을 웹으로 포팅하는 등의 프로젝트에 중요합니다. 기기 생성 시 "texture-formats-tier2"
를 사용 설정하면 "texture-formats-tier1"
이 자동으로 사용 설정됩니다.
다음 스니펫과 chromestatus 항목을 참고하세요.
const adapter = await navigator.gpu.requestAdapter();
const requiredFeatures = [];
if (adapter.features.has("texture-format-tier1")) {
requiredFeatures.push("texture-format-tier1");
}
if (adapter.features.has("texture-format-tier2")) {
requiredFeatures.push("texture-format-tier2");
}
const device = await adapter.requestDevice({ requiredFeatures });
// Later on, when dealing with "r8unorm" texture formats for example...
if (device.features.has("texture-format-tier2")) {
// Use "read-write" storage texture access...
} else if (device.features.has("texture-format-tier1")) {
// Use "read-only" or "write-only" storage texture access...
} else {
// Fallback: Use another texture format...
}
작업을 진행해 주신 Intel 관계자 여러분께 진심으로 감사드립니다.
WGSL의 기본 요소 색인
primitive_index
는 프래그먼트 셰이더에서 처리 중인 현재 기본 요소 (예: 점, 선, 삼각형)를 고유하게 식별하는 내장 WGSL 값입니다. 0에서 시작하여 각 기본 요소가 처리된 후 1씩 증가하고 그려진 각 인스턴스 사이에서 0으로 재설정됩니다.
"primitive-index"
기능을 GPUAdapter에서 사용할 수 있는 경우 이 기능이 있는 GPUDevice를 요청하여 WGSL에서 기본 인덱스 지원을 받고 enable primitive_index;
를 사용하여 WGSL 코드에서 이 확장 프로그램을 명시적으로 사용 설정합니다. 사용 설정되면 프래그먼트 셰이더에서 primitive_index
내장 정수 값을 사용하여 기본 요소별 데이터에 액세스하거나 렌더링되는 각 개별 기하학적 모양에 따라 달라지는 로직을 실행합니다.
다음 코드 스니펫은 두 번째 기본 요소를 빨간색으로, 다른 모든 기본 요소를 파란색으로 렌더링하는 프래그먼트 셰이더를 보여줍니다.
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("primitive-index")) {
throw new Error("Primitive index support is not available");
}
// Explicitly request primitive index support.
const device = await adapter.requestDevice({
requiredFeatures: ["primitive-index"],
});
const fragmentShaderModule = device.createShaderModule({ code: `
enable primitive_index;
@fragment
fn main(@builtin(primitive_index) i : u32) -> @location(0) vec4f {
if (i == 1) {
return vec4f(1, 0, 0, 1);
}
return vec4f(0, 1, 0, 1);
}`,
});
// Send the appropriate commands to the GPU...
기본 요소 선택 샘플을 확인하여 자세히 알아보고 chromestatus 항목을 참고하세요.

Dawn 업데이트
빌드할 모놀리식 라이브러리 유형을 처리하는 데 사용되는 DAWN_BUILD_MONOLITHIC_LIBRARY
CMake 변수의 기본값이 OFF
에서 STATIC
로 변경되어 기본적으로 libwebgpu*
파일이 생성됩니다.
이제 Dawn은 wgpu::Surface
을 구성할 때 wgpu::PresentMode::Undefined
기본값을 올바르게 처리합니다. 문제 441410668을 참고하세요.
여기에서는 주요 사항 중 일부만 다룹니다. 전체 커밋 목록을 확인하세요.
WebGPU의 새로운 기능
WebGPU의 새로운 기능 시리즈에서 다룬 모든 내용의 목록입니다.
Chrome 142
Chrome 141
Chrome 140
- 기기 요청이 어댑터를 사용함
- 텍스처 뷰가 사용되는 경우 텍스처를 사용하는 약식 표현
- WGSL textureSampleLevel이 1D 텍스처 지원
- bgra8unorm 읽기 전용 스토리지 텍스처 사용 지원 중단
- GPUAdapter isFallbackAdapter 속성 삭제
- Dawn 업데이트
Chrome 139
Chrome 138
- 버퍼를 바인딩 리소스로 사용하는 약식 표현
- 생성 시 매핑된 버퍼의 크기 요구사항 변경
- 최신 GPU의 아키텍처 보고
- GPUAdapter isFallbackAdapter 속성 지원 중단
- Dawn 업데이트
Chrome 137
- externalTexture 바인딩에 텍스처 뷰 사용
- 오프셋과 크기를 지정하지 않고 버퍼를 복사함
- 원자에 대한 포인터를 사용하는 WGSL workgroupUniformLoad
- GPUAdapterInfo powerPreference 속성
- GPURequestAdapterOptions compatibilityMode 속성 삭제
- Dawn 업데이트
Chrome 136
Chrome 135
- null 바인드 그룹 레이아웃으로 파이프라인 레이아웃 만들기 허용
- 표시 영역이 렌더링 타겟 경계를 지나 확장되도록 허용
- Android에서 실험용 호환성 모드에 더 쉽게 액세스
- maxInterStageShaderComponents 한도 삭제
- Dawn 업데이트
Chrome 134
Chrome 133
- unorm8x4-bgra 및 1컴포넌트 정점 형식 추가
- 정의되지 않은 값으로 알 수 없는 한도를 요청하도록 허용
- WGSL 정렬 규칙 변경사항
- discard를 사용한 WGSL 성능 향상
- 외부 텍스처에 VideoFrame displaySize 사용
- copyExternalImageToTexture를 사용하여 기본이 아닌 방향의 이미지 처리
- 개발자 환경 개선
- featureLevel로 호환성 모드 사용 설정
- 실험용 하위 그룹 기능 정리
- maxInterStageShaderComponents 한도 지원 중단
- Dawn 업데이트
Chrome 132
- 텍스처 뷰 사용
- 32비트 부동 소수점 텍스처 혼합
- GPUDevice adapterInfo 속성
- 잘못된 형식으로 캔버스 컨텍스트를 구성하면 JavaScript 오류가 발생함
- 텍스처에 대한 필터링 샘플러 제한
- 확장된 하위 그룹 실험
- 개발자 환경 개선
- 16비트 정규화된 텍스처 형식에 대한 실험적 지원
- Dawn 업데이트
Chrome 131
- WGSL에서의 클립 거리
- GPUCanvasContext getConfiguration()
- 점 및 선 기본 요소에는 깊이 바이어스가 없어야 함
- 하위 그룹에 대한 포괄적 스캔 기본 제공 함수
- multi-draw indirect 실험적 지원
- 셰이더 모듈 컴파일 옵션 엄격한 수학
- GPUAdapter requestAdapterInfo() 삭제
- Dawn 업데이트
Chrome 130
Chrome 129
Chrome 128
- 하위 그룹 실험
- 선과 점의 깊이 바이어스 설정 지원 중단
- preventDefault인 경우 uncaptured error DevTools 경고 숨기기
- WGSL 보간 샘플링 first 및 either
- 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 사용
- 컴퓨팅 및 렌더링 패스에서 타임스탬프 쿼리
- 셰이더 모듈의 기본 진입점
- GPUExternalTexture 색상 공간으로 display-p3 지원
- 메모리 힙 정보
- Dawn 업데이트
Chrome 120
Chrome 119
Chrome 118
copyExternalImageToTexture()
의 HTMLImageElement 및 ImageData 지원- 읽기-쓰기 및 읽기 전용 스토리지 텍스처 실험적 지원
- Dawn 업데이트
Chrome 117
- 정점 버퍼 설정 해제
- 바인드 그룹 설정 해제
- 기기가 손실된 경우 비동기 파이프라인 생성에서 오류 무시
- SPIR-V 셰이더 모듈 생성 업데이트
- 개발자 환경 개선
- 자동으로 생성된 레이아웃으로 파이프라인 캐싱
- Dawn 업데이트
Chrome 116
- WebCodecs 통합
- GPUAdapter
requestDevice()
에서 반환된 손실된 기기 importExternalTexture()
가 호출되는 경우 동영상 재생을 원활하게 유지- 사양 준수
- 개발자 환경 개선
- Dawn 업데이트