Plazma sayı 1, sayfa 48

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 48

Cf = Cs * S - Cd * D olur ve if ( Cf < 0.0 ) Cf = 0.0 else if (Cf >= 0.0) Cf = Cf

OpenGL için GL_EXT_blend_subtract extension'ına bakın.

Reverse Subtractive Blending:

Cf = Cd * D - Cs * S olur ve if ( Cf < 0.0 ) Cf = 0.0 else if (Cf >= 0.0) Cf = Cf ve yine GL_EXT_blend_subtract extension'ına bakın.

MinMax Blending:

minimum için:

Cf = min ( Cs , Cd ) olur.

Sonuç source ve destination piksellerin minimumudur.. Tabii bu işlemin renk bileşenleri (RGBA) bazında yapıldığını unutmayın.

maksimum için:

Cf = max(Cs, Cd) olur.

GL_EXT_blend_minmax extension'ına bakın.

Bu hatırlatmadan sonra esas konumuza geri dönelim. Additive Blending işlemi matematiksel olarak ağırlıklı toplamadan (weighted sum) başka bir şey değil. Matematiği ise şöyle:

Rs, Gs, Bs, As --> Tek bir source pixel'i belirten 4'lü olsun. Rd, Gd, Bd, Ad --> Tek bir destination pixel'i belirten 4'lü olsun.

Sr, Sg, Sb, Sa ---> Tek bir source pixel'in blend faktörlerini belirtsin (ağırlık parametreleri) Dr, Dg, Db, Da ---> Tek bir destination pixel'in blend faktörlerini belirtsin (ağırlık parametreleri)

Blending sonucu oluşan renk: color = (Rs * Sr + Rd * Dr) , (Gs * Sg + Gd * Dg) , (Bs * Sb + Bd * Db) , (As * Sa + Ad * Da)

Final RGBA değeri yukarıda görülüyor. Şimdi bu bilgi işimize nasıl yarayacak?

Not: Alpha değerinin 1 olması opaklık durumudur. Alpha değerinin 0 olması transparanlık durumudur.

Fade in durumunu ele alalım. Sahnemiz siyah ekrandan görünür hale gelsin. Şimdi böyle bir senaryoda ekrana çizdireceğimiz quad'ın renginin siyah olması, alpha değerinin de 1'den 0'a gitmesi gerekir (nedeni aşağıda detaylı olarak anlatılacak..). Çünkü böyle bir durumda:

Sahne --------> Destination Quad --------> Source olur ve blending faktörleri de GL_SRC_ALPHA ile GL_ONE_MINUS_SRC_ALPHA seçilir. Yani Sr, Sg, Sb, Sa 1'den 0'a gider (Quad'ın alpha'sını 1'den 0'a götürüyorduk unutmayın..) , Dr, Dg, Db, Da 0'dan 1'e gider çünkü bunlara 1 - Quad Alpha değeri atanır.

Klavyeyle gezinmek için ← ve → tuşları.