Çok yakın bir gelecekte, hesaplanması

Benzer belgeler
Object-oriented Graphics Rendering Engine (OGRE)

Doğu Akdeniz Üniversitesi Bilgisayar ve Teknoloji Yüksek Okulu Bilgi teknolojileri ve Programcılığı Bölümü DERS 1 - BİLGİSAYAR VE ÇEVRE ÜNİTELERİ

Teknoloji Kullanımı. Oyun Motorları

PARALEL HESAPLAMA ÇAĞRI GİDER ENES BİLGİN

Son gün kısa filmindeki Oskar animasyonunun yapım safhaları. Öncelikle önden ve yandan referans fotoğrafları çektim.

KONU 1 BİLGİSAYAR VE ÇEVRE ÜNİTELERİ

Öğr.Gör. Gökhan TURAN Gölhisar Meslek Yüksekokulu

BCA611 Video Oyunları için 3B Grafik. Zümra Kavafoğlu

Çekirdek Nedir? Ne yapar?

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

DONANIM. 1-Sitem birimi (kasa ) ve iç donanım bileşenleri 2-Çevre birimleri ve tanımlamaları 3-Giriş ve çıkış donanım birimleri

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu

BİLGİSAYAR KULLANMA KURSU

İşletim Sistemi. BTEP205 - İşletim Sistemleri

eralp tarafından yazıldı. Cumartesi, 19 Şubat :51 - Son Güncelleme Cumartesi, 19 Şubat :11

DONANIM KURULUMU. Öğr. Gör. Murat YAZICI. 1. Hafta.

Görüntü Bağdaştırıcıları

ENF 100 Temel Bilgi Teknolojileri Kullanımı Ders Notları 2. Hafta. Öğr. Gör. Dr. Barış Doğru

Sanal Ortamda Nesnelerin Haptic Kol ile Manipülasyonu. Sevcan AYTEKİN Alpaslan DUYSAK

ÖNDER BİLGİSAYAR KURSU. 3D Studio Max Eğitim İçeriği

Bilgisayar Mimarisi Nedir?

Temel Kavramlar-2. Aşağıda depolama aygıtlarının kapasitelerini inceleyebilirsiniz.

İşletim Sisteminin Temel İşlemleri

İŞLETİM SİSTEMLERİNE GİRİŞ - 2. Sistem, sistem kaynaklarını belli bir hiyerarşi içinde kullanıcının hizmetine

Bilgi ve iletişim teknolojileri

PROGRAMLAMA TEMELLERİ

BİT in Temel Bileşenleri (Yazılım-1)

Programlama Nedir? Bir bilgisayar bilimcisi gibi düşünmek ve programlama ne demektir?

Yazılım Mühendisliği 1

Bilişim Teknolojilerine Giriş

Bilgisayarların Gelişimi

Arama motoru: kuş gribinin etkileri

İşletim Sistemlerine Giriş

İŞ İSTASYONU SEÇİM REHBERİ

AKILLI KAVŞAK YÖNETİM SİSTEMİ

Java ve Linux. Bora Güngören Portakal Teknoloji Akademik Bilişim

3Ds MAX. Bilişim Eğitim Merkezi 3DMax in Türkiye deki Yetkili Eğitim Merkezidir.

GAZİANTEP ÜNİVERSİTESİ

2. hafta Bulut Bilişime Giriş

Facebook. 1. Grup ve Sayfalar. Facebook ta birçok grup ve sayfa üzerinden İngilizce öğrenen kişilerle iletişime geçebilir ve

Güneş Sistemi (Gezi Öncesinde)

.. ORTAOKULU EĞİTİM ÖĞRETİM YILI BİLİŞİM TEKNOLOJİLERİ VE YAZILIM DERSİ 6. SINIFLAR ÜNİTELENDİRİLMİŞ YILLIK PLANI

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

Assembly Dili Nedir? Assembly dili biliyorum derken hangi işlemci ve hangi işletim sistemi için olduğunu da ifade etmek gerekir.

Ders: Görsel senaryo taslağının önemi

Ege MYO Bilgisayar Donanım Ders Notları

Programlama Dilleri II. Bilgisayar ve Öğretim Teknolojileri Öğretmenliği

İŞLEMCİLER (CPU) İşlemciler bir cihazdaki tüm girdilerin tabii tutulduğu ve çıkış bilgilerinin üretildiği bölümdür.

İŞLETİM SİSTEMLERİNE GİRİŞ. Modern bilgisayar çalışma prensipleri, Von Neumann ın 1945 de geliştirdiği

İNTERNET PROGRAMCILIĞI - II

Bilgisayar Grafiği. Volkan KAVADARLI

Akademik Dünyada Özgür Yazılım. Akademik Dünyada. Onur Tolga Şehitoğlu

Akıllı telefonlar, avuçiçi bilgisayarlar ile taşınabilir (cep) telefonların özelliklerini birleştiren cihazlardır. Akıllı telefonlar kullanıcıların

Arayüz Nedir? Arayüz Çeşitleri Arayüz Tasarım Yöntemleri Arayüz Tasarım Hataları. Ömer Faruk MIZIKACI

R ile Programlamaya Giriş ve Uygulamalar

Mobil Cihazlardan Web Servis Sunumu

Kodlama Paneli. Nazmiye Demirel Ortaokulu SCRATCH Scratch bir grafik programlama dilidir.

Bilgisayar Donanımı. Temel Birimler ve Çevre Birimler. Öğr.Gör.Günay TEMÜR / KAYNAŞLI MESLEK YÜKSEOKULU

Bazı Gömülü Sistemlerde OpenCV ile Performans Analizi

PORTLAR Bilgisayar: VERİ:

Kabuk Programlama (Bash)

1. PS/2 klavye fare 2. Optik S/PDIF çıkışı 3. HDMI Giriş 4. USB 3.0 Port 5. USB 2.0 Port 6. 6 kanal ses giriş/çıkış 7. VGA giriş 8.

C# nedir,.net Framework nedir?

Sanal Bellek (Virtual Memory)

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.

TEMEL BİLGİ TEKNOLOJİSİ KULLANIMI. Enformatik Bölümü

UHeM ve Bulut Bilişim

Türkiye ye Yönelik Beklentiler Olumsuz Olamaz

Hashtag ile ilgili bilmeniz gereken herşey Ne zaman hashtag yapmalıyım, nasıl hashtag oluşturmalıyım? HASHTAG KULLANIM REHBERİ

PÜRÜZLÜ YÜZEY ÜRETİMİ

2000 li yıllardan itibaren teknolojinin hızlı gelişiminden belki de en büyük payı alan akıllı telefon ve tabletler gibi kablosuz iletişim olanağı

Sizin Fikriniz Sizin Projeniz

Akademik Veri ve Performans Yönetim Sistemi. Kısa Tanıtım Kılavuzu

IP CCTV SİSTEMLERİNDE PİXEL (PPM) HESAPLAMASI VE DOĞRU ÇÖZÜNÜRLÜK TESPİTİ

Öğr. Gör. Hakan YÜKSEL SÜLEYMAN DEMİREL ÜNİVERSİTESİ. Akademik Bilişim

Temel Bilgisayar (Basic Computer) Yazılım (Software)

ZEKA ATÖLYESİ AKIL OYUNLAR

Oyun Programlama Dersi. Nergiz Ercil Çağıltay

Aktivite 8. Saati Yen Sıralama ağları

BİLGİSAYAR DESTEKLİ TASARIM AUTOCAD DERSİ. 1. HAFTA Öğr. Gör. Serkan ÖREN

RAM Standartları, Spesifikasyonları, Test Yöntemleri

BİLGİ TEKNOLOJİLERİ SMO103

1.1. Yazılım Geliştirme Süreci

FABREKA YAZILIM ELEKTRONİK DANIŞMANLIK TİC. LTD. ŞTİ.

DONANIM VE YAZILIM. Bilişim Teknolojileri ve Yazılım Dersi

K E C E L E G ĞIMLILIĞI

DONANIM & YAZILIM Modül 2

LİNUX İŞLETİM SİSTEMİNİN KÖPRÜ MODUNDA ÇALIŞTIRILMASI VE GÜVENLİK DUVARI İŞLEMLERİ

Akademik Uygulamalar ve Linux. Fatih Mehmet AVCU İnönü Üniversitesi Enformatik Bölümü

Yarım toplayıcının fonksiyonelliği ile 4 x 2 bit ROM hafıza(çok küçük bir hafıza) programlandığının bir örneğini düşünelim:

Sanallaştırma Nedir? Bahadır Demircioğlu. Şubat, 2013

A.Ü. GAMA MYO. Elektrik ve Enerji Bölümü ALGORİTMA VE PROGRAMLAMA 1.HAFTA

Donanımlar Hafta 1 Donanım

Hakkımızda. 3D Animasyon. 3D Animasyon

VIERO ARAÇ SAYIM SİSTEMİ

Merkezi İşlem Birimi (CPU)

Çalınan Laptopuzunun Peşini Bırakmayın!..

IOT NEDİR? Bölüm 1. Internet of Things ekosistemi altında donanım, programlama, veri tabanı, veri analizi gibi alt yapılar yer almaktadır.

Transkript:

Real-time Devrimine Hazır mısınız? GÖKHAN SÖNMEZ / gsonmez@byte.com.tr Pek farkında olmasak da Bilgisayar Grafiği dünyasında büyük bir değişim yaşanıyor. Daha birkaç yıl öncesine kadar çok uzun zaman alan render sonuçlarıyla aynı kalitedeki görüntüyü, günümüz grafik kartlarıyla anında alabilmekteyiz. Değişimin ilk sinyalleri bilgisayar oyunlarında kendisini belli ediyor. Çok yakın bir gelecekte, hesaplanması için binlerce CPU dan oluşan render çiftliklerinin kullanıldığı FinalFantasy, Toy Story gibi filmleri bilgisayarımızın ekranında realtime olarak izlememiz, hatta hikayeyi istediğimiz kamera açılarından düzenleyip, filmin gelişimini etkileyebilmemiz mümkün olacak. Bu yazımızda öncelikle film üretiminde çokça kullanılan PR Renderman ve MentalRay sistemlerinin tercih edilmesini sağlayan temel özellikleri ortaya koyup, prodüksiyon firmalarının render sistemlerini hangi özellikleriyle değerlendirdiklerine bakacak ve daha sonra realtime-render ın neden bu kadar heyecan verici olduğunu ortaya koyacağız. Prodüksiyon Render Sistemleri Film sektörüne baktığımız zaman iki render sisteminin diğerlerinden çok daha fazla kullanıldığına şahit oluyoruz: Pixar in PR Renderman ve MentalImages ın MentalRay sistemleri. Son zamanda birbirinden farklı ve güçlü render sistemleri geliştirilmiş olmasına rağmen, neden hala bu sistemler tercih ediliyor? sorusuna verilecek cevap, render sistemlerine bakışımızı da etkileyecektir. Böylece hem realtime render sistemlerinin hedefini ortaya koymuş olacak, hem de çoğu okuyucumuza hangi render sistemi? Neden? sorularını cevaplamalarında yardımcı olacağız. Prodüksiyon dünyasında gerçekleştirilen çalışmalara baktığımız zaman en büyük özelliklerinin milyonlarca ABD dolarına mal oldukları ve başarısızlık (projenin bir noktasında durması) riskinin yok denecek kadar az olduğunu görürüz. Hal böyle olunca bu tür yapımlarda kullanılan donanım, yazılım ve render sistemlerini de diğerlerinden ayıran çok özellikler aranmaktadır. Şu anda Nvidia da bulunan Exluna firmasının önemli isimlerinden Larry Gritz ve ekibinden uzmanların kaleme aldıkları Advanced Renderman kitabında bu özellikleri beş başlık altında toplamışlar. 118 BYTE Ocak 2004

Real-time Devrimine Hazır mısınız? Finding Nemo, Pixar ın PR Renderman sisteminin gücünü gösteren film çalışmalarından sadece bir tanesi 1 Gözalıcı Özellikler: CG ile ilgilenen stüdyo ve prodüksiyon firmaları, hep diğerlerinden farklı efekt ve canlandırmalar gerçekleştirerek farklılaşmayı arzu ederler. Bunun için çoğu zaman diğerlerinden farklı, özel yetenekleri sistemlerine eklemeye çalışırlar. Bunu gerçekleştirebilmek için de kullandıkları Render sisteminin bir takım olmazsa olmaz niteliklere sahip olması şarttır. Bu nitelikler arasında en bildik ve güçlü olması gereken özelliklerden biri motionblur (hareket bulanıklığı) etkisidir. Yine çok farklı geometri tiplerine verilecek destek render sistemi için çok önemlidir. NURBS, polygon(subdiv) her zaman yeterli değildir. Gerektiği zaman farklı yapılara destek verilmesi çok önemlidir. Böylece mesela stüdyo farklı bir geometriyi sistemde kullanmak istediğinde, hem bu desteğe ait altyapıyı render sisteminde bulur, hem de sistemin motion blur yeteneğini, bu yeni yapıda kullanabilir. Teknik Yönetmenler ise çeşitli hilelere izin veren sistemleri tercih ederler. Bu hileler, gölgelerden doku kaplamalarına, atmosferik ya da hacimsel etkilere kadar çok değişik olabilir. Buna en güzel örneklerden biri, şu anda çok dikkat çekici bir yöntem olan Subsurface Scattering özelliğinin, gölge elde etmekte kullanılan depth map hilesiyle elde edilmesi verilebilir. Normalde hesaplaması çok uzun süren bu yöntemi, gölge hilesiyle elde etmeyi sağlayan birçok yöntem uygulanmaktadır (PR Renderman için). 2- Esneklik: En önemli prodüksiyon renderer özelliklerinden bir tanesi kontrol edilebilirlik ve programlanabilirliktir. Daha önce belirttiğimiz gibi stüdyolar çoğu zaman daha önceden ihtiyaç duyulmadığı için render sistemine eklenmemiş özelliklere gereksinim duyalar. Her proje farklı sorunlarla, farklı çözümleri üretmeye zorlar. Bu durumda stüdyonun, ihtiyaç duyduğu özellikleri programlayarak render sistemine eklemesi çok önemlidir. Teknik Yönetmenler için istenilen özelliğin karmaşıklığı pek sorun olmasa da kullanılan Render sistemine uygulanabilmesi çok önemlidir. Mesela bir süre önce kullandığımız 3D yazılımlar genelde sabit bir Shading model (Farklı ışık düzeneklerinde, nesnenin ne şekilde görüneceğini belirleyen temel model) sunmaktaydı. Şimdi birçok shading model 3D yazılımlarla sunulmasına rağmen, çeşitli nesneleri görüntülemek için özel shading model tanımlamaları gerekmektedir. Internet te biraz araştırma yaptığınızda Jupiter gibi gazlarla çevrili gezegenlerin shading modeli ile ilgili araştırmalara rastlayabilirsiniz (www.mmedia.is/ ~bjj/3dtest/jup_shading.html). Bu kadar detaya girildiği zaman, her nesne için neredeyse bir temel shading model yerine (mesela Lambertian, Oren&Nayar vb.) yönetmenin tam olarak istediğini, resimden almasını sağlayacak shading model ortaya koyulabilmelidir. Bu durumda kullanılan render sisteminin en basitinden bile olsa bu denli esnek ve programlanabilir olması şarttır. Yine her proje muhakkak fotogerçekçi olacak diye bir kural da yoktur. Daha önceden render sistemleri fotogerçekçiliği hedef olarak belirlemişken, günümüzde artık fotogerçekçi olmayan (NonPhoto- Realistic) render kavramı yer etmiş ve çizgifilm üretiminde artık neredeyse vazgeçilmez olmuştur. Gerektiğinde TY ler gerekli düzenlemeler ve programlarla fotogerçekçi bir renderer ı bu tür sonuçlar doğuracak şekilde programlayabilecek esnekliğe sahip olmalıdır. Kontrol edilebilirlik bir başka önemli unsurdur. Hız/Kalite ve Hız/hafıza oranı gibi oranlar uzun süren prodüksiyon çalışmaları göze alındığında çok önemli olabilmektedir. Bu oranların istendiğinde değiştirilebilmesi büyük avantajlar sağlamaktadır. Özellikle hesaplamalarda çok farklı donanım kullanıldığı göz önüne alındığında şu anda çok ucuz gibi görünen RAM kullanımında büyük etkinlik sağlanabilmektedir. (Genişleme imkanı sınırlı Amiga bilgisayarda render alanlar, LightWave in segment memory miktarını düzenleyebilmesinin ne kadar önemli bir özellik olduğunu çok iyi hatırlayacaklardır.) Real-time shader gücünü gösteren nvidia nın Dawn isimli çalışması. Deri, saç ve kanatlardaki detay ile dikkat çekiyor. 3- Sağlamlık Bir film üretimini ele alalım. Yüzbinlerce resim karesinin hesaplanması gereken bu tür bir çalışmada, test render ları, 2004 Ocak BYTE 119

kompozisyonda kullanılacak farklı katmanların ayrı ayrı hesaplanması gibi birçok koşulda hesaplanacak resim sayısı çok daha artmaktadır. Bu kadar çok render aldığınızda, her zaman doğru ve kesin sonuç elde etmeniz çok önemlidir. Bizler, bazen gerçekleştirdiğimiz çalışmalarda ufak tefek sorunlarla karşılaştığımızda elle düzeltme yoluna gidebilsek de, üretim sürecinde kullanılacak bir render sisteminin şaşmaz olması şarttır. Kesinlikle kilitlenmemeli, sorun çıkarmamalıdır. Bunun yanında prodüksiyon renderer ının herhangi bir limiti olmamalıdır. Kullanılan model sayısında, modeldeki yüzey sayısında, ışık kaynağı sayısında hatta içerdiği bir özelliği diğer yapılara uygulamakta da bir kısıt olmaması gerekir. Mesela MotionBlur özelliğini polygon yapılara uyguladınız, başarılı ama Subdiv de sorun çıkarır, ya da desteklemez gibi sınırlar prodüksiyon renderer ı için kabul edilemez. Bunu şu anda kullandığınız bazı Render sistemlerinde yaşayabilirsiniz. Ama prodüksiyonda bu düşünülemez. 4-Performans: Her filmde hesaplanacak binlerce kare resim olmasına rağmen, üretimde en az para ayrılacak unsur hesaplamayı yapacak bilgisayar sistemi olur. Bu nedenle render için harcanacak hesaplama süresi, kullanılacak hafıza (RAM) miktarı ve sahne verilerinin saklanacağı depolama ünitesi miktarı oldukça düşük olmalıdır. Kullanılan render sistemi çok az donanımla, çok büyük sahnelerin hesaplamasını gerçekleştirebilecek performansı sunabilmelidir. Bu performans kriteri sebebiyle üretim sürecinde Global Illumination (genel aydınlatma, ya da radiosity) kullanılmaz. Performansla ilgili bir kıstasta, teknik yönetmenin, bir sahnede yer alacak nesne, ışık, kaplama vb. unsurları bilmesi durumunda sahnenin ne kadar sürede hesaplanabileceğini tahmin edebilmesidir. Planlama ve programlama çok önemlidir. Zaten çoğunuz üzerinde çalıştığınız projenin bir karesinin ne kadar sürede render edildiğini test edip, toplam render süresini hesaplamanın, projenin tamamlanması için ne kadar önemli olduğunun farkındasınızdır. 5-Resim Kalitesi En önemli ve bildik değerlendirme unsurlarından birisinin elde edilen görüntünün kalitesi olduğunu hemen hemen bilmeyenimiz yoktur. Film üretiminde bu çok daha önemli bir özellik halini alır. Çünkü elde edilen resim üzerindeki en küçük yapı olan 1 piksel bile perdeye yansıtıldığı zaman çok büyük görünür. Milyonlarca insanın izleyeceği bir çalışmada görüntü kalitesi çok daha fazla önem taşır. Yüksek antialias kalitesi, doku, piksel ve shader filtrelemeleri, geometrik yapıların düzgün hesaplanması hep olmazsa olmaz özellikler olarak dikkat çekmektedir. Polygon render larındaki sorunlar, birleşim yerlerindeki yırtıklar, gölge ve ışık problemleri ve doku filtrelerinin hataları kesinlikle kabul edilemez. MentalRay ile hesaplanmış Terminator filminden bir sahne. PR Renderman ve MentalRay Prodüksiyonda kullanılacak render sistemlerinde aranan özellikleri sıraladığımızda, iki render sisteminin diğerlerinden ayrıldığını görüyoruz. Bu iki render sistemi film üretiminde bugün neredeyse standart haline gelmiş Pixar ın PhotoRealistic Renderman ve MentalImages ın MentalRay sistemleridir. Bu iki sistemin göz alıcı güçlü özellikleri, sağlamlığı, esneklik, performans ve elde edilen resim kaliteleri çok başarılıdır ve uzun süren araştırma geliştirme çalışmalarıyla günümüze kadar gelmiştir. Diğer render sistemleri belli özellikleriyle bu iki sistemden daha etkileyici imkanlar sunsalar bile bu sistemlerin en can alıcı özelliği olan esneklik ve kontrol edilebilirliği sunmaları ya da yakalamaları şu anda çok zor görünmektedir. Her iki render sisteminin sahip olduğu shading programlama sistemleri sayesinde, istenilen farklı özellikler kolaylıkla elde edilebilmektedir. Mesela ihtiyaç duyulan özel bir deri yapısıysa, teknik yönetmenler bunu diğer sistemlerden çok daha kolay bir şekilde gerçekleştirip, kullanımı kolay bir şekilde diğer sanatçılara sunabilirler. Yazılarımızı takip eden arkadaşlarımız, bazen bir ejderhanın pullarının elde edilmesinde, bazen bir köpeğin tüylerinde, bazense Gollum un ya da Hulk un derisinde olduğu gibi hep özel shader ların (nesnenin farklı ışık düzeneklerinde nasıl görüneceğini belirleyen programcıklar) yazıldığını çok iyi hatırlayacaklardır. Günümüzde dikkati çeken bir değişim, yapı olarak PR Renderman ve MentalRay ile karşılaştırmanın şimdilik imkansız olduğu, ama bu iki sistemin ve özellikle PR Renderman in esnekliğini kopyalayamaya çalışan real-time sistemler hızlı bir şekilde gelişmektedir. PR Renderman ve MentalRay bilgisayarların merkezi işlem birimini (CPU) kullanırken, bu yeni sistemler bazı işlemlerde CPU dan çok daha hızlı olan GPU (Grafik İşlem Birimi) kullandıklarından çok etkileyici sonuçlar elde edilmesine sebep olmaktadır. Eğer gelişmeler bu şekilde devam ederse Renderman benzeri bir sistemin realtime olarak sonuç üretmesini bekleyebiliriz. İsterseniz şimdide real-time shading, render kavramlarını ve GPU yu inceleyelim. Realtime HDRI ve alan derinliği (DOF) Anında Hesaplama ve GPU Grafik alanındaki en büyük devrimler nelerdir? diye sorulacak olsa, verilecek cevaplardan biri hiç şüphesiz, realtime programlanabilir shader lardır. Programlanabilir shader lar 80 li yıllardan bu yana özellikle Renderman sistemiyle yaygınlaşıp kullanılmaya başlanmış olsa da, günümüzde halkın kullanımına kadar inmiş grafik işlemcili 120 BYTE Ocak 2004

Real-time Devrimine Hazır mısınız? CPU için zor olan, GPU da real-time gerçekleşen, çeşitli shading etkileri. Real-time raytrace denemesi kartların, bunları anında işleyebilmesi çok büyük bir devrim niteliğindedir. Bunu mümkün kılan en büyük gelişmede GPU (Graphic Processing Unit) olarak adlandırılan grafik işlemcilerin geliştirilmesidir. Önceleri CPU yani bilgisayarımızın merkezi işlem birimi tarafından gerçekleştirilen birçok grafik hesaplaması bugün grafik kartlarında yer alan GPU tarafından üstlenilmiştir. GPU ların grafik işlemleri için özel olarak tasarlanmış olması, CPU ya göre çok daha performanslı olarak çalışmalarını sağlarken, yapıları ve saat hızları incelendiğinde CPU lardan geri kalmadığı görülmektedir. Hatta günümüz GPU ları bazı hesaplamalarda Pentium 4 lerden 10 ila 100 kat hızlı hesaplama gerçekleştirebilmektedir. Bazı hız test rekorlarını kırmak isteyen araştırmacıların, GPU lara sahip grafik kartlarının bulunduğu bilgisayarlarla gruplar oluşturup, hız denemeleri yapmaları tesadüf değildir. Veri tabanı sıralamaları gibi işlemleri GPU üzerinden yapmaya çalışan araştırmacılar dahi bulunmaktadır. Bu konuya ilgi duyan okuyucularımızın www.gpgpu.org adresinde yer alan GPU ları grafik işlemler dışında, genel hesaplamalarda kullanmayla ilgili siteyi çok ilgi çekici bulacaklarını düşünüyorum. Siggraph2003 de yayınlanan bazı notların yine GPU programlanmasıyla ilgili farklı uygulamaları içerdiğini unutmamak gerekir. (www.cs.brown.edu/~tor/ sig2003.html) Günümüz GPU ları, grafik işlemede yapılabileceklerin sınırlarını daha da geliştirerek, özellikle 3D olarak adlandırdığımız yapıların hesaplanmasında vertex ve surface yapılarını işleyen özel birimleri bünyelerine kattılar. Böylece GPU kendisine gönderilen geometriyi uzayda ne şekilde dönüştüreceğini ve geometri üzerindeki en küçük noktanın ne şekilde renklendirileceğini belirleyen sistemlere sahip oldu. Fakat GPU nun programlaması da, aynen CPU da olduğu gibi makine dili ya da bir başka ifadeyle en basitinden Assembler ile gerçekleştiriliyordu. 0100111010010110110101 gibi bir diziyi işlemciye anlatmanın kolay yolu Assembler olsa da bunun pek kullanışlı ve anlaşılır olmadığı açıktır. Daha üst seviye programlama dillerinden olan C ise çok daha kullanışlı komutlarla istenilen işlemlerin yerine getirilmesini sağlar. Buna ek olarak hazırladığınız C kodunu, mesela PC için hazırlamışken, aynı kodu Playstation için derlediğinizde Playstation sisteminde çalışacak programı elde etmiş olursunuz. Bu aşamada grafik API lerin kendilerini geliştirmesi, en azından bu API ler için C ye benzeyen daha anlaşılabilir ve güçlü diller geliştirilmesi çok önemliydi ve bu gelişmede çok geçmeden kendini belli etti. OGLSL, HLSL, CG ve RTSL Grafik işlem birimleri, verteks ve piksel shader ları işleyen birimlere sahip olmaları sayesinde vertex shaderları ile nesnelerin yapısını deforme etme, onların yapılarını değiştirme ve temel ışıklandırma/gölge, surface shader ları ile yüzey görünümlerini belirleme işlemleri grafik kartları tarafından gerçekleştirilebilmektedir. Bu mantık Renderman sisteminde de benzer şekildedir ve kullanıcılar hazırladıkları surface, displacement, volumetric yapılardaki shader lar ile nesnelerin istedikleri şekilde renklendirilmesini, görüntülenmesini sağlayabilmektedir. Renderman sisteminde bunu sağlayan Renderman Shading dili oldukça anlaşılır ve kapsamlıdır. Grafik API ler içinde benzer bir yol izlenerek, Renderman in Shanding dili ile CPU ya yaptırdığı hesaplamaları, grafik API ler geliştirilen shading dilleri ile GPU ya yaptırma yolunu tercih ettiler. En bilinen ve kullanılan iki grafik API si olan OpenGL ve DirectX i destekleyen üst seviye programlama dilleri birbiri ardına duyuruldu ve kullanıma sunuldu. Bunlar- 2004 Ocak BYTE 121

Real-time Devrimine Hazır mısınız? dan en bilinenleri, Microsoft ve Nvidia nın birlikte geliştirdikleri, bu nedenle temelde çok farklılıkları olmayan HLSL (High Level Shading Language üst seviye shading dili) ve CG dir (C for graphics grafik için C). Kısaca CPU (bilgisayarın merkezi işlemci birimi) için C dili neyse, CG ve HLSL dilleri de GPU (Grafik İşlemci birimi) için benzer işlemi görmektedir. Bu iki dili birbirinden ayıran ise HLSL nin sadece DirectX i desteklemesine karşın, CG nin DirectX ve OpenGL desteğini sunmasıdır. Böylece CG sadece Microsoft un işletim sisteminde değil, Mac OSX, Linux, Unix gibi farklı platformlarda da kullanılabilmektedir. Bu iki dilin dışında, OpenGL 2 nin kendi shading dili, 3Dlabs ve ATI nin üzerinde durduğu OpenGL için geliştirilen OGLSL (OpenGL Shading Language) ve Stanford Üniversitesi nden bir grup araştırmacının başını çektiği ve renderman benzeri bir sistemi oluşturmaya çalıştıkları RTSL (Stanford Realtime Shading Language) en bilinen real-time shading dilleridir. Bu dillerin ortak özellikleri, grafik işlemcilerini, Assembler dan daha kolay bir şekilde, C benzeri bir üst seviye dil kullanarak programlamak, shader ları kolayca elde etmektir. Bir diğer ortak özellikleri ise GPU bağımsız olmalarıdır. Bir genelleme yaparsak OpenGL için CG, DirectX için HLSL şimdilik ağarlığını kabul ettirmiş diyebiliriz. Fakat rekabet gittikçe kızışmakta, firmalar arasında çok büyük sürtüşme, yaşanmaktadır. Özellikle DirectX i yaygınlaştırmak isteyen Microsoft un, OpenGL in üstünlüğünü sağlayacak olan CG ye ve OpenGL yönünde ağarlığını koyan Nvidia ya çok sıcak bakmadığı söylenebilir. Bu rekabet Nvidia nın Doom3 e, ATI nin Halflife2 oyunlarına verdiği destekle daha da dikkat çekici boyutlara ulaşmıştır. Gelecekte ne olacağını tahmin etmek pek kolay değil ama CG nin çok daha yaygın kullanım alanı bulmasını bekleyebiliriz. Hem Grafik API lerinden OpenGL ve DirectX i desteklerken, aynı zamanda Mac OSX, Unix, Linux, Windows ve diğer oyun platformlarında kullanılabilecek, grafik donanımı konusunda da bir fark gözetmiyor. HLSL ise DirectX için geliştirildiğinden şimdilik Microsoft ve onun ürünlerinde (XBOX2 de ATI kartları kullanılacak ve büyük ihtimalle HLSL nin üstünlüklerinden faydalanılacak) kullanılabilecek kısıtlı bir yapıya sahip. Eğer OpenGL üzerine geliştirme düşünülüyorsa CG, DirectX üzerine geliştirme düşünülüyorsa, CG ya da HLSL tercih edilebilir. Peki tüm bunlar ne anlama geliyor? Ne sağlayacak? Cevap kısaca GPU ları çok daha kolay programlayıp, shader ları kolaylıkla yazabileceğiz. Renderman de bir kişi dinozorun derisi için nasıl shader yazıyorsa, şimdilik Renderman kadar gelişmiş olmasa da GPU lar için bahsettiğimiz shading dilleri kullanarak shader lar (grafik donanımlarında yer alan vertex ve pixel motorlarını kontrol etmemizi sağlayan küçük programcıklar) yazıp, sonucu anında (real-time) Halflife 2:DirectX ve realtime shader ların gücünü gösteren başarılı çalışmalardan birisi görebileceğiz. ToyStory filmi örneğini düşünürsek, bu filmde kullanılan 1300 değişik shader ı, GPU da elde etmek ve aylarca süren render süresi yerine anında sonucu görmek mümkün olabilecek. Çoğu zaman shader ların sadece dokulandırma yetenekleri göz önüne alınarak, shader yerine resim kaplaması kullanarak sonucu alırız, shader lara ne gerek var? diye düşünen arkadaşlarımız olduğunu çok iyi biliyorum. Doku kaplamaları Shader ların altından kalkabilecekleri işlerden sadece bir tanesi ve belki de en basitidir. Ama bu durumda bile shader ların hafızada çok az yer kaplaması, matematiksel olmaları nedeniyle, geniş bir yüzeye uygulandığında tekrarlanmış görünmemesi, değişime kolayca uğratılabilmesi çok büyük avantajdır. Hele shader ların ışık ve çevre ile olan etkileşimde standart resim kaplamasıyla karşılaştırılmayacak üstünlükleri vardır. Sahnenizdeki nesneniz mesela anisotropic shading gerektiriyorsa, standart isotropic yaklaşımın işe yaramadığı birçok durumda bunu kaplamalarla gideremezsiniz. Real-time shader ile tüm bu yükün CPU dan alınıp GPU tarafından gerçekleştirilmesi çok büyük performans artışı demektir. Şu anda yurtdışındaki birçok üniversite, bu büyük devrimin heyecanı ile bu konuda araştırma yapmaktadır. Yakın bir gelecekte yaşanan değişimi çok daha iyi fark edeceğiz. Fakat çok uzağa gitmemize de gerek yok. Halflife2 ve Doom3 oyunlarının grafikleri sizlere GPU ve realtime shading in gücünü gösteren ilk örnekler olacaktır. Kullandığımız 3D yazılımlar da bu değişimden etkilenmiştir. Realtime shading etkileri ve donanım hesaplaması (hardware rendering) sayesinde 3D sahneyi düzenlerken, modellerken ya da hazırladığınız bir efektin ya da uygulayacağınız bir materyalin etkilerini realtime olarak görebilirsiniz. Özellikle ışıklandırma ve etkilerinin elde edilmesinde bu çok önemlidir. Özellikle oyun sektörüne çalışan sanatçılar, oyunda kullanılacak shader ları direkt olarak 3D yazılımda deneyip kullanabilirler. SoftImage XSI ve 3DSMAX in bu konuda çok ileri çözümleri bulunmaktadır ve Alias Maya ile diğer 3D yazılımlar realtime shader ları kullanabilmenizi sağlayacak özellikler içermektedir. Son olarak gözlerden belki de kaçan, Nvidia nın en büyük hamlelerinden birine dikkatinizi çekmek istiyorum. O dönemde Pixar ın Renderman sisteminde bile olmayan Global Illumination ve Raytrace özelliklerini destekleyen bu renderer lar, oldukça başarılıydı. Bu yazılımları geliştiren ekip ve özellikle Renderman sistemi konusunda yetkin isimlerden olan Larry Gritz Exluna ekibinin Nvidia da şu anda CG ve cinefx olarak adlandırılan sistem üzerinde çalışması bu sistemin hedefinin ne olduğunu bence açıkça ortaya koyuyor. Realtime raytracing, GPU üzerinden radiosity, realtime HDRI gibi örnekleri görmeye başladığımız günümüzde, geleceğin bir çok yeniliğe gebe olduğunu söyleyebiliriz... Gökhan Sönmez BYTE Türkiye nin yazarlarındandır. Kendisine gsonmez@byte.com.tr adresinden ulaşabilirsiniz. 122 BYTE Ocak 2004