Aracılığıyla paylaş


Açık Özellikler (Direct3D 9)

Işık özellikleri, bir ışık kaynağının türünü ve rengini açıklar. Kullanılan ışığın türüne bağlı olarak, ışık, hafifletme ve aralık özelliklerine veya öne çıkan efektlere sahip olabilir. Ancak, her ışık türü tüm özellikleri kullanmaz. Direct3D, her tür ışık kaynağı için ışık özellikleri hakkında bilgi taşımak için D3DLIGHT9 yapısını kullanır. Bu bölüm tüm ışık özelliklerine ilişkin bilgileri içerir. Bilgiler aşağıdaki gruplara ayrılır.

Konum, aralık ve hafifletme özellikleri, bir ışığın dünya uzayında konumunu ve yaydığı ışığın uzaklıkta nasıl davranacağını tanımlar. C++'ta kullandığınız tüm ışık özelliklerinde olduğu gibi bunlar da ışığın D3DLIGHT9 yapısında yer alır.

Açık Hafifletme

Hafifletme, bir ışığın yoğunluğunun range özelliği tarafından belirtilen maksimum uzaklığa doğru nasıl azaldığını denetler. Üç D3DLIGHT9 yapı üyesi ışık azaltmayı temsil eden: Attenuation0, Attenuation1 ve Attenuation2. Bu üyeler 0,0 ile sonsuz arasında kayan nokta değerleri içerir ve bir ışığın verimini kontrol eder. Bazı uygulamalar, Attenuation1 üyesini 1.0, diğerleri ise 0.0 olarak ayarlayarak ışık yoğunluğunun 1 / D olarak değişmesine neden olur ve burada D, ışık kaynağından köşeye olan uzaklıktır. Maksimum ışık yoğunluğu kaynaktadır ve ışığın aralığında 1 / (Işık Aralığı) olarak azalır. Genellikle bir uygulama, Attenuation0 değerini 0,0, Attenuation1 değerini sabit bir değere ve Attenuation2 değerini 0,0 olarak ayarlar.

Daha karmaşık azaltma efektleri elde etmek için azaltma değerlerini birleştirebilirsiniz. Alternatif olarak, daha da yabancı azaltma efektleri oluşturmak için bunları normal aralığın dışındaki değerlere ayarlayabilirsiniz. Ancak negatif azaltma değerlerine izin verilmez. bkz. Hafifletme ve Öne Çıkarma Faktörü (Direct3D 9).

Açık Renk

Direct3D'deki ışıklar, sistemin aydınlatma işlemlerinde bağımsız olarak kullanılan üç renk yayar: dağınık renk, ortam rengi ve belirtik bir renk. Her biri, işlemede kullanılan son rengi üretmek için geçerli malzemeden bir karşılık gelenle etkileşime geçerek Direct3D aydınlatma modülü tarafından bir araya getirilir. Yayma rengi, geçerli malzemenin difüz yansıtma özelliğiyle, malzemenin belirtik yansıtıcı özelliğiyle belirtik renkle ve benzeriyle etkileşim kurar. Direct3D'nin bu renkleri nasıl uyguladığına ilişkin ayrıntılar için bkz. Mathematics of Lighting (Direct3D 9).

C++ uygulamasında, D3DLIGHT9 yapısı bu renkler için üç üye içerir: Yayma, Ortam ve Belirtik - her biri, yayılan rengi tanımlayan D3DCOLORVALUE bir yapıdır.

Sistemin hesaplamalarına en çok uygulanan renk türü, dağınık renktir. En yaygın difüz rengi beyazdır (R:1.0 G:1.0 B:1.0), ancak istenen efektleri elde etmek için gerektiğinde renkler oluşturabilirsiniz. Örneğin, şömine için kırmızı ışık kullanabilir veya "Git" olarak ayarlanmış bir trafik sinyali için yeşil ışık kullanabilirsiniz.

Genellikle açık renk bileşenlerini 0,0 ile 1,0 (dahil) arasında değerlere ayarlarsınız, ancak bu bir gereksinim değildir. Örneğin, "beyazdan daha parlak" bir ışık oluşturarak tüm bileşenleri 2.0 olarak ayarlayabilirsiniz. Bu ayar türü, sabit dışındaki azaltma ayarlarını kullandığınızda özellikle yararlı olabilir.

Direct3D ışık için RGBA değerlerini kullansa da alfa rengi bileşeninin kullanılmadığını unutmayın.

Genellikle malzeme renkleri aydınlatma için kullanılır. Bununla birlikte, malzeme renklerinin yayıcı, ortam, yayma ve beneksel renklerin yayma veya belirtik köşe renkleri tarafından geçersiz kılınacağını belirtebilirsiniz. Bu, SetRenderState çağrılarak ve aşağıdaki tabloda listelenen cihaz durumu değişkenleri ayarlanarak yapılır.

Cihaz durum değişkeni Anlam Tür Temerrüt
D3DRS_AMBIENTMATERIALSOURCE Ortam malzemesi renginin nereden alınacağı tanımlar. D3DMATERIALCOLORSOURCE D3DMCS_MATERIAL
D3DRS_DIFFUSEMATERIALSOURCE Dağınık malzeme renginin nereden alınacağı tanımlar. D3DMATERIALCOLORSOURCE D3DMCS_COLOR1
D3DRS_SPECULARMATERIALSOURCE Belirtik malzeme renginin nereden alınacağı tanımlar. D3DMATERIALCOLORSOURCE D3DMCS_COLOR2
D3DRS_EMISSIVEMATERIALSOURCE Emissive malzeme renginin nereden alınacağı tanımlar. D3DMATERIALCOLORSOURCE D3DMCS_MATERIAL
D3DRS_COLORVERTEX Köşe renklerinin kullanımını devre dışı bırakır veya etkinleştirir. BOOL DOĞRU

 

Alfa/saydamlık değeri her zaman yalnızca yayma renginin alfa kanalından gelir.

Sis değeri her zaman yalnızca belirtik rengin alfa kanalından gelir.

D3DMATERIALCOLORSOURCE aşağıdaki değerlere sahip olabilir.

  • D3DMCS_MATERIAL - Malzeme rengi kaynak olarak kullanılır.
  • D3DMCS_COLOR1 - Kaynak olarak Diffuse köşe rengi kullanılır.
  • D3DMCS_COLOR2 - Kaynak olarak belirtik köşe rengi kullanılır.

Açık Yön

Bir ışığın yön özelliği, nesnenin yaydığı ışığın dünya uzayında hareket ettiği yönü belirler. Yön yalnızca yön ışıkları ve spotlar tarafından kullanılır ve bir vektör ile tanımlanır.

Işığın D3DLIGHT9 yapısının Yön üyesinde ışık yönünü ayarlayın. Yön üyesi D3DVECTORtüründedir. Yön vektörleri, ışığın bir sahnedeki konumundan bağımsız olarak mantıksal bir kaynaktan uzaklık olarak tanımlanır. Bu nedenle, pozitif z ekseni boyunca doğrudan bir sahneyi işaret eden bir spot, konumu nerede tanımlandığından bağımsız olarak 0,0,1><yön vektöre sahiptir. Benzer şekilde, yönü 0,-1,0><yön ışığı kullanarak doğrudan bir sahnede parlayan güneş ışığını simüle edebilirsiniz. Açıkçası, koordinat eksenleri boyunca parlayan ışıklar oluşturmak zorunda değilsiniz; daha ilginç açılarda parlayan ışıklar oluşturmak için değerleri karıştırabilir ve eşleştirebilirsiniz.

Not

Bir ışığın yön vektörlerini normalleştirmenize gerek olmasa da, her zaman büyüklüğe sahip olduğundan emin olun. Başka bir deyişle, <0,0,0> yön vektörlerini kullanmayın.

 

Açık Konum

Işık konumu, D3DLIGHT9 yapısının Konum üyesinde D3DVECTOR bir yapı kullanılarak açıklanır. x-, y ve z koordinatlarının dünya uzayında olduğu varsayılır. Yön lambaları, konum özelliğini kullanmayan tek ışık türüdür.

Açık Aralık

Bir ışığın aralık özelliği, dünya uzayında bir sahnedeki tirelerin artık bu nesne tarafından yayılan ışığı almadığı mesafeyi belirler. Aralık üyesi, dünyanın uzayında ışığın maksimum aralığını temsil eden bir kayan nokta değeri içerir. Yön lambaları range özelliğini kullanmaz.

Işıklar ve Malzemeler