Thread overview
Rendering Nedir?
Apr 28, 2020
İbrahim
Apr 28, 2020
kerdemdemir
April 28, 2020

Merhaba; Hayırlı Ramazanlar.

Bilgisayar grafiği veya bununla alakalı alanlarla ilgilenen (mesela oyun programlama) kimselerin sıkça duyduğu bir kavram var: RENDER ve RENDERING.
Bu kavramın ne olduğu konusunda biraz araştırma yapınca Wikipedia'da ise şöyle anlatıldığını gördüm:

"Rendering, bigisayar yazılımları kullanılarak 2 boyutlu veya 3 boyutlu modellerin foto-gerçekçi (photorealistic) veya foto-gerçekdışı (non-photorealistic) şekilde görüntülerini oluşturma işlemidir."

Kısaca bu kavramı 2D veya 3D görüntüyü oluşturmak diye anladım. Fakat benim kafamda oturmayan şey şu ki mesela bir resim eğer PNG formatında elimizde varsa ve biz de bunu ekranda göstermek istiyorsak herhangi bir hesaplama yapmamıza gerek olmuyor. Mesela 5x5 resim şöyle olsun:

https://i.hizliresim.com/TArETY.png

Burada zaten bu resmi biz grafik programıyla yapıp PNG olarak kaydetmişiz. Ekrana çizdirirken de mavi pikselleri çizdiriyoruz. Mavi piksellerin koordinatları:

(0,0), (0,4), (1,1), (1,3), (2,2), (3,1), (3,3), (4,0), (4,4)

Ekrana çizdirmek için sözde kod şöyle:

for (x = 0; x < img.width; x++)
 for (y = 0; y < img.height; y++)
   piksel_ciz(x, y, piksel_rengi(img, x, y))

Şimdi bu kodun çalışma hızı resmin boyutunun ne kadar büyük olduğuyla alakalı. Bu olaya da rendering mi deniyor? Rendering görüntüyü ekrana çizdirmek mi demektir (hemen yukarıdaki sözde kodda olduğu gibi) yoksa ışıklandırma, gölge vs. anlık değişimlerin matematiksel olarak hesaplanması işlemi midir? Ekrana çizdirmek için matematiksel hesaplara gerek olmuyor çünkü zaten resim elimizde hazır, sadece pikselleri tek tek dolaşıp ekrana çizdirmemiz lazım. Rendering tam olarak hangi olaya deniyor?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 28, 2020

Bilgisayar grafikleri apayrı bir dünya. Biz elimizdeki data'yı çizdirmek istediğimizde "graphical pipeline" dediğimiz bir sürü işlemden geçiyor. Bunlarda bir kaçına örnek vericek olursam "Kamera transformları", "Clipping", "Shading", "Z test" türkçeleri bilmiyorun kusuruma bakmayın(http://www.songho.ca/opengl/gl_pipeline.html). CPU'dan GPU'ya veri aktarmak bizim görevimimiz ama bu olgunlaşmış algoritmalar "pipeline" ' da gerçekleştiriliyor. Pipeline'da uygulanan bu işlemlerin tümüne "rendering" deniyor.

Yani bir API kullanıyorsan önce CPU'dan GPU ya verini geçersin. İşte normallerini, vertexlerini, renklerini ,opsiyonlarını sonra API'ın Render diye bir fonksiyonu olur senin verdiğin data ile yukarda bahsettiğim işlemleri gerçekleştirerek datanın 2 boyutlu ekrana basılması sağlar(veya Framebuffer dediğimiz bir buffer'a).

Bu işin içinde 4-5 senedir olan biri olarak "render" teriminden benim anladığım bu umarım açıklayıcı olmuştur.

Alıntı:

>

Rendering görüntüyü ekrana çizdirmek mi demektir (hemen yukarıdaki sözde kodda olduğu gibi) yoksa ışıklandırma, gölge vs. anlık değişimlerin matematiksel olarak hesaplanması işlemi midir?

Rendering ışıklandırma+gölge+3D-2D transformaları+Clipping+Depth Test+Stencil Test vs... 'nin hepsidir.

Pixelleri teker teker dolaşıp çizdirmek bence rendering değildir çünkü yukarda bahsettiğimiz "pipeline" yoktur. Umarım yanlış bilgi vermiyorumdur.

Erdem

Not: Ben "değildir", "böyledir","budur" gibi cümleler pek sevmem ama yazı uzamasın diye kullandım. Lütfen hepsinin önünde "bence değildir", "bence böyledir" gibi algıla. Ve her cümleden şüphe etmeye devam et.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 28, 2020

Bence doğru anlıyorsun. Resmin piksellerin basitçe bire bir kullanımını sağlayan bir düzende saklanmış olması olayın rendering olmadığını göstermez. Yine de rendering...

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]