Nokta Piksel Aydınlatma – Analizi Yaptırma Fiyatları – Yazılım Analizi Örnekleri – Ücretli Analizi Yaptırma – Ücretli Yazılım Yaptırma
Gölgelendiricilerde Aydınlatma
Şimdi Example02.fx efekt dosyasını açıklayacağız. Gerçek piksel aydınlatması, gölgelendiriciler kullanılarak dosyada yapılır. Vertex shader girdisi, vertex pozisyonunu ve normali içerir. Köşe gölgelendiricide, grafik boru hattında daha fazla işlem yapmak üzere köşe konumunu dönüştürmek için dünya, görünüm ve projeksiyon matrislerini kullanırız.
Aydınlatma yapmak için, tepe konumu ve normali de dünya uzayına dönüştürüyoruz; bunlar, dünya dönüşümünden sonra ancak görünümden önce basitçe tepe konumu ve normaldir.
dönüşüm.
Tepe noktası dünya konumunu ve normali piksel gölgelendiriciye geçirmek için TEXCOORD0 ve TEXCOORD1 kullanıyoruz. Gölgelendirici giriş yapıları ve köşe gölgelendirici aşağıda listelenmiştir.
Yönlü Piksel Aydınlatma
Yönlü piksel aydınlatma, aydınlatma kaynağının sonsuzda sabit bir yön olduğunu varsayar. Direct3D işlem hattı, piksel normalleri oluşturmak için köşe gölgelendiricisinden köşe normallerini otomatik olarak enterpolasyon yapar. Piksel gölgelendiricide, nihai aydınlatma sonucu için tüm ışık kaynaklarının dağınık bileşenlerini bir araya getiriyoruz.
Yukarıdaki kodda, dot() işlevi, HLSL’nin içsel bir işlevidir. İşlev, iki giriş vektörünün iç çarpımını hesaplar. Saturate() işlevi, HLSL’nin başka bir içsel işlevidir. Giriş değerini 0 ila 1 aralığına sıkıştırır.
Speküler Özellikli Yönlü Piksel Işığı
Işık yönü ile yüzey normali arasındaki kosinüs 0’dan büyükse aynasal bileşeni hesaplarız.
Yukarıdaki kodda, Reflect() işlevi, giren bir ışın yönü ve bir yüzey normali kullanarak bir yansıma vektörü döndüren gerçek bir HLSL işlevidir. pow() işlevi ayrıca, belirtilen değeri belirtilen güce yükseltilmiş olarak döndüren içsel bir işlevdir.
Direct3D’de yansıma vektörü, R = L–2N(L•N) formülü kullanılarak hesaplanır, dolayısıyla yansıma vektörünü hesaplamak için ters ışık yönünü kullanırız. Son olarak, nihai aydınlatma efektini oluşturmak için yansıma bileşenini dağınık bileşene ekliyoruz. Bir anlık görüntü gösterilir.
Nokta Piksel Aydınlatma
Burada ışık kaynağının dünya uzayında bir konumda yerel olduğunu varsayıyoruz. Nokta ışık yoğunluğunu hesaplamak için her piksel için ışık yönünü hesaplıyoruz. Piksel gölgelendiricide, geçerli piksel için ışık yönünü depolamak üzere yerel lightDir değişkenini kullanırız. Yerel ışık yönü, ışık konumundan pikselin dünya alanı konumuna kadar olan vektördür. Ayrıca, ışık kaynağı zayıflama hesaplamaları için geçerli pikselden her bir ışık kaynağına olan mesafeyi dist yerel değişkeninde saklarız.
Burada k0 sabit zayıflamadır, k1 doğrusal zayıflamadır, k2 ikinci dereceden zayıflamadır ve d ışık kaynağı konumundan piksele olan mesafedir. Piksel gölgelendiricide zayıflama parametrelerini aşağıdaki gibi tanımlarız.
Çalışma zamanında farklı zayıflama parametreleri kullanmak mümkündür. Bunu yapmak için zayıflama parametreleri için daha fazla genel değişken eklememiz ve çalışma zamanında ardışık düzene farklı değerler iletmemiz gerekir. Son olarak, noktasal aydınlatma için her bir ışık kaynağının dağınık rengine zayıflamayı çarpıyoruz. Nokta piksel aydınlatmasının anlık görüntüsü gösterilir.
Speküler ile Nokta Piksel Aydınlatma
Yönlü aydınlatmaya benzer şekilde, aynasal bileşeni, ışık yansıma vektörü ile göze bakan vektör arasındaki kosinüsü temel alarak hesaplarız. Speküler bileşeni hesaplamak için global değişken g_lightDirections yerine yerel ışık yönü değişkeni lightDir’i kullanırız.
30 mm pixel Led
Ultra ince Şerit LED
Power Led Driver
Econa Led Driver 36W
1 Watt Led Sürücü
LED Sürücü Devresi
Led Driver 25-36W
3W Power Led Sürücü
Spot Piksel Aydınlatma
Nokta aydınlatma ile karşılaştırıldığında, bir spot aydınlatmanın üç yeni özelliği vardır: ışık konisinin eksenini temsil eden bir spot yönü; koninin bir açısı; ve ışık yoğunluğunun merkezden koninin duvarlarına doğru nasıl azaldığını ölçen bir azalma oranı. Spot aydınlatma elde etmek için nokta piksel aydınlatma programına aşağıdaki kodu ekliyoruz.
Spot aydınlatmada, g_lightDirections global değişkeni spot ışık yönlerini saklar. Spot yönü ile yerel ışık yönü arasındaki açının kosinüsünü hesaplıyoruz. Sonra smoothstep() diyoruz, bir spot ışık kesme etkisini simüle etmek için içsel işlev kullanılır.
Bu işlev, bir aralığı ve belirtilen bir değeri kabul eder. Değer, aralığın alt sınırından küçükse işlev 0 döndürür. Değer, aralığın üst sınırından büyükse işlev 1 döndürür.
Speküler bileşeni ekleme kodu, nokta ışığındaki ile aynıdır. Son olarak, nihai aydınlatma efekti için dağınık ve aynasal bileşenleri ekliyoruz.
Yarımküre Piksel Aydınlatma
Yarımküre aydınlatmasının ardındaki fikir, aydınlatmayı iki yarımküre olarak modellememizdir. Üst yarımküre ışık kaynağı tarafından aydınlatılır. Alt yarım küre, sanal bir ışık kaynağı ile aydınlatılır. Yüzeydeki herhangi bir noktadaki aydınlatmayı hesaplamak için, o noktada alınan aydınlatmanın integralini hesaplamamız gerekir.
Piksel gölgelendiricide, üç ışık için zemin renkleri belirliyoruz. Zemin renkleri için yeni global değişkenler ekleyebilir ve çalışma zamanında piksel gölgelendiriciye farklı renkler gönderebiliriz. Aşağıdaki kod, her ışık için yarım küre aydınlatmasını hesaplar. Bir anlık görüntü gösterilir.
Doku Eşleme
Burada, gölgelendiricilerde doku eşlemenin nasıl uygulanacağını gösteriyoruz. Bu örnek, tek doku eşleme, çoklu doku eşleme, ışıkla doku eşleme, doku animasyonu, ışık eşleme ve kabartma eşleme içerir. Ayrıca bu örnekte render-to-texture efektini de uyguluyoruz.
Bu örnekte, sahnede dönen bir küp oluşturuyoruz ve doku eşleştirmenin yanı sıra dokudan dokuya göstermek için kübe farklı dokular uyguluyoruz. Dokuya dönüştürmenin temel fikri, sahneyi bir dokuya çekmek ve ardından dokuyu sahnedeki bir veya daha fazla nesneye uygulamaktır.
Görünümler Oluşturma
Örnekte iki render hedefi görünümü (g_pD3D10RenderTargetView ve g_pD3D10TextureRenderTargetView) oluşturuyoruz. g_pD3D10RenderTargetView, takas zinciri geri arabelleğinden oluşturulur. Nihai işleme sonucunu görüntülemek için kullanıyoruz. g_pD3D10TextureRenderTargetView, ayrı bir 2B dokudan oluşturulur.
Dokuya işlemeyi kullanırken, sahneyi ikinci işleme hedef görünümüne işleyeceğiz ve ardından işleme sonucunu son işleme sonucu için bir doku olarak kullanacağız.
Yukarıda, önce DXGI_FORMAT_R8G8B8A8 _UNORM biçiminde bir 2B doku oluşturuyoruz ve D3D10_BIND_RENDER_TARGET | D3D10_BIND_SHADER_RESOURCE. D3D10_BIND_SHADER_RESOURCE’u bind flag’lerinde belirtiyoruz, böylece shader’da texture’e erişebiliyoruz.
Varsayılan derinlik şablon dokusu g_pD3D10DepthStencil’e ek olarak, işlemeden dokuya için ikinci bir derinlik şablon dokusu, g_pD3D10TextureDepthStencil oluşturmamız gerekiyor. Bu iki derinlik şablon dokusu aynı biçime sahiptir. Ayrıca, varsayılan derinlik şablon görünümü g_pD3D10DepthStencilView ile aynı biçime sahip ikinci bir derinlik şablon görünümü g_pD3D10TextureDepthStencilView oluşturuyoruz.
1 Watt Led Sürücü 30 mm pixel Led 3W Power Led Sürücü Econa Led Driver 36W Led Driver 25-36W LED Sürücü Devresi Power Led Driver Ultra ince Şerit LED