Ulaşım
- Adres: 2342 Sk, İpekyol, İpek Ap 49A, 63250 Haliliye/Şanlıurfa
- Telefon:
0505 532 36 38 - eMail: admin@alestaweb.com
WebGPU (WebGPU API) 2026 itibarıyla her major tarayıcıda varsayılan olarak çalışıyor: Chrome 113+, Firefox 147+, Safari macOS/iOS/iPadOS/visionOS 26+. Bu yıllardır beklenen modern grafik ve compute API'si, WebGL'in yerini alıyor ve tarayıcıda gerçek zamanlı 3D render, GPGPU compute, ML inference imkanını native uygulamalara yaklaştırıyor. Alesta Web olarak hem 3D web uygulamalarında hem de tarayıcıda yerel AI (browser-based AI) projelerinde WebGPU kullandık; bu rehberde temel kavramları, ilk kod örneklerini ve alestaweb.com'da paylaştığımız diğer modern web rehberleriyle birlikte WebGPU'nun neden geleceğin web grafik standardı olduğunu anlattık.
WebGPU (Web Graphics and Compute API), W3C tarafından standartlaştırılan, modern GPU'ların tüm yeteneklerine tarayıcıdan erişim sağlayan yeni nesil API'dir. WebGL'in 2011'den beri sunduğu OpenGL ES 2.0 / 3.0 tarzının yerine; Vulkan, Metal ve Direct3D 12 gibi modern düşük seviye API'leri tarayıcıya getiriyor.
Temel hedefleri:
Spesifikasyon 2024'te GA (General Availability) statüsüne ulaştı. 2026 itibarıyla WebGPU artık preview değil, production-ready (production ready). Alesta Web projelerinde aktif olarak üretimde kullandığımız bir teknoloji (technology actively used in production).
| Tarayıcı (Browser) | Sürüm (Version) | Durum (Status) | Platform |
|---|---|---|---|
| Chrome | 113+ | ✅ Varsayılan | Windows, macOS, ChromeOS, Android |
| Edge | 113+ | ✅ Varsayılan | Windows, macOS |
| Firefox | 147+ | ✅ Varsayılan | Tüm platformlar |
| Safari | 26+ | ✅ Varsayılan | macOS, iOS, iPadOS, visionOS |
if (!navigator.gpu) {
throw new Error("WebGPU bu tarayıcıda desteklenmiyor (WebGPU not supported)");
}
const adapter = await navigator.gpu.requestAdapter();
if (!adapter) {
throw new Error("Uygun GPU adapter bulunamadı (no suitable GPU adapter found)");
}
const device = await adapter.requestDevice();
console.log("WebGPU device hazır:", device);
| Özellik | WebGL 2.0 | WebGPU |
|---|---|---|
| Tabanı (Based on) | OpenGL ES 3.0 | Vulkan / Metal / D3D12 |
| Shader dili | GLSL | WGSL |
| Compute shaders | ❌ Yok | ✅ Var |
| Multi-threading | Sınırlı | ✅ Yerleşik |
| Async API | ❌ Senkron | ✅ Async / Promise |
| Storage buffers | ❌ Yok | ✅ Var |
| CPU overhead | Yüksek | Düşük |
Ekrana basit bir kırmızı üçgen çizen minimal WebGPU programı:
<canvas id="gpu-canvas" width="800" height="600"></canvas> <script type="module" src="main.js"></script>
const canvas = document.getElementById('gpu-canvas');
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const context = canvas.getContext('webgpu');
const format = navigator.gpu.getPreferredCanvasFormat();
context.configure({ device, format, alphaMode: 'premultiplied' });
const shaderCode = `
@vertex
fn vs(@builtin(vertex_index) i: u32) -> @builtin(position) vec4<f32> {
var pos = array<vec2<f32>, 3>(
vec2<f32>( 0.0, 0.5),
vec2<f32>(-0.5, -0.5),
vec2<f32>( 0.5, -0.5),
);
return vec4<f32>(pos[i], 0.0, 1.0);
}
@fragment
fn fs() -> @location(0) vec4<f32> {
return vec4<f32>(1.0, 0.0, 0.0, 1.0); // kırmızı
}
`;
const module = device.createShaderModule({ code: shaderCode });
const pipeline = device.createRenderPipeline({
layout: 'auto',
vertex: { module, entryPoint: 'vs' },
fragment: { module, entryPoint: 'fs', targets: [{ format }] },
primitive: { topology: 'triangle-list' }
});
function render() {
const encoder = device.createCommandEncoder();
const pass = encoder.beginRenderPass({
colorAttachments: [{
view: context.getCurrentTexture().createView(),
clearValue: [0, 0, 0, 1],
loadOp: 'clear',
storeOp: 'store'
}]
});
pass.setPipeline(pipeline);
pass.draw(3);
pass.end();
device.queue.submit([encoder.finish()]);
}
render();
Bu kadar — 50 satır WebGPU kodu ile ekranda kırmızı bir üçgen var. WebGL'de aynı işi 80+ satırda yapardınız.
WebGPU'nun WebGL'den ayrılan en büyük özelliği compute shader desteği. Render pipeline'dan ayrı, GPU üzerinde genel amaçlı hesaplama yapabiliyorsunuz. Matrix multiplication, image processing, fiziksel simülasyon — hepsi GPU'da paralel.
@group(0) @binding(0) var<storage, read_write> data: array<f32>;
@compute @workgroup_size(64)
fn cs(@builtin(global_invocation_id) id: vec3<u32>) {
let idx = id.x;
if (idx < arrayLength(&data)) {
data[idx] = data[idx] * 2.0; // her elemanı 2 ile çarp
}
}
Bu shader 1 milyon elemanlı bir dizinin her elemanını 2 ile çarpar — modern bir GPU'da 1ms altında. CPU'da aynı iş 50ms+ alabilir. Bu fark 50x hız demek, Alesta Web olarak görüntü işleme ve fiziksel simülasyon projelerinde sürekli faydalandığımız bir kapasite.
WebGPU'nun en heyecan verici uygulaması: LLM (Large Language Models) ve AI modellerini tarayıcıda yerel olarak çalıştırma. Sunucu maliyeti yok, kullanıcı verisi cihazdan çıkmıyor, latency milisaniyeler.
import { pipeline } from '@xenova/transformers';
const classifier = await pipeline(
'sentiment-analysis',
'Xenova/distilbert-base-uncased-finetuned-sst-2-english',
{ device: 'webgpu' } // WebGPU backend!
);
const result = await classifier('I love using WebGPU!');
console.log(result);
// [{ label: 'POSITIVE', score: 0.99 }]
WebGPU backend ile WASM/CPU'ya göre 10-50x daha hızlı inference. Alesta Web olarak müşteri panelinde yerel görüntü sınıflandırma yapan bir prototip geliştirdik (developed local image classification prototype); sunucu yükü sıfır, gizlilik tam (privacy-first).
WebGPU'yu doğrudan kullanmak istemiyorsanız, üzerine yazılmış olgun kütüphaneler var:
import * as THREE from 'three';
import { WebGPURenderer } from 'three/webgpu';
const renderer = new WebGPURenderer({ antialias: true });
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, 1, 0.1, 1000);
camera.position.z = 5;
const geometry = new THREE.BoxGeometry();
const material = new THREE.MeshStandardMaterial({ color: 0x00ff88 });
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);
renderer.setAnimationLoop(() => {
cube.rotation.x += 0.01;
cube.rotation.y += 0.01;
renderer.renderAsync(scene, camera);
});
Alesta Web ekibi olarak tüm kod örneklerini Chrome 128 ve Firefox 147'de test ettik.
WebGPU 2026'da artık deneysel değil, üretim kalitesinde bir API (production-quality API). Tarayıcıda 3D oyun, AI modeli, fiziksel simülasyon — hepsi mümkün ve performanslı. Alesta Web olarak web tarafında modern grafik ve AI projelerinde WebGPU'yu temel teknolojimiz olarak benimsedik. Yeni başlıyorsanız Three.js veya Babylon.js ile başlayın; ileri seviyede direkt WGSL yazın.
Hızlı Özet / Quick Summary:
Faydalı Linkler / Useful Links:
© 2026 Alesta Web — alestaweb.com. Tüm hakları saklıdır.