이번에는 WebGPU 기능의 수가 약간 부족하다고 느껴질 수 있지만, 몇 가지 주요 개선사항이 가까이에 있습니다. 향후 출시에는 셰이더 컴파일 속도 개선 및 WGPUFuture를 사용한 구현의 비동기 모델 변경사항과 같은 기능이 포함됩니다.
하위 그룹 (개발 중 기능)
하위 그룹 기능은 SIMD 수준의 동시 로드를 지원하므로 그룹 내 스레드가 통신하고 집합적인 수학 연산 (예: 16개 숫자의 합계 계산)을 수행할 수 있습니다. 이는 매우 효율적인 형태의 스레드 간 데이터 공유를 제공합니다.
하위 그룹 작업은 최신 GPU API에서 지원되지만 이름 지정 및 구현 세부정보는 다릅니다. Chrome팀은 공통점을 확인했으며 현재 이 기능을 표준화하기 위해 노력하고 있습니다. 궁금한 점이 있으면 제안과 의견을 참조하세요.
'실험용 웹 플랫폼 기능' 뒤에 하위 그룹이 최소화되고 표준화되지 않은 상태로 구현되어 있습니다. chrome://flags/#enable-experimental-web-platform-features
의 플래그를 사용하여 개발자가 직접 사용해 보고 의견을 공유할 수 있도록 합니다.
GPUAdapter
에서 "chromium-experimental-subgroups"
기능을 사용할 수 있게 되면 이 기능이 포함된 GPUDevice
를 요청하여 WGSL에서 실험용 하위 그룹 지원을 받고 minSubgroupSize
및 maxSubgroupSize
제한을 확인합니다.
또한 enable chromium_experimental_subgroups
를 사용하여 WGSL 코드에서 이 확장 프로그램을 명시적으로 사용 설정해야 합니다. 사용 설정하면 다음 항목에 액세스할 수 있습니다.
subgroup_invocation_id
: 하위 그룹 내 스레드 색인의 내장 값입니다.subgroup_size
: 하위 그룹 크기 액세스를 위한 기본 제공 값입니다.subgroupBallot(value):
subgroup_invocation_id
에 해당하는 비트가value
이 활성 호출의 경우 true이면 1이고 그렇지 않은 경우 0인 비트 필드 집합을 반환합니다.subgroupBroadcast(value, id)
:id
와 일치하는subgroup_invocation_id
가 있는 호출에서 하위 그룹 내의 모든 호출에value
를 브로드캐스트합니다. 참고:id
는 컴파일-시간 상수여야 합니다.
다음 코드 스니펫은 하위 그룹을 살펴보고 그 가능성을 발견할 수 있는 기반을 제공합니다.
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("chromium-experimental-subgroups")) {
throw new Error("Experimental subgroups support is not available");
}
// Explicitly request experimental subgroups support.
const device = await adapter.requestDevice({
requiredFeatures: ["chromium-experimental-subgroups"],
});
const shaderModule = device.createShaderModule({ code: `
enable chromium_experimental_subgroups;
@compute @workgroup_size(64) fn main(
@builtin(global_invocation_id) global_id : vec3u,
@builtin(subgroup_size) sg_size : u32,
@builtin(subgroup_invocation_id) sg_id : u32) {
// TODO: Use subgroupBallot() and subgroupBroadcast().
}`,
});
3D 텍스처 슬라이스로 렌더링
이제 GPURenderPassColorAttachment
의 새로운 depthSlice
멤버를 사용하여 렌더 패스 내에서 3D 텍스처 슬라이스에 직접 렌더링하여 일반적인 2D 텍스처 렌더링 이상으로 기능을 확장할 수 있습니다. 이를 통해 예를 들어 3D 텍스처 볼륨으로 직접 렌더링하여 복셀 기반 장면과 효과를 만들 수 있습니다. issue dawn:1020을 참고하세요.
Dawn 업데이트
전체 커밋 목록을 확인하세요.
WebGPU의 새로운 기능
WebGPU의 새로운 기능 시리즈에서 다룬 모든 내용 목록
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 업데이트