Ana Menü
· Ana Sayfa
· Dosyalar
· Dökümanlar
· Forum
· Günün Resmi
· Haber Arşivi
· WWW Linkleri
· Üye Listesi

     Forumlar

 strncpy ve strncpy_s
 Konu adi : Borland c++ Builder ile Amiral Batti
 Rady10 - YerliOyun
 Kabusta Kaybolmak
 Konsol da programı bekletmek
 Oyun programlama icin hangi programlama dilli ?
 flash! şanlıurfa bilgisayar oyununda(no rapid)
 Sevgilim Olur musun?
 Directx'e başlamak isteyenler bi bakın
 PSP programlama
 Flash tan php
 Bilgisyr oyunu yapmam için üniverstde hangi bölüme girmeliym
 www.arshiv.gen.ms
 Cimg.h ilgilenenler icin
 müttefik oyunu

Konu Disi
 Emraah
 Yeni sitemiz açıldı
 Kalp krizi durumunda ne yapılmalı?
 Oyun sektöründe hangi görevde çalışmak isterdiniz?
 Takım arkadaşı sorunu
 msn de renklı nıck
 pc hata veriyor ! YARDIM!!
 Gülmek isteyenler Buraya
 İnanılmaz hl 2 modu görüntüsü
 Computer Languages History

[ Forumlara Git ]


oyunyapimi.org: Forums

www.oyunyapimi.org :: Başlığı Görüntüle - P/V/Q Shaders
 SSSSSS   AramaArama   Kullanıcı GruplarıKullanıcı Grupları   ProfilProfil   LoginLogin 

P/V/Q Shaders

 
Bu forum kilitlenmiştir, yeni bir başlık açamazsınız, cevap gönderebilir ya da mesajları değiştirebilirsiniz   Bu başlık kilitlenmiştir, cevap yazamaz ya da mesajları değiştiremezsiniz    www.oyunyapimi.org Forum Ana Sayfası -> OyunYapımı
Önceki başlık :: Sonraki başlık  
Yazar Mesaj
chfbat



Kayıt: Dec 31, 2003
Mesajlar: 49

MesajTarih: Sat Apr 24, 2004 11:33 am    Mesaj konusu: Alıntıyla Cevap Ver

Her zamanki klasik laflardan olacak ama isteyen arkadaşlara Pixel,Vertex veya Quake shaders hakkında geniş bilgi sunabilirim. Pixel shader nedir, nasıl kullanılır gibisinden veya örnek kodlarla zenginleştirilmiş bir şekilde. Fakat bunun içinde bir şartım olacak. Önemli birşey, fakat bunu şimdi açıklamak yersiz olur.

Örnek olarak açıklayacak olursam, Shader'ın genel anlamı bilinen 2D textureyi standart görünüm dışında editleyerek çok daha değişik bir görünüm vermek. örneğin multitexture ve bumpmapping kullanarak bir su efekti hazırlamak (rüzgar yönüne göre şekillenen dalga efekti). Veya env mapping kullanarak ayna oluşturmak vs..


Daha kısa bir açıklama üretmek gerekirse şöyle olur;
Bir texturenin vector ve matrix yapısını "dinamik" olarak değiştirerek sizin oyununuz veya yazılımınıza ekliyor.



[ Bu mesajı düzenleyen: chfbat _FIL 24-04-2004 12:39 ]
Başa dön
Kullanıcı profilini gör
ferit



Kayıt: Oct 17, 2003
Mesajlar: 1403
Nereden: Jandarma

MesajTarih: Sat Apr 24, 2004 12:16 pm    Mesaj konusu: Alıntıyla Cevap Ver

güzel bir konuya değinmişsin aslında şu SSS ler çıksada hepimiz rahata kavuşsak... soruların %70i hazirlanmıştı diye düşünüyorum
Başa dön
Kullanıcı profilini gör
chfbat



Kayıt: Dec 31, 2003
Mesajlar: 49

MesajTarih: Sun Apr 25, 2004 12:02 pm    Mesaj konusu: Alıntıyla Cevap Ver

//şimdi amacımız ilk pixel shader programını yazmak;


//header'ları yükle;

#include
#include // textureler için gerekecek

IDirect3D9* lpD3D = Direct3DCreate9(D3D_SDK_VERSION);

D3DCAPS9 hal_caps;
ZeroMemory(&hal_caps, sizeof(D3DCAPS9)); // burası sıfır olmasın çünkü hata verecek

HRESULT hRes = lpD3D->GetDeviceCaps(D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
&hal_caps);

//varsayılan ekran kartının özelliklerini (CAPS) hal_caps'a al.
//ve sonucuda hRes değişkenşne yükle


//pixel shader versiyonlarını (noktadan önce,sonra) al
UINT ps_major = D3DSHADER_VERSION_MAJOR(hal_caps.PixelShaderVersion);
UINT ps_minor = D3DSHADER_VERSION_MAJOR(hal_caps.PixelShaderVersion);


//eğer 2.0 dan büyükse geri dön
if (hal_caps.PixelShaderVersion < D3DPS_VERSION(2, 0))
{
return false;
}


//texture yarat ve tanımla. sonuç gene hRes'te olacak
IDirect3DTexture9* lpTexture = NULL;
hRes = D3DXCreateTextureFromFile(lpDevice,
"denemejpeg.jpg",
&lpTexture);

//şimdide texture'te stage 0 damgası vur. yani 0 numarasını ver
hRes = lpDevice->SetTexture(0, lpTexture);
lpTexture->Release(); //kaydet
lpTexture = NULL; // değişkeni boşalt


//DirectX shaderleri için gereken asıl yerler

IDirect3DPixelShader9* lpPixelShader = NULL;
LPD3DXBUFFER pCode = NULL;
LPD3DXBUFFER pErrorMsgs = NULL;
//shaderi kullanmak için oluştur. dosyadan alıyoruz tabiki.
hRes = D3DXAssembleShaderFromFile("ilkshader.txt",
NULL,
NULL,
0,
&pCode,
&pErrorMsgs);

//hatavarsa devam etme
if ((FAILED(hRes)) && (lpErrorMsgs != NULL))
{
unsigned char* message = (unsigned char*)pErrorMsgs->GetBufferPointer();

// Diğer hata tanımalamaları.
}



//şimdide pixelshader'ı 3DDevice için tanımlayacağız
hRes = g_lpDevice->CreatePixelShader((DWORD*)pCode->GetBufferPointer(),
&lpPixelShader);
if (FAILED(hRes)) return false; //hata varsa geri


//ve uygulayacağız
hRes = g_lpDevice->SetPixelShader(lpPixelShader);
if (FAILED(hRes)) return false;



bu kadar...


ilkshader.txt içeriği


; versiyon 2.0 olduğunu belirtiyoruz (bu şart)
ps_2_0
;

; s0 kaydedicisini 2D texture kullanımı için tanımlıyoruz
dcl_2d s0

; t0'ı 2D texture koordinantlarını belirlemek için anımlıyoruz
; t0'daki "sıfır" programda texture'ye atadığımız numara
; yani o texture üzerinde işlem yapacağız
dcl t0.xy

; o textureyi r1 kaydedicisine gönderelim
register
texld r1, t0, s0

; ve son olarakta çıkış kaydedicisine
; yani (o = output) oC0 kaydedicisine.
mov oC0, r1


hadi eyvallah.

Bu örnek CHaRMaNDeR'ın örneğinden alınmıştır..



[ Bu mesajı düzenleyen: chfbat _FIL 25-04-2004 15:03 ]
Başa dön
Kullanıcı profilini gör
deniz
Site Yöneticisi
Site Yöneticisi


Kayıt: Sep 14, 2002
Mesajlar: 838
Nereden: Ankara

MesajTarih: Sun Apr 25, 2004 2:13 pm    Mesaj konusu: Alıntıyla Cevap Ver

bunu foruma postalamak iyi güzel.. ama forumda mesajlar arasında kaybolup gidecek.. bir döküman haline getirseniz de , sitede yayınlasak.. daha güzel olmaz mı?

.deniz.
Başa dön
Kullanıcı profilini gör Kullanıcının web sitesini ziyaret et
chfbat



Kayıt: Dec 31, 2003
Mesajlar: 49

MesajTarih: Sun Apr 25, 2004 2:15 pm    Mesaj konusu: Alıntıyla Cevap Ver

tamam peki.

Ben bütün komutları ve diğer şeyleri bir döküman haline getirip yapayım bunu. Tamam?
Başa dön
Kullanıcı profilini gör
chfbat



Kayıt: Dec 31, 2003
Mesajlar: 49

MesajTarih: Sun Apr 25, 2004 2:34 pm    Mesaj konusu: Alıntıyla Cevap Ver

birde ekran kartlarınıza gerek yok. eğer software yapmak istiyorsanız

ps_2_0 yerine

ps_2_0_sw
yazacaksınız
Başa dön
Kullanıcı profilini gör
Mesajları göster:   
Bu forum kilitlenmiştir, yeni bir başlık açamazsınız, cevap gönderebilir ya da mesajları değiştirebilirsiniz   Bu başlık kilitlenmiştir, cevap yazamaz ya da mesajları değiştiremezsiniz    www.oyunyapimi.org Forum Ana Sayfası -> OyunYapımı Tüm saatler GMT +2 Saat
1. sayfa (Toplam 1 sayfa)

 
Forum Seçin:  
Bu forumda yeni konular açamazsınız
Bu forumdaki mesajlara cevap veremezsiniz
Bu forumdaki mesajlarınızı değiştiremezsiniz
Bu forumdaki mesajlarınızı silemezsiniz
Bu forumdaki anketlerde oy kullanamazsınız


Powered by phpBB 2.x.x © 200x phpBB Group
Türkçe Çeviri : Onur Turgay & Erdem Çorapçıoğlu
Türkçe Düzenleme: Alexis Canver
Version 2.x.x of PHP-Nuke Port by Tom Nitzschner © 200x www.toms-home.com




Web site powered by PHP-Nuke
Web site engine\'s code is Copyright © 2002 by PHP-Nuke. All Rights Reserved. PHP-Nuke is Free Software released under the GNU/GPL license.
Sayfa Üretimi: 0.264 Saniye