Aracılığıyla paylaş


Uzak yansımalı aydınlatma efekti

Uzak-yansımalı aydınlatma efektini kullanarak, ışık kaynağının uzaktan (güneş veya tavana monte ışıklar gibi) geldiği yansıtıcı bir yüzey gibi görünen bir görüntü oluşturun. Bu efekt alfa kanalını yükseklik haritası olarak kullanır ve görüntüyü uzak bir ışık kaynağıyla aydınlatabilir.

Çıktı bit eşleminin rengi açık renk, açık konum ve yüzey geometrisinin 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 etkinin CLSID'si CLSID_D2D1DistantSpecular'dır.

Örnek resim

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

uzak yansıtmalı aydınlatma efektinin giriş ve çıkış görüntülerini gösteren bir efekt örneği ekran görüntüsü.

Son çıkış bit eşlemi aşağıdaki denklemler kullanılarak hesaplanabilir.

Çıktı bit eşlem hesaplama

nerede

k? = yansımalı aydınlatma sabiti.
normal yüzey simgesi. = yüzey normal birim vektör.
yarı vektör simgesi. = göz birim vektörü ve ışık birim vektörü arasındaki "yarı" birim vektör.
Cr, Cg, Cb = RGB bileşenlerindeki açık renk.

Uzak ışık kaynağı

Buradaki görüntüde uzak bir ışık kaynağından gelen ışık yönünün bir örneği gösterilmektedir.

uzak ışık kaynağı

Etki, ışık vektörü l vektörü hesaplamak için azimut ve yükseltme parametrelerini kullanır. Aşağıdaki denklemleri kullanarak:

ışık vektör hesaplama

burada Light?, Lightyve Lightz giriş ışığı konum değerleridir.

Efekt özellikleri

Görünen ad ve indeks numaralandırması Açıklama
Azimut
D2D1_DISTANTSPECULAR_PROP_AZIMUTH
XY düzlemindeki ışık kaynağının, karşı saat yönündeki X eksenine göre yön açısı. Birimler derece cinsindendir ve 0 ile 360 derece arasında olmalıdır.
Tür FLOAT'dır.
Varsayılan değer 0,0f'dir.
Yükseklik
D2D1_DISTANTSPECULAR_PROP_ELEVATION
YZ düzlemindeki ışık kaynağının, karşı saat yönündeki Y eksenine göre yön açısı. Birimler derece cinsindendir ve 0 ile 360 derece arasında olmalıdır.
Tür FLOAT'dır.
Varsayılan değer 0,0f'dir.
SpecularExponent
D2D1_DISTANTSPECULAR_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. 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_DISTANTSPECULAR_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_DISTANTSPECULAR_PROP_SURFACE_SCALE
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_DISTANTSPECULAR_PROP_COLOR
Gelen ışığın rengi. Bu özellik bir D2D1_VECTOR_3F (R, G, B) olarak kullanıma 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_DISTANTSPECULAR_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 bir D2D1_VECTOR_2F (Çekirdek Birimi Uzunluğu X, Çekirdek Birimi Uzunluğu Y) ve (cihazdan bağımsız pikseller (DIPs)/Çekirdek Birimi) içinde tanımlanır. Etki, bit eşlemini çekirdek öğelerinin boyutuyla eşleşecek şekilde ölçeklendirmek için iki doğrusal enterpolasyon kullanır. Türü D2D1_VECTOR_2F.
Varsayılan değer: {1.0f, 1.0f}.
Ölçek Modu
D2D1_DISTANTSPECULAR_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.
Türü D2D1_DISTANTSPECULAR_SCALE_MODE.
Varsayılan değer D2D1_DISTANTSPECULAR_SCALE_MODE_LINEAR.

Ölçek modları

Sayım Açıklama
D2D1_DISTANTSPECULAR_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_DISTANTSPECULAR_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_DISTANTSPECULAR_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_DISTANTSPECULAR_SCALE_MODE_MULTI_SAMPLE_LINEAR İyi 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_DISTANTSPECULAR_SCALE_MODE_ANISOTROPIC Bitmap'in dönüştürülmüş şekline göre bir deseni örneklemek için anizotropik filtreleme kullanır.
D2D1_DISTANTSPECULAR_SCALE_MODE_HIGH_QUALITY_CUBIC Dönüştürme matrisinde küçültme işlemi gerektiriyorsa, görüntüyü önceden küçültme işlemi gerçekleştirmek 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

Mod seçilmezse, efekt varsayılan olarak D2D1_DISTANTSPECULAR_SCALE_MODE_LINEAR olur.

Gereksinimler

Gereksinim Değer
En düşük desteklenen 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

ID2D1Efekt