Sis Formülleri (Direct3D 9)
C++ uygulamaları, Microsoft Direct3D'nin uzaklık üzerindeki sis etkilerini hesaplama şeklini değiştirerek sislerin bir sahnedeki nesnelerin rengini nasıl etkilediğini denetleyebiliyor. Numaralandırılmış D3DFOGMODE türü, üç sis formülünü tanımlayan üyeler içerir. Tüm formüller, uygulamanızın ayarlayıp belirlediği parametrelere göre bir sis faktörünü uzaklık işlevi olarak hesaplar.
Doğrusal Sis
Bu, aşağıdaki D3DFOG_LINEAR denklemiyle ayarlanır.
Direct3d doğrusal sisdenklemi
nerede
- başlangıç, sis etkilerinin başladığı uzaklıktır.
- bitiş, sis etkilerinin artmadığı uzaklıktır.
- d, derinliği veya bakış açısından uzaklığı temsil eder. Aralık tabanlı sis için d değeri, kamera konumu ile köşe arasındaki mesafedir. Aralık tabanlı olmayan sis için d değeri, kamera alanında Z koordinatının mutlak değeridir.
Üstel Sis
Doğrusal ve üstel formüller hem piksel sisi hem de köşe sisi için desteklenir.
Bu, aşağıdaki D3DFOG_EXP denklemiyle ayarlanır.
Direct3d üstel sisdenklemi
nerede
- e, doğal logaritmaların tabanıdır (yaklaşık 2,71828).
- yoğunluk, 0,0 ile 1,0 arasında değişen rastgele bir sis yoğunluğudur.
- d, daha önce belirtildiği gibi derinliği veya bakış açısından uzaklığı temsil eder.
Bu, aşağıdaki D3DFOG_EXP2 denklemiyle ayarlanır.
direct3d üstel 2 sisdenklemi
nerede
- e, yukarıda belirtildiği gibi doğal logaritmaların tabanıdır.
- yoğunluk, yukarıda belirtildiği gibi 0,0 ile 1,0 arasında değişen rastgele bir sis yoğunluğudur.
- d, yukarıda belirtildiği gibi derinliği veya bakış açısından uzaklığı temsil eder.
Not
Sistem, sis faktörünü bir köşe için belirtik rengin alfa bileşeninde depolar. Uygulamanız kendi dönüşüm ve aydınlatmasını gerçekleştiriyorsa, işleme sırasında sistem tarafından uygulanacak sis faktörü değerlerini el ile ekleyebilirsiniz.
Aşağıdaki grafikte, formül parametrelerinde olduğu gibi ortak değerler kullanılarak bu formüller gösterilmektedir.
Sis formüllerinin uzaklık ve renk miktarı üzerinden
D3DFOG_LINEAR başlangıçta 1.0 ve sonunda 0.0'dır. Yakın veya uzak düzlemlere göre ölçülür.
Direct3D sis efektlerini hesapladığında, aşağıdaki karıştırma denklemindeki önceki denklemlerden birinin sis faktörünü kullanır.
Direct3dsis efektleri denklemi
Bu formül, geçerli çokgen C'nin rengini sis faktörü f ile etkili bir şekilde ölçeklendirir ve ürünü sis faktörünün bit düzeyinde tersine göre ölçeklendirilmiş sis rengi C'ye ekler. Elde edilen renk değeri, uzaklık faktörü olarak sis rengiyle orijinal rengin bir karışımıdır. Formül, Microsoft DirectX 7.0 ve sonraki sürümlerde desteklenen tüm cihazlar için geçerlidir. Eski rampa cihazı için sis faktörü, 0,0 ve 1,0 (dahil) aralığına kenetlenmiş yayma ve belirtimli renk bileşenlerini ölçeklendirir. Sis faktörü genellikle yakın düzlem için 1.0'dan başlar ve uzak düzlemde 0.0'a düşer.
İlgili konular