render.SetStencilPassOperation

Örnek
Bu, az önce çizdiğimiz her şey dışındaki her şeyi boşaltmak için geçiş işlemini kullanır (Lex'in Stencil Eğitimi'nden alınmıştır).
hook.Add( "PostDrawOpaqueRenderables", "Stencil Tutorial Example", function()
-- Her şeyi bilinen iyi duruma sıfırla
render.SetStencilWriteMask( 0xFF )
render.SetStencilTestMask( 0xFF )
render.SetStencilReferenceValue( 0 )
render.SetStencilCompareFunction( STENCIL_ALWAYS )
render.SetStencilPassOperation( STENCIL_KEEP )
render.SetStencilFailOperation( STENCIL_KEEP )
render.SetStencilZFailOperation( STENCIL_KEEP )
render.ClearStencil()
-- Stencil'ları etkinleştir
render.SetStencilEnable( true )
-- Referans değerini 1 olarak ayarla. Karşılaştırma fonksiyonunun test ettiği değer budur
render.SetStencilReferenceValue( 1 )
-- Sadece pikselleri 1 OLMAYAN şeyleri çiz. Şu anda bu her şey anlamına geliyor.
render.SetStencilCompareFunction( STENCIL_NOTEQUAL )
-- Ekrana bir şey çizilirse, çizdiği pikselleri 1 olarak ayarla
render.SetStencilPassOperation( STENCIL_REPLACE )
-- Varlıklarımızı çiz. Normal şekilde çizilecekler
for _, ent in ipairs( ents.FindByClass( "prop_physics" ) ) do
ent:DrawModel()
end
-- Bu noktada, daha önce çizdiğimiz hiçbir şeyin üzerine çizim yapamayız.
-- Bu yüzden, ekranı temizlersek, varlıklarımız hala orada olacaktır.
render.ClearBuffersObeyStencil( 0, 148, 133, 255, false )
-- Her şeyin tekrar normal şekilde render edilmesine izin ver
render.SetStencilEnable( false )
end )
Çıktı: 

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