Aracılığıyla paylaş


Nokta-yansıtıcı aydınlatma efekti

Işık kaynağının yönlendirilmiş ışık konisi ile sınırlı olduğu yansıtıcı bir yüzey gibi görünen bir görüntü oluşturmak için spot-specular aydınlatma efektini kullanın. Bu efekt, alfa kanalını yükseklik haritası olarak kullanır ve görüntüyü nokta ışık kaynağıyla aydınlatabilir.

Çıktı bitmap'inin rengi, Phong aydınlatma modelinin yansıma bileşenine göre ışık rengi, ışık konumu, koninin yönü ve yüzey geometrisinin bir sonucudur. Belirtik aydınlatmalı her piksel için alfa kanalı çıkışı, bu piksel için kırmızı, yeşil ve mavi kanal çıkışlarının maksimum değeridir.

Bu etki için CLSID CLSID_D2D1SpotSpecular.

Örnek resim

Buradaki örnekte spot-specular aydınlatma efektinin giriş ve çıkış görüntüleri gösterilmektedir.

efekt örneği ekran görüntüsü.

Ayna ışığı, belirli bir yönde yansıtılan ışığı ifade eder.

bir bitmap için speküler aydınlatma çıkışını hesaplamak için kullanılan vektörlerin diyagramı.

Efekt, son çıkış piksel değerlerini hesaplamak için buradaki denklemleri kullanır:

Çıktı piksel denklemlerini .

nerede

Değişken tanımları.

Spot ışık kaynağı

Spot ışık kaynağı, konideki ışığı belirli bir yönde yayar ve koninin dışına ışık yaymaz.

Spot ışık kaynağı, Işık Vektörü L ve Yarı Vektör H'yi nokta-benekli etkisiyle aynı şekilde hesaplar.

Efekt, ışık rengini, Lr, Lg, Lb'yi, ışık kaynağının konumunun bir fonksiyonu olarak burada gösterilen denklemlerle hesaplar.

Spot ışık kaynağıdenklemi

Vektör ışık vektör simgesi. şu denklemlerle tanımlanır:

denklem: vektör

Vektör t vektör simgesi şu denklemlerle tanımlanır:

denklem : vektör 2

Efekt özellikleri

Görünen ad ve dizin numaralandırması Açıklama
Işık Pozisyonu
D2D1_SPOTSPECULAR_PROP_LIGHT_POSITION (Işığın Pozisyonu)
Nokta ışık kaynağının ışık konumu. Bu özellik, (x, y, z) şeklinde tanımlanan bir D2D1_VECTOR_3F'dir. Birimler cihazdan bağımsız piksellerde (DIP) ve ilişkisizdir. Türü D2D1_VECTOR_3F.
Varsayılan değer: {0.0f, 0.0f, 0.0f}.
PointsAt
D2D1_SPOTSPECULAR_PROP_POINTS_AT
Spot ışığın odaklandığı yer. Özellik, (x, y, z) bileşenleriyle bir D2D1_VECTOR_3F olarak sağlanır. Birimler DIP cinsindedir ve değerler sınırsızdır. Türü D2D1_VECTOR_3F.
Varsayılan değer: {0.0f, 0.0f, 0.0f}.
Odak
D2D1_SPOTSPECULAR_PROP_FOCUS
Spot ışığın odağı. Bu özellik birimsizdir ve 0 ile 200 arasında tanımlanır. Tür FLOAT'dır.
Varsayılan değer 1,0f'dir.
LimitingConeAngle
D2D1_SPOT_SPECULAR_PROP_SINIRLAYICI_KONİ_AÇISI
Işığın yansıtıldığı bölgeyi kısıtlayan koni açısı. Koninin dışına ışık yansıtılmaz. Sınırlayıcı koni açısı, spot ışık ekseni (LightPosition ile PointsAt özellikleri arasındaki eksen) ile spot ışık konisi arasındaki açıdır. Bu özellik derece cinsinden tanımlanır ve 0 ile 90 derece arasında olmalıdır. Tür FLOAT'dır.
Varsayılan değer 90,0f'dir.
SpecularExponent
D2D1_SPOTSPECULAR_PROP_SPECULAR_EXPONENT
Phong aydınlatma denklemindeki spektrüel terimin üssü. Daha büyük bir değer daha yansıtıcı bir yüzeye karşılık gelir. Bu değer birimsizdir ve 1,0 ile 128 arasında olmalıdır. Tür FLOAT'dır.
Varsayılan değer 1,0f'dir.
SpecularConstant
D2D1_SPOTSPECULAR_PROP_SPECULAR_CONSTANT
Benekli yansımanın gelen ışığa oranı. Değer birimsizdir ve 0 ile 10.000 arasında olmalıdır. Tür FLOAT'dır.
Varsayılan değer 1,0f'dir.
SurfaceScale
D2D1_SPOTSPECULAR_PROP_SURFACE_SCALE
Yükseklik haritası oluşturmak için Z yönündeki ölçek faktörü. Değer birimsizdir ve 0 ile 10.000 arasında olmalıdır. Tür FLOAT'dır.
Varsayılan değer 1,0f'dir.
Renk
D2D1_SPOTSPECULAR_PROP_COLOR
Gelen ışığın rengi. Bu özellik Vektör 3 (R, G, B) olarak sunulur ve LR, LG, LBhesaplamak için kullanılır. Türü D2D1_VECTOR_3F.
Varsayılan değer: {1.0f, 1.0f, 1.0f}.
ÇekirdekBirimUzunluğu
D2D1_SPOTSPECULAR_PROP_KERNEL_UNIT_LENGTH
X ve Y yönünde normal yüzey oluşturmak için kullanılan Sobel çekirdeğindeki bir öğenin boyutu. Bu özellik, Sobel gradyanındaki dx ve dy değerlerine eşlenir. Bu özellik bir D2D1_VECTOR_2F (Çekirdek Birimi Uzunluğu X, Çekirdek Birimi Uzunluğu Y) ve (DIPs/Çekirdek Birimi) içerisinde tanımlanmıştır. Etkisi, bit eşlemi çekirdek öğelerinin boyutuyla eşleşecek şekilde ölçeklendirmek için bilinear ilişkilendirme kullanır. Türü D2D1_VECTOR_2F.
Varsayılan değer: {1.0f, 1.0f}.
Ölçek Modu
D2D1_SPOTSPECULAR_PROP_SCALE_MODE
Efektin görüntüyü ilgili çekirdek birimi uzunluğuna ölçeklendirmek için kullandığı ilişkilendirme modu. Kalite ve hız olarak değişen altı ölçek modu vardır. Daha fazla bilgi için bkz. Ölçeklendirme modları.
Türü D2D1_SPOTSPECULAR_SCALE_MODE.
Varsayılan değer D2D1_SPOTSPECULAR_SCALE_MODE_LINEAR.

Ölçek modları

Sayım Açıklama
D2D1_SPOTSPECULAR_SCALE_MODE_NEAREST_NEIGHBOR En yakın tek noktayı örnekler ve bunu kullanır. Bu mod daha az işlem süresi kullanır, ancak en düşük kaliteli görüntüyü görüntüler.
D2D1_SPOTSPECULAR_SCALE_MODE_LINEAR Dört noktalı örnek ve doğrusal ilişkilendirme kullanır. Bu mod, en yakın komşuya göre daha yüksek kaliteli bir görüntü oluşturur.
D2D1_SPOTSPECULAR_SCALE_MODE_CUBIC İlişkilendirme için 16 örnek kübik çekirdek kullanır. Bu mod en fazla işlem süresini kullanır, ancak daha yüksek kaliteli bir görüntü oluşturur.
D2D1_SPOTSPECULAR_SCALE_MODE_MULTI_SAMPLE_LINEAR Kenar yumuşatma için tek bir piksel içinde 4 doğrusal örnek kullanır. Bu mod, birkaç piksel içeren görüntülerde küçük miktarlarda ölçeği küçültmek için iyidir.
D2D1_SPOTSPECULAR_SCALE_MODE_ANISOTROPIC Bitmapın dönüştürülmüş şekline göre bir modeli örneklemek için anizotropik filtrelemeyi kullanır.
D2D1_SPOTSPECULAR_SCALE_MODE_HIGH_QUALITY_CUBIC Dönüştürme matrisinde aşağı ölçeklendirme söz konusuysa görüntüyü önceden aşağı ölçeklendirmek için değişken boyutlu yüksek kaliteli kübik çekirdek kullanır. Ardından son çıkış için küp ilişkilendirme modunu kullanır.

Not

Mod seçmezseniz efekt varsayılan olarak D2D1_SPOTSPECULAR_SCALE_MODE_LINEAR olur.

Gereksinimler

Gereksinim Değer
Desteklenen en düşük istemci Windows 7 için Windows 8 ve Platform Güncelleştirmesi [masaüstü uygulamaları | Windows Mağazası uygulamaları]
Desteklenen en düşük sunucu Windows 7 için Windows 8 ve Platform Güncelleştirmesi [masaüstü uygulamaları | Windows Mağazası uygulamaları]
Üstbilgi d2d1effects.h
Kütüphane d2d1.lib, dxguid.lib

ID2D1Effect