Kaynak İşlevi – Analizi Yaptırma Fiyatları – Yazılım Analizi Örnekleri – Ücretli Analizi Yaptırma – Ücretli Yazılım Yaptırma
Kaynak İşlevi
Aydınlatma, sahne oluşturmanın kritik bir bileşenidir. Bu olmadan, ortaya çıkan görüntü, verdiğimiz kırmızı çaydanlık örneği gibi düz görünür. Önceki örneğin gösterdiği gibi, dokuların uygulanması bile bir nesnenin derinliğini ortaya çıkarmaya pek yardımcı olmaz. Örneğin, nispeten basit yönlü bir ışık kaynağı simüle edip çaydanlığa uyguluyoruz.
Yönlü bir ışık kaynağı, ışık kaynağından gelen ışınların paralel olması için sonsuz uzaklıkta olduğu düşünülen bir kaynaktır. Aydınlatma hesaplamalarımız fragman gölgelendiricide yapılacak ve ışık ve malzeme özelliklerinin yanı sıra her fragmanda bir normal vektör gerektirecektir. Bu, vertex shader’da aşağıdaki gibi değişen bir değişken kullanılarak kurulur.
glutSolidTeapot işlevi, her köşe için uygun şekilde yüzey normalleri sağlar. Bu, gl_Normal özniteliği aracılığıyla köşe gölgelendiricimize iletilir. Bunu, OpenGL tarafından kurulan birörnek değişken olan gl_NormalMatrix’i kullanarak dünya koordinatlarına dönüştürüyoruz ve değişen bir değişkende saklıyoruz. Bu, grafik donanımı tarafından enterpole edilecektir. Fragman gölgelendiricimizde aşağıdaki gibi kullanacağız.
Fragment shader’ımızda, önce her ikisi de yüzey normalinden ve ışık yönünden bağımsız olan emisyon ve ortam ışığı bileşenlerini hesaplıyoruz.
gl_MaterialFront, ön yarış poligonlarının malzeme özelliklerini tanımlayan tek biçimli bir değişken veri yapısıdır. gl_LightSource, yapılandırılan ışıklar hakkında bilgi içeren başka bir tek biçimli değişkendir. Bunların her ikisi de programımızda sağladığımız bilgiler kullanılarak OpenGL tarafından otomatik olarak kurulur.
Vektör değerlerinin enterpolasyonu vektör uzunluğunu korumadığından, gl_LightSource[0].position ile verilen ışık yönü ile iç çarpımı hesaplamadan önce yüzey normalini normalleştirmemiz gerektiğine dikkat edin. Parça ışık kaynağına bakıyorsa (pozitif bir nokta çarpımı ile temsil edilir), bu durumda ışık, son renge dağınık ve aynasal bileşenler katacaktır.
OpenGL spesifikasyonu, yayılan ışık katkısını, malzeme yayılma özelliklerinin, ışık kaynağı yayılma bileşeninin ve yüzey normali ile ışık yönünün nokta çarpımının ürünü olarak tanımlar.
Speküler ışık katkısı, malzemenin speküler özelliklerinin, ışık kaynağının speküler bileşeninin ve yüzey normali ile parlaklığın gücüne yükseltilmiş hafif yarı vektörünün nokta çarpımı olarak tanımlanır.
Yarım vektör, OpenGL tarafından otomatik olarak hesaplanan, göz yönü ile ışık yönü arasında bir yöne sahip bir vektördür. Normalize, dot, max ve pow işlevleri OpenGL gölgelendirme dilinde yerleşiktir.
Öncelikle, aydınlatmayı ve özellikle 0 numaralı ışığı etkinleştirmeliyiz. Ardından, ortam, ayna ve dağınık ışık bileşenlerini yapılandırır ve ışık kaynağı konumunu ayarlarız. Bunu yönlü bir ışık kaynağı olarak ele aldığımız için, konum aslında bir ışık yönü olarak ele alınacaktır.
Ardından, ortam, aynasal ve yayılma özellikleri dahil olmak üzere malzeme özelliklerini ve emisyon özelliklerini yapılandırıyoruz. Son olarak çaydanlığı yapıyoruz. Bu gölgelendirici programının sonuçlarını gösterir.
Gelişmiş Gölgelendirici Teknikleri
Şimdiye kadar, normal işleme sürecinde gölgelendiricilerin nasıl kullanılabileceğini gösterdik. Şimdi gölgelendiricilerin görüntü işleme sonrası tekniğine nasıl uygulanabileceğine bir göz atacağız.
Son işlemede, sahne önce işlenir ve ardından bir dokuda yakalanır. Bu doku daha sonra keskinleştirme, bulanıklaştırma, kontrast geliştirme vb. gibi istenen bir efekti elde etmek için özelleştirilmiş bir gölgelendirici kullanılarak işlenir.
Sahneyi oluşturduktan sonra, son işlemedeki bir sonraki adım görüntüyü yakalamaktır. İlk olarak, görüntünün saklanacağı bir doku yapılandırmalıyız.
İletişimde kaynak Nedir
İletişimde kanal nedir
İletişimde kodlama nedir
İletişimde alıcı Nedir
Kod açma Nedir
İletişimde mesaj Nedir
İletişim süreci Nedir
Kodlama kod açma örnekleri
Artık çerçeve arabelleğini yakaladığımıza göre, onu bir gölgelendirici kullanarak işlemenin bir yoluna ihtiyacımız var. Bunu yapmak için, yakalanan çerçeve arabellek dokusunu kullanarak dokulu, dörtgen hizalı bir ekran oluşturuyoruz. Dörtgen tüm ekranı kapladığından, parça gölgelendiricimiz her piksel için bir kez çalıştırılacaktır. Dörtgen oluşturma görevini basitleştirmek için ortografik bir izdüşüm kullanıyoruz.
Halihazırda, bu program çerçeve arabelleğini yakalar, ardından onu tüm ekranı kaplayan bir çokgen üzerine işler ve sonuç olarak öncekiyle tamamen aynı görünen bir görüntü elde edilir. Şimdi ihtiyacımız olan şey, görüntüyü bir şekilde değiştirmek için bir işlem sonrası gölgelendirici. Aşağıdaki parça gölgelendirici, rgb bileşenlerini basitçe 1/10’uncu birimlere ayırır.
Floor işlevi, renk vektörünün ayrı ayrı bileşenlerini en yakın tamsayı değerine yuvarlar. Çaydanlık tekstüre etme örneğinde yaptığımız gibi tek tip örnek değişken çerçevesini yapılandırmamız gerektiğine dikkat edin. Bu, dörtgeni oluşturmadan önce yapılmalıdır.
Derinlik Tabanlı Doku İşleme
OpenGL bize sadece çerçeve arabelleğini bir doku olarak değil, aynı zamanda derinlik arabelleğini de yakalama yetenekleri sağlar. Bu, sis efekti eklemek gibi bir tür derinliğe dayalı görüntü son işleme uygulamak istiyorsak yararlı olabilir. Derinlik arabelleğini yakalamak için önce bir doku yapılandırmalıyız.
Çerçeve arabelleğini yakalamak için kullanılan dokuda olduğu gibi, bunun yalnızca bir kez yapılması gerekir. Derinlik tamponu, sahne aşağıdaki gibi oluşturulduktan sonra yakalanabilir.
Derinlik dokusunun etkili bir şekilde gri tonlamalı bir doku olduğuna dikkat edin, bu nedenle ona kırmızı, yeşil veya mavi bileşeni kullanarak erişmemizin bir önemi yoktur. Daha sonra aynı değere sahip olacaklar. Ayrıca derinlik dokusunu yapılandırmak için programımızda birkaç satır koda ihtiyacımız var.
Derinlik dokularını aktif doku 1 olarak yapılandırdığımız için bu değer 1’dir. Derinlik tamponunun bir görünümünü gösterir.
Derinlik arabelleği hakkında dikkat edilmesi gereken önemli bir nokta, projeksiyon matrisi tarafından dönüştürüldükten sonra değerlerin doğrusal olmamasıdır. Derinlik tamponundan faydalanmak istiyorsak, tampondaki değerleri gerçek dünya derinlik değerlerine dönüştürebilmeliyiz. Neyse ki, bir tepe noktasının standart izdüşüm matrisiyle nasıl çarpıldığına bakarsak, bu nispeten kolaydır.
Burada n, f, t, l, b ve r sırasıyla yakın, uzak, üst, sol, alt ve sağ kırpma düzlemleridir. Derinlik arabelleğine giren değer, yakın kırpma düzleminde -1 değerine ve uzak kırpma düzleminde +1 değerine sahip olan z’/w’ değeridir. Ancak, değer önce 0 ila 1 aralığında normalize edilir.
İletişim süreci Nedir İletişimde alıcı Nedir İletişimde kanal nedir İletişimde kaynak Nedir İletişimde kodlama nedir İletişimde mesaj Nedir Kod açma Nedir Kodlama kod açma örnekleri