Left4Dead tarzı Glow efekti

Oynamış olanlar neden bahsettiğimi biliyordur herhalde, oynamamışlarda kesinlikle denemesini öneririm.

Buradaki glow efektini directx üzerinde shader kullanarak yapmaya karar vermiştim. Sonuç yeterli gibi oldu.

test

Kullanması oldukça kolay. Kütüphanemizi yüklüyoruz. Effect i hazırlamak icin
void setupEffect(LPDIRECT3DDEVICE9 d3ddev, int w, int h);
fonksiyonu cağırılıyor. w ve h ekran boyutları oluyor.

Daha sonradan da
void drawGlowMesh(ID3DXMesh* mesh, D3DXVECTOR3 color);
ile mesh i color ile ekrana çiziyoruz.

Kullanabilmek icin bir kac seye ihtiyacımız var. d3ddev olusturulurken back buffer boyutlarını vermek zorundayız.
d3dpp.BackBufferHeight = SCREEN_HEIGHT;
d3dpp.BackBufferWidth = SCREEN_WIDTH;

Ayrıca stencil buffer destekleyen bir depth&stencil format kullanmalıyız. En çok kullanılan D3DFMT_D24S8 sanırım.

Son olarakta alpha blending açık olmalı.

.h ve .fx dosyamız

Ayrıca şu linkteki örnek üzerine ekledim. main.cpp örnek teki kod. kendi eklediğim ve değiştirdiğim satırlar //*** ile comment lendi ve açıklama yazıldı.

Örnek program (Adı postprocess olduğuna bakmayın, üşendim şimdi düzeltmeye =))