render.SetRenderTargetEx

  render.SetRenderTargetEx( number rtIndex, ITexture texture = nil )

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

1 number rtIndex
Pixel-shader'dan gelen COLOR[n] çıktısının semantics dizini. Min: 0, maks: 3.
2 ITexture texture = nil
Kullanılacak yeni render hedefi.

Ö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