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:
- Oyuncular için: (GM:ShouldDrawLocalPlayer, eğer çizilen oyuncu varlığı yerel oyuncu ise önce kontrol edilir) -> ENTITY:RenderOverride -> GM:PrePlayerDraw -> GM:PostPlayerDraw
- Varlıklar için: (ENTITY:Draw, eğer varlık betiklenmiş ve animasyonlu ise) -> ENTITY:RenderOverride
- Silahlar için: (WEAPON:DrawWorldModel, eğer silah betiklenmiş ise) -> ENTITY:RenderOverride
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