Render Hook Order

Render Hook Sırası

Bu, istemci tarafı render hook'larının çağrılma sırasıdır. Bir hook listede ne kadar aşağıdaysa, çizim önceliği o kadar yüksektir. Bu liste yalnızca referans olarak kullanılmalıdır - bir kareyi (frame) gerçek zamanlı olarak renderlarken, oyun motoru yansıtıcı özellikleri elde etmek, render hedeflerini çizmek ve render.RenderView ile render.RenderHUD çağrılarına tepki vermek için belirli hook gruplarını birden çok kez çağırabilir.

Hook Render bağlamı Notlar
WEAPON:RenderScreen Yok Çağrılma koşulu: Silah betiklenmiştir. Çizim yapmak için bağlamın cam ile ayarlanması gerekir
GM:RenderScene Yok Çizim yapmak için bağlamın cam ile ayarlanması gerekir. Bu hook'ta true döndürmek, doğrudan GM:PostRender'a atlar
GM:DrawMonitors Yok Çizim yapmak için bağlamın cam ile ayarlanması gerekir
GM:PreDrawSkyBox 3D Çağrılma koşulu: r_3dsky etkin ve EyePos dünya sınırları içinde
GM:SetupSkyboxFog 3D Çağrılma koşulu: r_3dsky etkin ve EyePos dünya sınırları içinde
WEAPON:TranslateFOV 3D Çağrılma koşulu: Silah betiklenmiştir
GM:PostDraw2DSkyBox 3D Çağrılma koşulu: r_skybox, r_drawopaqueworld ve r_drawworld etkin ve EyePos dünya sınırları içinde
DrawOpaqueRenderables (false, r_skybox etkin) 3D Çağrılma koşulu: r_3dsky, r_drawentities ve r_drawopaquerenderables etkin ve EyePos dünya sınırları içinde. Skybox'taki opak varlıklar için
DrawTranslucentRenderables (false, r_skybox etkin) 3D Çağrılma koşulu: r_3dsky etkin ve EyePos dünya sınırları içinde. Skybox'taki yarı saydam varlıklar için
GM:PostDrawSkyBox 3D Çağrılma koşulu: r_3dsky etkin ve EyePos dünya sınırları içinde
DrawWaterReflections 3D Çağrılma koşulu: r_WaterDrawReflection ve r_drawworld etkin ve yansıtıcı su görünür
DrawWorld 3D
GM:GetMotionBlurValues 3D
GM:PreDrawViewModels 3D
ENTITY:Draw 3D RENDERGROUP_VIEWMODEL render grubuna sahip animasyonlu, betiklenmiş varlıklar için
ENTITY:RenderOverride 3D RENDERGROUP_VIEWMODEL render grubuna sahip, bir silaha bağlı olmayan viewmodel dışı varlıklar veya viewmodel'lar için
GM:PreDrawViewModel 3D Bir silaha bağlı olan oyun motorunun "viewmodel" ve "predicted_viewmodel" varlıkları için
WEAPON:PreDrawViewModel 3D Oyun modunun implementasyonuna bağlıdır
ENTITY:RenderOverride 3D Bir silaha bağlı olan oyun motorunun "viewmodel" ve "predicted_viewmodel" varlıkları için
WEAPON:ViewModelDrawn 3D Bir silaha bağlı olan oyun motorunun "viewmodel" ve "predicted_viewmodel" varlıkları için
GM:PostDrawViewModel 3D Bir silaha bağlı olan oyun motorunun "viewmodel" ve "predicted_viewmodel" varlıkları için
WEAPON:PostDrawViewModel 3D Oyun modunun implementasyonuna bağlıdır
GM:PreDrawPlayerHands 3D Oyun modunun implementasyonuna bağlıdır
ENTITY:RenderOverride 3D Oyun modunun implementasyonuna bağlıdır
GM:PostDrawPlayerHands 3D Oyun modunun implementasyonuna bağlıdır
ENTITY:DrawTranslucent 3D RENDERGROUP_VIEWMODEL_TRANSLUCENT render grubuna sahip animasyonlu, betiklenmiş varlıklar için
ENTITY:RenderOverride 3D RENDERGROUP_VIEWMODEL_TRANSLUCENT render grubuna sahip varlıklar için
GM:PreDrawEffects 3D
GM:RenderScreenspaceEffects 2D
GM:PostDrawEffects 2D
GM:PreDrawHalos 2D Lua'dan çağrılan hook, bu da sonrasında daha fazla GM:PostDrawEffects hook'unun çağrılabileceği anlamına gelir
GM:PreDrawHUD 2D
DrawActiveHUD 2D Çağrılma koşulu: r_drawvgui etkin ve oyun duraklatılmamış
GM:PostDrawHUD 2D
GM:HUDShouldDraw 2D Çağrılma koşulu: r_drawvgui etkin. NetGraph için
GM:DrawOverlay 2D Çağrılma koşulu: r_drawvgui etkin
GM:PostRenderVGUI 2D
GM:PostRender Yok Çizim yapmak için bağlamın cam ile ayarlanması gerekir

Hook Blokları

Basitlik sağlamak için, aynı fonksiyonların tekrarlı listelenmesini azaltmak amacıyla hook "blokları" tanımlanacaktır. Bu bloklar ayrıca, Source render motorunda birden çok kez çağrılan metod gruplarıyla da ilişkili olabilir.

DrawWaterReflections

Hook Notlar
GM:SetupWorldFog
GM:PostDraw2DSkyBox Çağrılma koşulu: r_drawopaqueworld ve r_drawworld etkin
DrawOpaqueRenderables(false, true) Çağrılma koşulu: r_drawopaquerenderables etkin. Yansıtıcı suya tamamen batmamış dünyadaki opak varlıklar için yansımaları çizer
DrawTranslucentRenderables(false, false) Yansıtıcı suya tamamen batmamış dünyadaki yarı saydam varlıklar için yansımaları çizer
WEAPON:TranslateFOV Çağrılma koşulu: Silah betiklenmiştir
DrawOpaqueRenderables(false, false) Çağrılma koşulu: r_drawopaquerenderables etkin. Yansıtıcı sudaki opak varlıklar için kırılmaları (refraction) çizer
DrawTranslucentRenderables(false, false) Yansıtıcı sudaki yarı saydam varlıklar için kırılmaları çizer

DrawWorld

Hook Notlar
GM:NeedsDepthPass
GM:SetupWorldFog
DrawOpaqueRenderables(false, false) Çağrılma koşulu: r_drawentities ve r_drawopaquerenderables etkin. Yansıtıcı suya tamamen batmamış dünyadaki opak varlıklar için
DrawTranslucentRenderables(false, false) Yansıtıcı suya tamamen batmamış dünyadaki yarı saydam varlıklar için

DrawOpaqueRenderables

Bu blok, PreDrawRenderables ve PostDrawRenderables'ın hangi argümanlarla çağrılacağını gösteren iki boolean argümanı belirtir. İlk argüman, render işleminin derinlik tamponuna (depth buffer) yazıp yazmadığını belirtir ve true ise yazar. İkinci argüman ise render işleminin skybox nesneleri için yapılıp yapılmadığını belirtir ve true ise yapar.

GM:PrePlayerDraw ve GM:PostPlayerDraw, her görünür, opak oyuncu için çağrılırken; ENTITY:RenderOverride de her görünür, opak varlık için çağrılacaktır. Varlıkların çizilme sırası, dünyadaki görüntü alanına (viewport) olan uzaklıklarına bağlıdır ve bu nedenle varlık türü hook eşleşmeleri herhangi bir sırada çağrılabilir. Başka bir deyişle, nesne render sırasına bağlı olarak varlık hook'ları oyuncu hook'larından önce çağrılabilir. Bununla birlikte, garantili olan tek hook sıralamaları şunlardır:

Opak render grupları şunları içerir: RENDERGROUP_OPAQUE_HUGE, RENDERGROUP_OPAQUE, RENDERGROUP_BOTH ve RENDERGROUP_OPAQUE_BRUSH.

Hook Notlar
GM:ShouldDrawLocalPlayer Yerel oyuncu opaksa, thirdperson concommand'ı aktif değilse ve GM:CalcView "drawviewer" anahtarı true olarak ayarlanmış bir tablo döndürmediyse çağrılır. Dönüş değeri, çerçeve başına yalnızca bir kez çağrılması için diğer tüm ilgili Draw*Renderables blokları için önbelleğe alınır
ENTITY:RenderOverride Opak oyuncular için
GM:PrePlayerDraw Opak oyuncular için
GM:PostPlayerDraw Opak oyuncular için
ENTITY:Draw Opak, animasyonlu, betiklenmiş varlıklar için
ENTITY:RenderOverride Opak varlıklar için
WEAPON:DrawWorldModel Opak, betiklenmiş silahlar için
ENTITY:RenderOverride Opak silahlar için
GM:PostDrawOpaqueRenderables (isDrawingDepth, isDrawingSkybox)

DrawTranslucentRenderables

DrawOpaqueRenderables'daki önceki mantığın tamamı burada da geçerlidir.

Yarı saydam render grupları şunları içerir: RENDERGROUP_TRANSLUCENT ve RENDERGROUP_BOTH.

Hook Notlar
GM:ShouldDrawLocalPlayer Yerel oyuncu yarı saydamsa, thirdperson concommand'ı aktif değilse ve GM:CalcView "drawviewer" anahtarı true olarak ayarlanmış bir tablo döndürmediyse çağrılır. Dönüş değeri, çerçeve başına yalnızca bir kez çağrılması için diğer tüm ilgili Draw*Renderables blokları için önbelleğe alınır
ENTITY:RenderOverride Yarı saydam oyuncular için
GM:PrePlayerDraw Yarı saydam oyuncular için
GM:PostPlayerDraw Yarı saydam oyuncular için
ENTITY:Draw Yarı saydam, animasyonlu, betiklenmiş varlıklar için
ENTITY:RenderOverride Yarı saydam varlıklar için
WEAPON:DrawWorldModelTranslucent Yarı saydam, betiklenmiş silahlar için
ENTITY:RenderOverride Yarı saydam silahlar için
GM:DrawPhysgunBeam Oyun motorunun physgun_beam varlıkları için
GM:PostDrawTranslucentRenderables (isDrawingDepth, isDrawingSkybox)

DrawActiveHUD

Hook Notlar
WEAPON:DrawHUDBackground Çağrılma koşulu: Silah betiklenmiştir
GM:HUDPaint
GM:HUDDrawTargetID
GM:HUDDrawPickupHistory
GM:DrawDeathNotice
WEAPON:DrawHUD
GM:HUDDrawScoreBoard
WEAPON:TranslateFOV Çağrılma koşulu: Silah betiklenmiştir
WEAPON:DoDrawCrosshair Çağrılma koşulu: Silah betiklenmiştir ve SWEP.DrawCrosshair değeri true olarak ayarlanmıştır
GM:HUDShouldDraw CHudWeaponSelection için

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