real time rendering hakkında

real time rendering hakkında

kaanengineer

video render alırken grafik kartına nerdeyse hiç yük binmezken cpu´nun işi büyük oranda üslendiğini biliyoruz.

peki real time render alırken durum nasıl değişiyor. donanım olarak hangi bileşenler ne kadar kullanılıyor? bu konuda deneyim sahibi bir arkadaşımız bizimle bilgisini paylaşırsa çok faydalı olur

2008-03-28 10:03:24

Cvp

emreşan

Real-time render dediğin hadise yalnızca oyun motorları sayesinde donanıımsal olarak OpenGL veya DirectX donanımsal destekli yapılan işlemlerdir. bu sırada sizin ekran kartınıza ışık gölge hesapları için yüklenir. ekran kartınızın hafızasına da dokuları yükleyerek onuda ordan zorluyor. Bu sırada ekran kartınıza veri göndrrmesi için eişlemcini ve veri yolunuz meşgul oluyor. RAM ve işlemci bu sırada ekran kartından daha az görev üstleniyor. Yalnız son dönemlerde çıkan oyunlarda (crysis) sahne o kadar kalabalık ki ekran kartı bu sahneyi işlesin diye işlemci sürekli ekran kartının anlayacağı dilden kodlama yapıp ekran kartı ile haberleşirken yorulabiliyor. Yoksa ekran kartı olmasa zaten 1 kare bile göremezsiniz ama dönem artık tonlarca (gb larca) veriyi anında 3D grafiklere dönüşmesi için işlemciler ile ekran kartları arasında harala gürele veri yükü oluşmaına sebep oluyor. işte bu yüzden oyun konsollarında işlemciydi RAM dı harrddisk hızı v.s. problemler yok çünkü bu iletişim şekli başından sonuna kadar farklı. Yoksa PS3 le PC lerden daha hızlı veya nintendo wii ufacık boyuna göre pc ye kafa tutacak kadar donanımlı dğeil. zamanında SGI sistemlerde FUll HD veya 2k videolarla çalışabilmemizin sebebide buydu. veriyolu herşeydir. iletişim şeklini baştan doğru belğirlediğinizde işlemci ve diğer donanımın yükünü çok iyi yüklenicek sistemler meydana getirebilirsiniz. 10 yıldan önce de pc lerin yola geleceğini sanmıyorum o da ayrı mesele...

2008-03-28 11:32:17

Cvp

helersu

Yok hocam 10 yıl değildir teknoloji böyle giderse daha da kısa bi süre içersinde bu yapıya ulaşacağız.Sonuçta bazı olaylar için donanım altyapısı yeterli (bkz. Ps3 için yapılan killzone 2 ) Sadece işin optimize ve bugsız çalışan yazılımlara bakıyor bi yandan.

2008-03-28 14:18:21

Cvp

kaanengineer

cevaplar için teşekkür ederim. hele emrenin ağzına sağlık .

bu kadar bilgiyi bir kerede alınca insanın kafasında başka soru işaretleride oluşuyor;

mesela realtime render ile çalışan fly-through programlar veya iş-akışı simulasyonları , benim gördüğüm kadarıyla, 3d oyunlar dan biraz farklı etkiler yaratıyor.

acaba banamı öyle geliyor yoksa gerçek bir farklılıkmı var. tabi bu durumda göze ilk çarpan 3d oyunların dışındaki endüstri uygulamalarında GUI lerin etkin kullanılamıyo oluşuda yatıyor olabilir.

2008-03-29 01:55:14

Cvp

chrome_nickel

realtime rendering biraz garip bir konu.
değişik uygulama yöntemleri ve yapılacak işe göre optimizasyon yöntemleri var. hem yazılımsal hem donanımsal kısıtlamalar olur hep.

şunu biliriz ki, üniversal ürünler her işi yerine getirebilmek için tasarlanan ama her işte yeterli performansı olmayan ürünlerdir.

eğer bir işe özel ürün geliştirirseniz o işi çok hızlı yapar. ama başka işlere yaramaz.

pc donanımlar üniversal bilgisayar düzenekleridir. her türlü bilgisayar gerekliliğine çözüm olurlar.

ancak bir çok 2ghz üstü bilgisayar sadece mp3 çalarken bile %10 işlemci performansı kullanırken aynı işi sıradan bir mp3 player 30 mhz gibi ( 0,03 ghz ) komik bir işlem gücü ile halleder.


assembly dediğimiz donanım programlama dili vardır. assembly ile yazılan programlar genellikle yüklendiği donanımı elektriksel olarak yönetmeye yarar.

sıradan bir mp3 player´daki assembly programının görevi bellekteki mp3 dosyasının bir kısmını alıp tampon belleğe yüklemek, mikrosaniye / ses örneği karşılaştırması yaparak doğru zamanda doğru ses parçasını çıkışa göndermek gibi basit bir işlem yapar

ama sıradan bir pc´ye yüklü ana assembly programı

her an pc´nin bütün giriş ve çıkışlarını denetlemek, o sırada aktif çalışan programı bulmak, aktif çalışan programın gözetlediği giriş ve çıkışlara göre giriş ve çıkışlardaki verileri ilgili diğer giriş çıkış veya bellek hücrelerine taşımakla görevlidir.

eğer opengl kullanan bir grafik programı yazıyorsanız arka planda şunlar döner

standart bir opengl fonksiyonu çağırırsınız ( glVertex3i mesela )

programınızdaki bu çağrı önce windows mesaj yönetim programında denetlenmek üzere mesaj kuyruğuna ram´de bir bilgi olarak eklenir.

mesaj denetleme sırası bu isteğe geldiğinde windows bunu grafik mesajları kuyruğuna aktarır.

grafik mesajları kuyruğundaki bu veri sıra ona geldiğinde ekran kartı sürücü programına aktarılır.

ekran kartı sürücü programı sıra bu komuta geldiğinde ilgili assembly komutunu ekran kartına ulaştırılmak üzere veriyolu kuyruğuna aktarır.

veriyolu kuyruğunda sıra bu komuta geldiğinde ekran kartına aktarılır.

ekran kartında işlem gören komut, işlemin başarısı, sonuçları ve geri gönderilmesi gereken bilgiler varsa onlarla birlikte bütün gerekenleri tekrar veri yoluna aktarılır.

veriyolu denetlemesinde sıra ekran kartına geldiğinde bu veri alınır ve grafik mesajları kuyruğuna eklenir. ekran kartı sürücüsünde bu mesaj deşifre edildikten sonra windows mesaj kuyruğuna eklenir. windows mesaj kuyruğunda bu komuta sıra geldiğinde ilgili program olan sizin programınızın mesaj kuyruğuna aktarılır.

sizin programınıza gelen mesajlar denetlendikçe sıra buna gelir.

sıra bu komuta geldiğinde sizin gönderdiğiniz glvertex3i komutunun geri dönen bilgisi olduğunu anlar ve ona göre işlem yaptırırsınız.

bazen tek bir komut yüzlerce mesaj kuyruğundan geçtikten sonra işlem görmek durumunda kalabilir.

bu sadece bir tek komut için düşünüldükten sonra, bir de 3ds max gibi yazılımların neredeyse saniyede milyon tane komutu mesaj kuyruğuna attığını düşünün.


aynı şeyi şimdi bir de playstation için düşünelim.

herhangi bir playstation´da bu şöyle olur =

ilgili komut o tür komutları mesajlarını dinlemekte olan assembly programı tarafından hiç bekletilmeden grafik hesaplayıcı donanıma aktarılır. ve aynı şekilde grafik hesaplayıcıdan dönen sonuçlar yine onu dinleyen assembly yazılımı tarafından anında programa aktarılır. aynı komut yüzlerce mesaj kuyruğu dolaşmadan gideceği yere gelir ve geri döner. playstation´da bu komutlar mesaj kuyruğu beklemez. çünkü donanım sadece bu komutu ordan alıp oraya taşımak işlevi yapar. başka amaca hizmet etmediği için başka bir mesaj kuyruğuna da gerek yoktur.

oyun yazarları daha az mesaj kuyruğu ve daha az veriyolu trafiği oluşturmak için daha çok assembly´ye yakın yazılım dillerini tercih ederler. ( c++, java gibi )
diğer bir çok dil ( visual basic, C# vb. ) windows altında kolay program yazmayı sağlasa da, programcıdan alınan bu yükler, komutların daha çok mesaj kuyruğu dolaşması ile sağlanıyor.

donanımların ve teknolojinin inanılmaz evrimi yazılımcıların bunu takip etmesini zorlaştırıyor ve programlama assembly gibi en temel yazılım dilleri ile yapılamaz hale geliyor.

sürekli daha ilerleyen donanım standartlaşmasında sonuç şu =

donanımlar teknolojik sınırlara yaklaştı. üretimlerde mikroçipler neredeyse atom taneleri kaldırılarak işleniyor artık. bir süre daha idare edecek olan bu yeterlilik, kuantum bilgisayarları yakında kullanılabilir hale gelmezse teknolojik sınırlar mikroçip teknolojisinin durmasına sebep olabilir. mikroçip teknolojisini ilerletmenin iki yolu var. daha farklı maddelerden mikroçip yapmak, bilimle fizik dışı´nın birleştiği nokta olan kuantum bilgisayarlarını daha çok kurcaklamak. eğer kuantum bilgisayarlarını geliştirirlerse o işlem gücü ile, neo´nun ve morpheus´un hiç hoşuna gitmeyecek olsa da gerçek anlamda bir matrix´i idare edicek güçte ev bilgisayarları yapmak mümkün gibi görünüyor :) korkutucu bence.

neyse abarttım ben. gidip biraz duvarlara kafa atim teknolojim tuttu.

2008-03-31 23:45:29

Cvp

Seke

Programda gördüğünüz real time render zaten arkadaşlar yada oyunlarda görülenler ama real timeında kaldırabileceği bir sınır var mesela programdada atadığınız kaplamaları görebilirsiniz en azından resimleri ve çok basit efektleri ama oyunlara gelirsek yansıma yoktur çok gelişmiş ışık efektleri yoktur.Oyunlarda görebileceğiniz kaplamalarda en fazla bump opacity map ve parlaklık vardır yansıma yoktur örneğin raytrace gibi ama oyunlarda yansımalar şu şekilde çözülür neresi yansıyacaksa örneğin suyun üzerinde düşen gökyüzü gökyüzünün bitmapi alınıp suya yansıma olarak atanır.Real time renderın en büyük örneği maxte reactorde mevcut yaptığınız simulasyonu preview deyip oynatırsanız oyun ortamında gibi görürsünüz bunun dışında yüksek polygonlar yüksek kalite bitmapler ışıklar yansımalar Emreninde dediği gibi bir 10 hatta 15 seneyi bulur.

2008-04-01 10:12:36

Cvp

kalimba

Teşekkürler Kadir. Ben bu Playstation olayına baya kafayı takıyordum, açığa kavuştuğu iyi oldu. Bi de direkt cd/dvd den okuduğu halde ... gibi şaşmalarım vardı. =)

2008-04-01 22:43:37

Cvp

icdeadpeople

http://ati.amd.com/developer/demos/rhd3000.html
"the demo shows off a new lighting technique known as real-time global illumination"
dediği gibi yeni ışık sistemi gerçek zamanlı genel aydınlanma ,
gittikçe geliştiriliyor,3000 adet ping pong topu ve global illumination kullanılmış, "directx 10.1 ATI Radeon HD 3000 Series of graphics processors".
http://www.lightsprint.com/demo.html buda open gl 2.0 da global illumination
hani realtime konusu geçmişken şu aralar neler yapıldığını gösteren videolar koyayım dedim,
bu kadar anlatımdan sonra bir iki video konuyu pekiştirecektir.

2008-04-02 09:21:44

Cvp

chrome_nickel

ekran kartları zaten bunun için var. eğer hesaplanacak veride özellikle geometrik deformasyonlar yoksa veri ekran kartının hafızasına yüklenir.

o dakikadan sonraki hesaplar ekran kartının işlemcisi belleği ve doğrudan monitör arasında gidip geldiği için bilgisayarın veritrafiği işgal edilmez. zaten ancak bu sayede realtime grafikler söz konusu olabiliyor.

aynı şekilde donanım hızlandırmalı videoları print screen tuşuna bastığınızda video olması gereken yerde hiçbirşey olmayan siyah bir resim görürsünüz. çünkü windows o sırada ekranın orasında ne gösterildiğini asla bilmez. o sadece videonun ekranın neresinde gösterileceğini ekran kartına bildirir. ilgili video verisi ve zaman senkronizasyonu ile ilgili kriterler sürekli olarak harddiskten yada harici medyadan ekran kartı belleğine aktarılır ve sistem veriyolu minimum düzeyde kullanılarak çok büyük veri yolu gerektiren videolar normal pc´lerde izlenebilir hale gelir. veri yollarının 16 bit olduğu mmx öncesi pc sistemlerinde video neredeyse seyredilemiyordu.

kısacası donanımın ne amaçla üretildiği çok önemlidir.

bilgisayar oyunları için tasarlanan ekran kartları, küçük verilerle çok hızlı çalışmak için daha basit veriyolu yapıları kullanır.

ama bu tür ekran kartları örneğin bir otomobil tamponu tasarlanırken aerodinamik davranışını hesaplamak için gereken işlem kapasitesini asla karşılayamaz.

oyunlarda ve basit işlerde bir işe yaramıyormuş gibi görünür. çünkü yüksek hızda çalışmak yerine aşırı derece yoğun veri trafiğini zamanında yetiştirebilmeye ayarlandığı için sahneleri daha rahat hesaplar.

kısacası yapacağınız işe göre ekran kartı seçebilirsiniz. dinamik simülasyon ve çok fazla görsel temanın bulunduğu ağır sahnelerle çalışmanız gerekmiyorsa ati firegl yada nvidia quadro pek de işinize yaramaz.

1 milyon poligonlu sahne ayda bir yapıyorsanız bundan geri kazandığınız gelir zaten o ekran kartına yatırım yapmanıza pek imkan da vermez.

gene teknolojim tuttu bak :)

2008-04-02 12:49:11

Re:Cvp

LocKman_HacKim

[quote=39164] Yazan: chrome_nickel

aynı şekilde donanım hızlandırmalı videoları print screen tuşuna bastığınızda video olması gereken yerde hiçbirşey olmayan siyah bir resim görürsünüz. çünkü....
[/quote]

bunun sebebini gerçekten merak ediyordum. diğer uçuk :) bilgiler içinde teşekkürler kadir hocam =)

2008-04-02 15:32:33