render.SetRenderTargetEx
Açıklama
COLOR[n]'nin belirtilen dizinine sahip render hedefini belirtilen rt'ye ayarlar, bu da Çoklu Render Hedefleri (MRT) ile çalışmanıza olanak tanır. Standart shader'lar MRT kullanmadığı için, bunu Shaders/screenspace_general adresinde faydalı bulabilirsiniz.
MRT, render.DrawScreenQuad gibi 2D render fonksiyonları ile çalışmaz. Bunun yerine, cam.Start2D kullanarak bir render.DrawQuad render edebilirsiniz.
MSAA ile render yapmaya çalışır ve ana RenderTarget'ı başka bir RenderTarget ile ayarlarsanız, hiçbir şey render edilmeyecektir.
MRT hakkındaki Direct3D 9 dokümantasyonuna bağlantı
Çoklu render hedeflerinin aşağıdaki kısıtlamaları vardır:
- Kenar yumuşatma (antialiasing) desteklenmez.
Argümanlar
Örnek
2D bağlamında Çoklu Render Hedefleri:
local w, h = ScrW(), ScrH()
local tex0 = GetRenderTarget( "ExampleRT0", w, h )
local tex1 = GetRenderTarget( "ExampleRT1", w, h )
local mat = Material("pp/ssao") -- özel shader ve COLOR0, COLOR1 çıktısı olan materyaliniz
-- Ayrıntılar için https://github.com/meetric1/gmod_shader_guide/tree/main?tab=readme-ov-file#example-8---multi-render-targets adresine bakın
local quad = {
vector_origin,
Vector(w, 0),
Vector(w, h),
Vector(0, h),
}
local function DrawScreenQuadMRT()
cam.Start2D()
cam.IgnoreZ( true )
render.DrawQuad(
quad[1],
quad[2],
quad[3],
quad[4]
)
cam.IgnoreZ( false )
cam.End2D()
end
hook.Add( "RenderScreenspaceEffects", "2DMRT", function()
render.SetRenderTargetEx(0, tex0)
render.SetRenderTargetEx(1, tex1)
render.SetMaterial(mat)
DrawScreenQuadMRT()
render.SetRenderTargetEx(1)
render.SetRenderTargetEx(0)
end )
Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord