Aracılığıyla paylaş


Işıklar ve Malzemeler (Direct3D 9)

Işıklar, bir sahnedeki nesneleri aydınlatmak için kullanılır. Aydınlatma etkinleştirildiğinde Direct3D, her nesne köşesinin rengini aşağıdakilerin bir bileşimine göre hesaplar:

Not

Bu bölüm yalnızca sabit işlevli işlem hattı içindir. Programlanabilir gölgelendiriciler tüm aydınlatmayı açıkça gerçekleştirir.

 

  • Geçerli malzeme rengi ve ilişkili doku haritasındaki ifadeler.
  • Belirtilmişse köşedeki dağınık ve belirtik renkler.
  • Sahnedeki veya sahnenin ortam ışığı düzeyindeki ışık kaynakları tarafından üretilen ışığın rengi ve yoğunluğu.

Direct3D aydınlatma ve malzemeleri kullandığınızda, Direct3D'nin aydınlatmanın ayrıntılarını sizin için işlemesine izin verirsiniz. İleri düzey kullanıcılar, istenirse kendi kendilerine aydınlatma gerçekleştirebilir.

Aydınlatma ve malzemelerle çalışma şekliniz, işlenen sahnenin görünümünde büyük bir fark yaratır. Malzemeler ışığın bir yüzeyden nasıl yansıdığını tanımlar. Doğrudan ışık ve ortam ışığı düzeyleri, yansıtılan ışığı tanımlar. Aydınlatma etkinse sahneyi işlemek için malzeme kullanmalısınız. Bir sahneyi işlemek için ışık gerekmez, ancak ışık olmadan işlenen bir sahnedeki ayrıntılar görünmez. En iyi durumda, tek tek bir sahnenin işlenmesi, sahnedeki nesnelerin siluetini oluşturur. Bu, çoğu amaç için yeterli ayrıntı değildir.

Direct Light ile Ortam Işığı karşılaştırması

Hem doğrudan hem de ortam ışığı bir sahnedeki nesneleri aydınlatsa da, birbirinden bağımsızdırlar, çok farklı etkilere sahiptirler ve onlarla tamamen farklı şekillerde çalışmanızı gerektirirler.

Doğrudan ışık sadece şudur: doğrudan. Doğrudan ışık her zaman yön ve renge sahiptir ve Gouraud gölgelendirmesi gibi gölgeleme algoritmaları için bir faktördür. Farklı ışık türleri farklı şekillerde doğrudan ışık yayar ve özel hafifletme efektleri oluşturur. IDirect3DDevice9::SetLight yöntemini çağırarak doğrudan ışık için bir dizi ışık parametresi oluşturursunuz.

Ortam ışığı, bir sahnenin her yerinde etkili bir şekilde bulunur. Bunu, o sahnedeki nesnelere ve konumlarına bakılmaksızın tüm sahneyi dolduran genel bir ışık düzeyi olarak düşünebilirsiniz. Ortam ışığının konumu veya yönü yoktur, yalnızca renk ve yoğunluk vardır. Her ışık, bir sahnedeki genel ortam ışığına eklenir. Durumu parametresi olarak D3DRS_AMBIENT ve Değer parametresi olarak istenen RGBA rengini belirterek IDirect3DDevice9::SetRenderState yöntemine yapılan bir çağrıyla ortam ışığı düzeyini ayarlayın.

Ortam ışığı rengi RGBA değeri biçimindedir ve burada her bileşen 0 ile 255 arasını içeren bir tamsayı değeridir. Bu, Direct3D'deki çoğu renk değerinin aksinedir.

RGBA değerleri oluşturmak için D3DCOLOR_RGBA makroyu kullanabilirsiniz. Kırmızı, yeşil ve mavi bileşenler bir araya gelerek ortam ışığının son rengini oluşturur. Alfa bileşeni rengin saydamlığını denetler. Donanım hızlandırma veya RGB öykünmesi kullanılırken alfa bileşeni yoksayılır.

Direct3D Light Model ile Doğa Karşılaştırması

Doğada, bir kaynaktan ışık yayıldığında, kullanıcının gözüne ulaşmadan önce yüzlerce, binlerce veya milyonlarca nesneden yansıtılır. Her yansıtıldığında, bazı ışık bir yüzey tarafından emilir, bazıları rastgele yönlere dağılır ve geri kalanı başka bir yüzeye veya kullanıcının gözüne gider. Bu işlem, ışık hiçbir şeye indirgenene veya bir kullanıcı ışığı algılayana kadar devam eder.

Açıkçası, ışığın doğal davranışını mükemmel bir şekilde simüle etmek için gereken hesaplamalar, gerçek zamanlı Direct3D grafikler için kullanmak için çok zaman alır. Bu nedenle Direct3D ışık modeli, hızı göz önünde bulundurarak ışığın doğal dünyada çalışma şekline yaklaşık olarak yaklaşılmaktadır. Direct3D, ışığı son bir renk oluşturmak için bir araya gelen kırmızı, yeşil ve mavi bileşenler açısından açıklar.

Direct3D'de ışık bir yüzeye yansıdığında açık renk, sonunda ekranda görüntülenen rengi oluşturmak için yüzeyle matematiksel olarak etkileşim kurar. Direct3D'nin kullandığı algoritmalar hakkında belirli bilgiler için bkz. Matematik Aydınlatma (Direct3D 9).

Direct3D ışık modeli, ışığı iki türe genelleştirir: ortam ışığı ve doğrudan ışık. Her birinin farklı öznitelikleri vardır ve her biri bir yüzeyin malzemesiyle farklı şekillerde etkileşim kurar. Ortam ışığı, yönü ve kaynağı belirsiz olacak kadar dağılmış ışıktır: her yerde düşük yoğunluktadır. Fotoğrafçılar tarafından kullanılan dolaylı aydınlatma, ortam ışığına iyi bir örnektir. Direct3D'deki ortam ışığı, doğada olduğu gibi gerçek yönde veya kaynağa sahip değildir, yalnızca bir renk ve yoğunluktadır. Aslında, ortam ışığı düzeyi, ışık oluşturan bir sahnedeki herhangi bir nesneden tamamen bağımsızdır. Ortam ışığı, belirtik yansımaya katkıda bulunmaz.

Doğrudan ışık, bir sahne içindeki bir kaynak tarafından oluşturulan ışıktır; her zaman renk ve yoğunluğa sahiptir ve belirtilen yönde hareket eder. Doğrudan ışık, bir yüzeyin malzemesiyle etkileşim kurarak belirtik vurgular oluşturur ve yönü Gouraud gölgelendirme dahil gölgelendirme algoritmalarında bir faktör olarak kullanılır. Doğrudan ışık yansıtıldığında, bir sahnedeki ortam ışığı düzeyine katkıda bulunmaz. Doğrudan ışık oluşturan bir sahnedeki kaynaklar, bir sahneyi nasıl aydınlattığını etkileyen farklı özelliklere sahiptir.

Ayrıca, bir çokgenin malzemesi, bu poligon'un aldığı ışığı nasıl yansıttığını etkileyen özelliklere sahiptir. Malzemenin ortam ışığını nasıl yansıttığını açıklayan tek bir yansıtma özelliği ayarlarsınız ve malzemenin benekli ve dağınık yansıtmasını belirlemek için ayrı ayrı özellikler ayarlarsınız. Daha fazla bilgi için bkz. Malzemeleri (Direct3D 9).

Işıklar ve Malzemeler için Renk Değerleri

Direct3D, rengi son renk yapmak için bir araya gelen dört bileşen (kırmızı, yeşil, mavi ve alfa) olarak açıklar. D3DCOLORVALUE C++ yapısı, her bileşenin değerlerini içerecek şekilde tanımlanır. Her üye genellikle 0,0 ile 1,0 (dahil) arasında değişen bir kayan nokta değeridir. Hem ışıklar hem de malzemeler rengi tanımlamak için aynı yapıyı kullansa da, yapıdaki değerler her birine göre biraz farklı kullanılır.

Işık kaynaklarının renk değerleri, yaydığı belirli bir ışık bileşeninin miktarını temsil eder. Işıklar alfa bileşeni kullanmadığından yalnızca rengin kırmızı, yeşil ve mavi bileşenleri ilgilidir. Üç bileşeni bir projeksiyon televizyonunda kırmızı, yeşil ve mavi lensler olarak görselleştirebilirsiniz. Her lens kapalı (uygun üyede 0,0 değeri), mümkün olduğunca parlak (1,0 değeri) veya arada bir düzey olabilir. Lenslerden gelen renkler bir araya gelerek ışığın son rengini oluşturur. R(1.0), G(1.0), B(1.0) gibi bir kombinasyon beyaz bir ışık oluşturur; burada R(0.0), G(0.0), B(0.0) hiç ışık yaymaz. Yalnızca bir bileşen yayan, saf kırmızı, yeşil veya mavi ışıkla sonuçlayan bir ışık oluşturabilirsiniz; veya ışık, sarı veya mor gibi renkler yaymak için kombinasyonlar kullanabilir. Hatta bir sahnedeki ışığı gerçekten kaldıran bir "koyu ışık" oluşturmak için negatif renk bileşeni değerleri ayarlayabilirsiniz. Alternatif olarak, son derece parlak bir ışık oluşturmak için bileşenleri 1,0'dan büyük bir değere ayarlayabilirsiniz.

Malzemelerle birlikte, renk değerleri bir ışık bileşeninin ne kadarının bu malzemeyle işlenen bir yüzey tarafından yansıtıldığını temsil eder. Renk bileşenleri R(1.0), G(1.0), B(1.0), A(1.0) olan bir malzeme, yoluna çıkan tüm ışığı yansıtır. Benzer şekilde, R(0.0), G(1.0), B(0.0), A(1.0) içeren bir malzeme, ona yönlendirilen tüm yeşil ışığı yansıtır. Malzemelerin çeşitli etki türleri oluşturmak için birden çok yansıtma değeri vardır.

ek bilgiler içinde yer alır: Işık Türleri (Direct3D 9)ve Light Properties (Direct3D 9).

Başlarken