Aracılığıyla paylaş


Nokta difüz aydınlatma efekti

Yansıtıcı olmayan bir yüzey gibi görünen ve ışığın her yöne dağılmış olduğu bir görüntü oluşturmak için nokta yayma 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ı bit eşleminin rengi açık renk, açık konum ve yüzey geometrisinin sonucudur. Dağınık aydınlatmalı her piksel için alfa kanalı çıkışı her zaman 1,0'dır.

Bu etki için CLSID, CLSID_D2D1PointDiffuse'tur. Bu etkiyi kullanmak için bağlayıcı bağımlılıklarına dxguid.lib ekleyin.

Örnek resim

Buradaki örnekte nokta yayma aydınlatma efektinin giriş ve çıkış görüntüleri gösterilmektedir.

nokta yayma aydınlatma efektinin giriş ve çıkış görüntülerini gösteren efekt örneği ekran görüntüsü.

Dağınık aydınlatma, burada görüldüğü gibi birden çok yönde yansıtılan ışığı ifade eder.

diffüz aydınlatma ışığı her yöne dağılır.

Efekt, son çıkış pikseli değerlerinin hesaplanması için şu denklemleri hesaplar:

Çıktı bit eşlem hesaplamaları .

Nerede:

kd = dağınık aydınlatma sabiti. Kullanıcı tarafından belirtilir.
yüzey normal vektör simgesi. = x ve y'nin bir fonksiyonu olan yüzey normal birim vektörü.
birim vektör simgesi. = yüzeyden ışığa işaret eden birim vektör.
Lr, Lg, Lb = RGB bileşenlerindeki açık renk.

Efekt özellikleri

Görünen ad ve indeks numaralandırması Açıklama
Işık Konumu
D2D1_POINTDIFFUSE_PROP_LIGHT_POSITION
Nokta ışık kaynağının ışık konumu. Bu özellik, (x, y, z) olarak tanımlanan bir D2D1_VECTOR_3F'tir. 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}.
DiffuseConstant
D2D1_NOKTADİFÜZ_PROP_DİFÜZ_SABİİ
Yayma yansımasının gelen ışık miktarına oranı. Bu özellik 0 ile 10.000 arasında olmalıdır ve birimsizdir.
Tür FLOAT'dır.
Varsayılan değer 1,0f'dir.
SurfaceScale
D2D1_POINTDIFFUSE_PROP_SURFACE_SCALE
Z yönündeki ölçek faktörü. Yüzey ölçeği 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_POINTDIFFUSE_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}.
KernelUnitLength
D2D1_POINTDIFFUSE_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ında dx ve dy değerleriyle eşlenir. Bu özellik, (Çekirdek Birimi Uzunluğu X, Çekirdek Birimi Uzunluğu Y) şeklinde bir D2D1_VECTOR_2F'dir ve (DIPs/Çekirdek Birimi) olarak 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_POINTDIFFUSE_PROP_ÖLÇEK_MODU
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_POINTDIFFUSE_SCALE_MODE.
Varsayılan değer D2D1_POINTDIFFUSE_SCALE_MODE_LINEAR.

Ölçek modları

Numaralandırma Açıklama
D2D1_NOKTADİFÜZ_SCALE_MODU_EN_YAKIN_KOMŞU En yakın tek bir 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_POINTDIFFUSE_ÖLÇEK_MODU_DOĞRUSAL 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_POINTDIFFUSE_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_POINTDIFFUSE_SCALE_MODE_MULTI_SAMPLE_LINEAR Tek bir piksel içinde iyi kenar yumuşatma için 4 lineer ö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_POINTDIFFUSE_SCALE_MODE_ANISOTROPIC Bitmap'in dönüştürülmüş şekline göre bir deseni örneklemek için anizotropik filtreleme kullanır.
D2D1_POINTDIFFUSE_ÖLÇEK_MODU_YÜKSEK_KALİTE_KÜBİK Dönüştürme matrisinde küçültme söz konusuysa görüntüyü önceden yeniden boyutlandırmak için değişken boyutlu yüksek kaliteli bir kübik çekirdek kullanır. Ardından son çıkış için küp ilişkilendirme modunu kullanır.

Not Düş

Mod seçmezseniz, efekt standart olarak D2D1_POINTDIFFUSE_SCALE_MODE_LINEAR kipi kullanır.

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