İçeriğe atla

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

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

Veri Tipleri

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

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

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">C (programlama dili)</span> programlama dili

C, yapısal bir programlama dilidir. Bell Laboratuvarları'nda, Ken Thompson ve Dennis Ritchie tarafından UNIX işletim sistemini geliştirebilmek amacıyla B dilinden türetilmiştir. Geliştirilme tarihi 1972 olmasına rağmen yaygınlaşması Brian Kernighan ve Dennis M. Ritchie tarafından yayımlanan "C Programlama Dili" kitabından sonra hızlanmıştır. Günümüzde neredeyse tüm işletim sistemlerinin yapımında %95'lere varan oranda kullanılmış, hâlen daha sistem, sürücü yazılımı, işletim sistemi modülleri ve hız gereken her yerde kullanılan oldukça yaygın ve sınırları belirsiz oldukça keskin bir dildir. Keskinliği, programcıya sonsuz özgürlüğün yanında çok büyük hatalar yapabilme olanağı sağlamasıdır. Programlamanın gelişim süreciyle beraber programlamanın karmaşıklaşması, gereksinimlerin artması ile uygulama programlarında nesne yönelimliliğin ortaya çıkmasından sonra C programcıları büyük ölçüde nesne yönelimliliği destekleyen C++ diline geçmişlerdir.

<span class="mw-page-title-main">C++</span> bir programlama dili

C++, Bjarne Stroustrup tarafından 1979 yılında Bell Laboratuvarları'nda geliştirilmeye başlanmış, C'yi kapsayan ve çok paradigmalı, yaygın olarak kullanılan, genel amaçlı bir programlama dilidir.

<span class="mw-page-title-main">DirectX</span>

DirectX, Microsoft'un video oyunları başta olmak üzere çoklu ortam yazılımlarını rahat, hızlı ve uyumlu şekilde hazırlayabilmek için yarattığı bir uygulama programlama arayüzüdür (API). Şu andaki en güncel resmî sürüm DirectX 12'dir. İçerdiği bileşenlerden bazıları şu şekilde özetlenebilir:

<span class="mw-page-title-main">Web sayfası</span> World Wide Web ve web tarayıcıları aracılığıyla doğrudan görüntülenebilen tek belge

Web sayfası, World Wide Web için hazırlanan ve web tarayıcısı kullanılarak görüntülenebilen dokümanlardır. Web sayfaları çoğunlukla HTML formatında kodlanır, CSS, betik, görsel ve diğer yardımcı kaynaklardan yararlanılarak son görünümüne sahip olur ve işlevsellik kazanır. Birden fazla web sayfasının bir araya gelmesi ile ortaya çıkan web sitesi ile karıştırılmamalıdır. Günlük konuşma dilinde internet sayfası terimi de çoğunlukla web sitesi anlamında kullanılmaktadır.

X3D açık ISO standartlarına sahip, XML tabanlı 3B dosya biçimidir. 3B Verinin tüm uygulamalarda ve ağ uygulamaları üzerinde gerçek zamanlı iletişimini sağlar. Mühendislik, bilimsel görselleştirme, BDT ve mimari, tıbbi görselleştirme, eğitim ve benzeştirim (simülasyon), çokluortam, eğlence, eğitim vb. birçok alanda kullanılabilecek zengin özelliklere sahiptir. Web3D konsorsiyumu tarafından geliştirilmektedir. Sanal Gerçeklik Modelleme Dili'nin (VRML) gelişmiş halidir.

<span class="mw-page-title-main">FreeDOS</span>

FreeDOS, Microsoft'un 1999'da MS-DOS'u geliştirmeyi durdurması üzerine serbest DOS'u yaşatmak için doğmuş GNU Genel Kamu Lisansı kapsamında açık kaynaklı gelişmiş bir DOS tabanlı işletim sistemidir. Amacı DOS ile %100 uyumlu olmaktır ve bu hedefe neredeyse tümüyle ulaşılmıştır. Bu işletim sistemi ile yine açık kaynaklı Arachne web tarayıcısını kullanarak, çok eski bilgisayarlar ile internete bağlanmak mümkündür.

Nvidia Corporation Santa Clara, Kaliforniya merkezli bir teknoloji şirketidir. Oyunculara yönelik grafik işlemciler (GPU), ayrıca mobil cihazlar ve otomotiv pazarı için yongada sistemler (SoC) üretir. Şirketin ana grafik işlemci ürünleri ailesi olan GeForce, AMD'nin Radeon ürünlerinin doğrudan rakibidir. Nvidia, oyun endüstrisindeki varlığını SHIELD Portable, SHIELD Tablet ve SHIELD Android TV ürünleriyle genişletmiştir.

<span class="mw-page-title-main">Assembly</span> uygulanan işlemlerle programlama dilinin birbirine çok yakın olduğu düşük seviye programlama dilleri

Assembly dili, bir işlemcinin komut kümesi üzerine tanımlanmış alt seviye bir dildir. Assembly dili kolay hatırlanabilir semboller tanımlar ve böylece işlemcinin makina koduna karşılık gelen sayı dizilerinin bilinmesine gerek kalmaz. Assembly dili, platformdan bağımsız yüksek seviyeli programlama dillerinin aksine, işlemci mimarisine bağımlıdır. Tipik uygulamaları; cihaz sürücüleri, alt seviyeli dahili (embedded) ve gerçek zamanlı sistemlerdir. Bır assembly programı assembler kullanılarak makine koduna çevrilir.

<span class="mw-page-title-main">OpenGL</span> grafik uygulama geliştirme arabirimi

OpenGL, gelişmiş donanım desteğini kullanarak hem iki hem de üç boyutlu grafikleri ekrana çizmek için kullanılan ücretsiz bir grafik uygulama geliştirme arabirimidir. Windows, Linux, MacOS ve Solaris gibi birçok işletim sisteminde yaygın olarak ve Playstation 3 başta olmak üzere bazı oyun konsollarınca desteklenir. Donanım tarafında ise SGI, ATI, Nvidia veya Intel gibi büyük üreticiler her ekran kartında OpenGL desteği sunar.

CUDA, GPU için NVIDIA'nın sunduğu C programlama dili üzerinde eklenti olarak kullanıma sunulan bir mimari ve teknolojidir.

GLSL, C tabanlı yüksek seviye bir programlama dilidir.OpenGL ARB tarafından,geliştiricilerin grafik işhattına assembly veya donanım-bağımlı bir dil bilmeden direkt erişim sağlaması için yaratılmıştır.

Oyun programlama, oyun geliştirme işleminin bir alt konusudur. Profesyonel bir oyun için birçok nitelik ve yazılım bilgisi gerekir. Bunlar Yapay Zeka, veritabanı, fizik, ses programlama, simülasyon, modelleme ve grafiktir. Yeni çıkan bazı ücretsiz oyun motorlarıyla oyun yapmak çok kolay olmuştur.

Karesel gölgelendirme anlamına gelen Pixel Shader DirectX 9 ve üzeri oyun grafik kütüphanesinde bulunan grafik işleme komut fonksiyonudur. Yeni nesil olarak tanımlanan birçok oyunda bu özellik şartı aranıldığı için bir önceki nesil ekran görüntü kartları bu özelliği desteklemediği için birçok oyun yazılımı çalışmama durumu yaşanmaktadır.

<span class="mw-page-title-main">Unreal Engine</span> video oyunu motoru

Unreal Engine, Epic Games tarafından geliştirilen ve ilk olarak 1998 yılında yayınlanan Unreal isimli birinci şahıs nişancı oyununda kullanılan oyun motoru. Esas olarak birinci şahıs nişancı oyunları için geliştirilmesine karşın, sonraları çeşitli türlerdeki oyunlarda kullanıldı. C++ ile yazılmış kodu sayesinde yüksek derecede taşınabilirliğe sahiptir ve günümüzde birçok oyun geliştirici tarafından kullanılan bir araç haline gelmiştir.

<span class="mw-page-title-main">WebGL</span>

WebGL, kâr amacı gütmeyen teknoloji şirketler birliği Khronos Group tarafından yönetilen, web ortamında 3 boyutlu grafik çizimi sağlanmasını amaçlayan bir web standardıdır. OpenGL ES 2.0 üzerine temellendirilmiştir, otomatik hafıza yönetimli JavaScript gibi dillere uyum sağlaması için küçük değişikliklere uğramış olsa da WebGL OpenGL ES'ten çok da farklı değildir. Uyumlu web tarayıcısında herhangi bir eklenti kurulmasını gerektirmeden, HTML5'in Canvas elementi üzerinde 3 boyutlu grafik çizimi yapılmasını mümkün kılmaktadır.

<span class="mw-page-title-main">OpenCL</span>

OpenCL,, Apple tarafından 2008 yılında kâr amacı gütmeyen teknoloji şirketleri birliği Khronos Group'a önerilen, kabul gördükten sonra spesifikasyonu pek çok şirketin katkılarıyla hazırlanan heterojen hesaplama platformudur. OpenCL; destekli grafik işlemcileri, genel amaçlı işlemciler ve FPGA ler gibi farklı platformlarda hesaplama yapılmasına olanak sağlar. OpenCL AMD, Intel, NVIDIA ve ARM tarafından desteklenmektedir. Ayrıca OpenCL kullanılarak Sony Playstation cihazlarında kullanılan Cell işlemcilerde de hesaplama yapılabilmektedir.

<span class="mw-page-title-main">Yazılım motoru</span> bilgisayar programının merkezi kısmı

Yazılım motoru, bilgisayar biliminde bir yazılımın altyapısı, temeli anlamına gelir. Yazılım motorları programı çalıştırabilmek için de kullanılmaktadır. Bu yazılımlar diğer programlardan farklıdır. Bir programın içerisinde çalışırlar veya bir bütün oluştururlar. Yazılım motorları bir tarayıcının içerisinde JavaScript motoru veya bir oyun motoru gibi çeşitli türlere sahiptirler. Web tarayıcısı içerisinde de JavaScript, AJAX gibi dillerde yazılmış eklentilerin çalışmasını sağlarlar.

GLFW, temelde ve ilk olarak OpenGL ile kullanılmak üzere geliştirilmiş hafif bir yardımcı kütüphanedir. Programcıya, üzerinde çalışılan işletim sisteminden bağımsız olarak OpenGL ve Vulkan için 'context' ve pencere yaratma, klavye, fare, oyun çubuğu girdi ve çıktılarını yönetme kolaylığı sağlar.

Dart, ilk kez Google tarafından geliştirilen ve daha sonraları ECMA tarafından standart (ECMA-408) haline getirilen açık kaynaklı ve genel-amaçlı bir programlama dilidir. Dart dili kullanılarak web, sunucu, mobil uygulamalar ve IoT cihazları geliştirilebilir.

<span class="mw-page-title-main">Metal API</span> IOS,macOS and tvOS grafik render uygulama programlama arayüzüdür

Metal API iOS 8-de tanıtılan düşük seviyeli, düşük-havai donanım hızlandırmalı grafik ve bilgisayar uygulama programlama arayüzüdür (API). Bu, bir API altında OpenGL ve OpenCLe benzer işlevselliğini birleştirir. Metal API IOS-a diğer platformlarda benzer API'lerin performans yararlarından bazılarını getirmek için tasarlanmıştır. Metal, 2 Haziran 2014 yılından beri Apple A7 ya da sonrasını kullanan iOS cihazlarında ve 8 Haziran 2015'ten beri OS X El Capitan çalıştıran Mac'lar üzerinde mevcuttur. Metal daha da işlem shaderi getirerek GPGPU programlama yeteneklerini geliştirdi. Metal C++11 dayalı yeni bir gölgeleme dili kullanır; Bu Clang ve LLVM kullanılarak uygulanır. OS X'da Metal desteği WWDC 2015'te açıklandı.