render.OverrideBlend

  render.OverrideBlend( boolean enabled, number sourceMultiplier, number destinationMultiplier, number blendingFunction )
  render.OverrideBlend( boolean enabled, number sourceColorMultiplier, number destinationColorMultiplier, number colorBlendingFunction, number sourceAlphaMultiplier = none, number destinationAlphaMultiplier = none, number alphaBlendingFunction = none )
  render.OverrideBlend( boolean enabled )

Açıklama

Yaklaşan çizim işlemlerinden etkilenen her piksel için nihai renk ve alfanın nasıl hesaplandığını geçersiz kılar.

Bir çizim işlemi gerçekleştirildiğinde, render sistemi çizim işleminden etkilenen her pikseli inceler ve pikselin mevcut rengini ("Hedef" veya "Dst" renk olarak adlandırılır) çizim işlemi tarafından üretilen yeni renkle ("Kaynak" veya "Src" renk olarak adlandırılır) birleştirerek ("Karıştırarak") yeni rengini belirler.

Bu fonksiyon, nihai piksel rengini üretmek için bu iki rengin (Kaynak ve Hedef) nasıl birleştirileceğini kontrol etmenizi sağlar.

Color'lar (0-255) aralığında değerler kullanırken, burada kullanılan renk ve alfa değerlerinin (0-1) aralığına normalize edildiğini bilmek önemlidir, böylece birlikte çarpılarak hala (0-1) aralığında bir değer üretebilirler.

Varsayılan Argümanlar

1 boolean enabled
Karışım Geçersiz Kılmalarını (Blend Overrides) etkinleştirmek için true olarak ayarlayın.
2 number ile BLEND enum sourceMultiplier
Bu, Karıştırma Fonksiyonuna gönderilmeden önce etkilenen her pikselin Kaynak renk ve alfasının hangi değerle çarpılacağını belirler.
BLEND enum enumarasyonlarından biridir.
3 number ile BLEND enum destinationMultiplier
Bu, Karıştırma Fonksiyonuna gönderilmeden önce etkilenen her pikselin Hedef renk ve alfasının hangi değerle çarpılacağını belirler.
BLEND enum enumarasyonlarından biridir.
4 number ile BLENDFUNC enum blendingFunction
Kaynak ve Hedef renk ve alfası ilgili çarpanlarıyla çarpıldıktan sonra, onları piksel için nihai renk ve alfaya birleştiren Karıştırma Fonksiyonuna geçirilirler.
BLENDFUNC enum enumarasyonlarından biridir.
Argüman Aşırı Yüklemesi: Ayrı Renk ve Alfa Karıştırması
1 boolean enabled
Karışım Geçersiz Kılmalarını (Blend Overrides) etkinleştirmek için true olarak ayarlayın.
2 number ile BLEND enum sourceColorMultiplier
Bu, Renk Karıştırma Fonksiyonuna gönderilmeden önce etkilenen her pikselin Kaynak renginin hangi değerle çarpılacağını belirler.
BLEND enum enumarasyonlarından biridir.
3 number ile BLEND enum destinationColorMultiplier
Bu, Renk Karıştırma Fonksiyonuna gönderilmeden önce etkilenen her pikselin Hedef renginin hangi değerle çarpılacağını belirler.
BLEND enum enumarasyonlarından biridir.
4 number ile BLENDFUNC enum colorBlendingFunction
Kaynak ve Hedef renkleri ilgili çarpanlarıyla çarpıldıktan sonra, onları piksel için nihai renk ve alfaya birleştiren Renk Karıştırma Fonksiyonuna geçirilirler.
BLENDFUNC enum enumarasyonlarından biridir.
5 number ile BLEND enum sourceAlphaMultiplier = none
Bu, Alfa Karıştırma Fonksiyonuna gönderilmeden önce etkilenen her pikselin Kaynak alfasının hangi değerle çarpılacağını belirler.
BLEND enum enumarasyonlarından biridir.
6 number ile BLEND enum destinationAlphaMultiplier = none
Bu, Alfa Karıştırma Fonksiyonuna gönderilmeden önce etkilenen her pikselin Hedef alfasının hangi değerle çarpılacağını belirler.
BLEND enum enumarasyonlarından biridir.
7 number ile BLENDFUNC enum alphaBlendingFunction = none
Kaynak ve Hedef alfaları ilgili çarpanlarıyla çarpıldıktan sonra, onları piksel için nihai alfaya birleştiren Alfa Karıştırma Fonksiyonuna geçirilirler.
Argüman Aşırı Yüklemesi: Karışım Geçersiz Kılmalarını Devre Dışı Bırakma
1 boolean enabled
Karışım geçersiz kılmalarını devre dışı bırakmak için false olarak ayarlayın.

Örnek

Bu örnekte, oyuncumuzun kafasının üzerine bir şimşek çakarız.

Şimşeği PreDrawTranslucentRenderables kancasında (hook) çizmemeliyiz çünkü bu, şimşeğin arkasındaki saydam nesnelerin renderlanmasında sorunlara neden olur, ancak bu, fonksiyonun nasıl çalıştığına dair hızlı bir örnektir. Normalde, özel bir lua efektinin EFFECT:Render'ında çizilmelidir.

Bu geçersiz kılma Linux'ta düzgün çalışmayabilir

Sorun Takipçisi: 5693
-- Render edilecek sprite dokumuz. Bu dokuyu render.OverrideBlend olmadan -- renderlamak, şimşek huzmesinin etrafında siyah kenarlıklara neden olacaktır. local lightningMaterial = Material("sprites/lgtning") hook.Add( "PreDrawTranslucentRenderables", "LightningExample", function(isDrawingDepth, isDrawingSkybox) if isDrawingDepth or isDrawSkybox then return end local ply = Entity(1) if !IsValid(ply) then return end -- Şimşeğe biraz hareket katmak için kullanılacak rastgele bir UV hesapla local uv = math.Rand(0, 1) -- Dokudan gelen renk ve alfayı yorumlamak için karışım geçersiz kılmasını etkinleştir. render.OverrideBlend( true, BLEND_SRC_COLOR, BLEND_SRC_ALPHA, BLENDFUNC_ADD, BLEND_ONE, BLEND_ZERO, BLENDFUNC_ADD ) render.SetMaterial(lightningMaterial) -- Oyuncunun üzerindeki bir çizgi boyunca rastgele kaydırılmış noktalarda bir şimşek huzmesi renderla. render.StartBeam(5) render.AddBeam(ply:GetPos() + Vector(0,0,035), 20, uv, Color(255,255,255,255)) render.AddBeam(ply:GetPos() + Vector(0,0,135) + Vector(math.Rand(-20,20),math.Rand(-20,20),0), 20, uv*2, Color(255,255,255,255)) render.AddBeam(ply:GetPos() + Vector(0,0,235) + Vector(math.Rand(-20,20),math.Rand(-20,20),0), 20, uv*3, Color(255,255,255,255)) render.AddBeam(ply:GetPos() + Vector(0,0,335) + Vector(math.Rand(-20,20),math.Rand(-20,20),0), 20, uv*4, Color(255,255,255,255)) render.AddBeam(ply:GetPos() + Vector(0,0,435) + Vector(math.Rand(-20,20),math.Rand(-20,20),0), 20, uv*5, Color(255,255,255,255)) render.EndBeam() -- Karışım geçersiz kılmasını devre dışı bırak render.OverrideBlend( false ) end )
Çıktı:

Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord