Cg
Cg (veya C for Graphics) Nvidia tarafından Microsoft la yakın işbirliği ile, tepe ve nokta tarayıcıları programlayabilmek için geliştirilen yüksek seviye bir tarayıcı dilidir. Microsoft un HLSL sine benzer. Cg C tabanlı olması ve aynı söz dizilimini kullanmasına rağmen,C nin bazı özellikleri düzenlenmiş, renk ve normal gibi yeni veri tipleri eklenmiştir.
Bu dil sadece GPU programlamak içindir ve genel amaçlı bir programlama dili değildir. Cg derleyiciler DirectX ve OpenGL tarayıcı programları oluşturabilirler.
Geçmişi
[değiştir | kaynağı değiştir]Grafik kartlarındaki teknik gelişmelerle beraber,3D grafik programlamanın bazı alanları tamamen karmaşık bir hal aldı. Bunu basitleştirmek için, kartlara tepe ve nokta tarayıcıları kullanarak grafik yaratım iş hattını düzenleyebilecek özellikler eklendi. İlk başlarda, tarayıcılar çok düşük seviyede GPU'nun assembly sini kullanarak programlandı. Bu programcıya tüm kod üzerinde kontrol ve esneklik kazandırdıysa da, açıkçası kullanımı zordu. Taşınabilir ve daha yüksek seviye bir dile ihtiyaç vardı ve bununla başa çıkabilmek ve tarayıcı geliştirmeyi daha basit kılabilmek için Cg dili yaratıldı.
Assembly yerine Cg dilini kullanmanın bazı faydaları
- Yüksek seviye kodu öğrenmek, okumak ve anlamak daha kolay.
- Cg kodları birçok donanım ve platform arasında taşınabilir. Assembly ise yazıldığı platform ve donanıma bağımlıdır.
- Cg derleyici kodu optimize edebilir ve düşük seviye işleri otomatik yapabilir.
Detaylar
[değiştir | kaynağı değiştir]Veri Tipleri
[değiştir | kaynağı değiştir]Cg 6 temel veri yapısına sahip ki bazıları C deki tiplerle aynıyken bazıları ise GPU programlamak için özellikle eklenmiş.
- float-32 bitlik kayan nokta sayısı
- half- 16 bitlik kayan nokta sayısı
- int- 32 bitlik tam sayı
- fixed - 12 bitlik sabit nokta sayısı
- bool - boolean değişkeni
- sampler -doku nesnesini temsil eder
Cg ayrıca float3 ve float4 gibi vector,matrix veri tiplerinin de içerir. Bu tip nesneler 3D programlarken çok yaygındır. Cg C deki haliyle çalışan struct ve array tiplerini de içerir.
Operatörler
[değiştir | kaynağı değiştir]Cg C deki aritmetik operatörler, vector ve matrix tipleri için aritmetik operatörler ve mantıksal operatörler gibi birçok operatörü içerir.
Dış bağlantılar
[değiştir | kaynağı değiştir]- 2 sayfada Cg 5 Ekim 2018 tarihinde Wayback Machine sitesinde arşivlendi.
- Nvidia 3 Temmuz 2013 tarihinde Wayback Machine sitesinde arşivlendi.
- Cg SSS 17 Haziran 2008 tarihinde Wayback Machine sitesinde arşivlendi.
- Cg AnaSayfası 24 Şubat 2007 tarihinde Wayback Machine sitesinde arşivlendi.
- Geliştirici Forumları 10 Ağustos 2008 tarihinde Wayback Machine sitesinde arşivlendi.
- OpenGL Ana Sayfası 26 Şubat 2011 tarihinde Wayback Machine sitesinde arşivlendi.
- DirectX Ana Sayfası 6 Mart 2006 tarihinde Wayback Machine sitesinde arşivlendi.
- NeHe Cg tepe tarayıcı dersleri
- ShaderTech - GPU Programlama