Aracılığıyla paylaş


Işık Türleri (Direct3D 9)

Işık türü özelliği, kullandığınız ışık kaynağı türünü tanımlar. Işık türü, ışığın D3DLIGHT9 yapısının Type üyesindeki D3DLIGHTTYPE C++ numaralandırmasından bir değer kullanılarak ayarlanır. Direct3D'de üç tür ışık vardır: nokta ışıkları, öne çıkanlar ve yön ışıkları. Her tür, bir sahnedeki nesneleri farklı şekilde aydınlatır ve farklı hesaplama ek yükü düzeyleri sağlar.

Nokta Açık

Nokta ışıkları bir sahne içinde renk ve konuma sahiptir, ancak tek yön yoktur. Aşağıdaki çizimde gösterildiği gibi ışığı tüm yönlerde eşit şekilde verir.

Noktalı ışıkçizimi

Ampul, nokta ışığının iyi bir örneğidir. Nokta ışıkları, azaltma ve aralıktan etkilenir ve bir ağı köşe temelinde aydınlatır. Aydınlatma sırasında Direct3D, ışığın yönü ve ışığın kateddiği mesafe için bir vektör türetmek için nokta ışığının dünya uzayı içindeki konumunu ve yakılan köşenin koordinatlarını kullanır. Her ikisi de ışığın yüzeyin aydınlatmasına katkısını hesaplamak için normal köşe ile birlikte kullanılır.

Yön Işığı

Yön ışıklarının konumu değil yalnızca rengi ve yönü vardır. Paralel ışık yayarlar. Bu, yön ışıkları tarafından oluşturulan tüm ışığın aynı yöndeki bir sahneden geçtiği anlamına gelir. Güneş gibi sonsuz mesafeye yakın bir ışık kaynağı olarak yön ışığı düşünün. Yön ışıkları, azaltma veya aralıktan etkilenmez, bu nedenle Direct3D köşe renklerini hesaplarken dikkate alınan tek faktör, belirttiğiniz yön ve renktir. Aydınlatma faktörlerinin az sayıda olması nedeniyle, bunlar kullanılacak en az işlem yoğunluklu ışıklardır.

Spot

Öne çıkanlar ışık yaydıkları renk, konum ve yöne sahiptir. Bir öne çıkan ışık, aşağıdaki çizimde gösterildiği gibi ikisi arasındaki ışık yoğunluğunun azaldığı parlak bir iç koni ve daha büyük bir dış koniden oluşur.

iç koni ve dış koni bir spot çizimi

Öne çıkanlar düşme, azaltma ve aralıktan etkilenir. Bu faktörlerin yanı sıra ışığın her köşeye kattığı mesafe, bir sahnedeki nesneler için aydınlatma efektleri hesaplanırken belirlenir. Her köşe için bu efektlerin hesaplanması, öne çıkanları Direct3D'deki tüm ışıkların en hesaplamalı zaman alıcısı yapar.

D3DLIGHT9 C++ yapısı yalnızca öne çıkanlar tarafından kullanılan üç üye içerir. Falloff, Theta ve Phi üyeleri, spot nesnesinin iç ve dış konilerinin ne kadar büyük veya küçük olduğunu ve aralarındaki ışığın nasıl azaldığını denetler.

Theta değeri, spot ışığın iç konisinin radyan açısıdır ve Phi değeri ışığın dış konisinin açısıdır. Falloff değeri, iç koninin dış kenarı ile dış koninin iç kenarı arasındaki ışık yoğunluğunun nasıl azaldığını denetler. Çoğu uygulama Falloff değerini 1,0 olarak ayarlayarak iki koni arasında eşit olarak gerçekleşen bir düşüş oluşturur, ancak gerektiğinde diğer değerleri ayarlayabilirsiniz.

Aşağıdaki çizimde, bu üyelerin değerleri arasındaki ilişki ve bir spotun iç ve dış ışık konilerini nasıl etkileyebilecekleri gösterilmektedir.

phi ve theta değerlerinin öne çıkan konilerle nasıl ilişkili olduğunu gösteren

Öne çıkanlar iki bölümden oluşan bir ışık konisi yayar: parlak bir iç koni ve dış koni. Işık iç konide en parlaktır ve iki alan arasında ışık yoğunluğu yoğunlaşarak dış koninin dışında mevcut değildir. Bu tür bir azaltma genellikle düşüş olarak adlandırılır.

Bir köşenin aldığı ışık miktarı, köşenin iç veya dış konilerdeki konumuna bağlıdır. Direct3D, spot ışığın yön vektörünün (L) ve vektörünün nokta çarpımını ışıktan köşeye (D) hesaplar. Bu değer, iki vektör arasındaki açının kosinüsüne eşittir ve köşenin iç veya dış konilerde nerede bulunabileceğini belirlemek için köşenin konumunun ışığın koni açılarıyla karşılaştırılabilir bir göstergesi olarak görev görür. Aşağıdaki çizim, bu iki vektör arasındaki ilişkilendirmenin grafiksel bir gösterimini sağlar.

yön vektörünün ve köşedeki vektörünün spot

Sistem bu değeri spot ışığın iç ve dış koni açılarının kosinüsüyle karşılaştırır. Işığın D3DLIGHT9 yapısında Theta ve Phi üyeleri iç ve dış koniler için toplam koni açılarını temsil eder. Köşe aydınlatma merkezinden (toplam koni açısı yerine) daha uzak hale geldiğinden, çalışma zamanı kosinüslerini hesaplamadan önce bu koni açılarını ikiye böler.

L ve D vektörlerinin nokta ürünü dış koni açısının kosinüsünden küçük veya buna eşitse, köşe dış koninin ötesindedir ve ışık almaz. L ve D'nin nokta ürünü iç koni açısının kosinüsünden büyükse, köşe iç koninin içindedir ve mesafe üzerindeki azaltmayı göz önünde bulundurarak maksimum ışık miktarını alır. Köşe iki bölge arasında bir yerdeyse, düşüş aşağıdaki denklemle hesaplanır.

Köşedeki ışık yoğunluğu için formülü, düşüşten sonra

Nerede:

  • Ben f düşüşten sonra ışık yoğunluğu
  • Alfa, L ve D vektörleri arasındaki açıdır
  • Theta iç koni açısıdır
  • Phi dış koni açısıdır
  • p, düşüşüdür

Bu formül, 0,0 ile 1,0 arasında bir değer oluşturur ve bu değer köşedeki ışığın yoğunluğunu düşüşü hesaba katma amacıyla ölçeklendirir. Köşenin ışıktan uzaklığında bir faktör olarak hafifletme de uygulanır. Aşağıdaki grafikte farklı geri dönüş değerlerinin düşüş eğrisini nasıl etkileyebileceği gösterilmektedir.

ışık yoğunluğu grafiği ile ışık köşe uzaklığı karşılaştırması

Çeşitli falloff değerlerinin gerçek aydınlatma üzerindeki etkisi hafiftir ve düşüş eğrisi 1,0 dışındaki düşüş değerleriyle şekillendirilerek küçük bir performans cezası uygulanır. Bu nedenlerden dolayı, bu değer genellikle 1.0 olarak ayarlanır.

Işıklar ve Malzemeler