Garry's Mod Wiki

GetRenderTarget

ITexture GetRenderTarget( string name, number width, number height, boolean additive = false )

Description

Creates or gets the rendertarget with the given name.

See GetRenderTargetEx for an advanced version of this function with more options.

This crashes when used on a cubemap texture.

Issue Tracker: 2885

Arguments

1 string name
The internal name of the render target.
2 number width
The width of the render target, must be power of 2. If not set to PO2, the size will be automatically converted to the nearest PO2 size.
3 number height
The height of the render target, must be power of 2. If not set to PO2, the size will be automatically converted to the nearest PO2 size.
4 boolean additive = false
Sets whenever the rt should be additive.

Returns

1 ITexture
The render target

Example

Example usage of a render target

-- Give the RT a size local TEX_SIZE = 512 -- Create the RT local tex = GetRenderTarget( "ExampleRT", TEX_SIZE, TEX_SIZE ) -- Write something to the RT -- Note how this is not in a render hook, in this case we only write to the render target once local txBackground = surface.GetTextureID( "models/weapons/v_toolgun/screen_bg" ) render.PushRenderTarget( tex ) cam.Start2D() surface.SetDrawColor( color_white ) surface.SetTexture( txBackground ) surface.DrawTexturedRect( 0, 0, TEX_SIZE, TEX_SIZE ) cam.End2D() render.PopRenderTarget() -- Create a render-able material for our render target local myMat = CreateMaterial( "ExampleRTMat", "UnlitGeneric", { ["$basetexture"] = tex:GetName() -- Make the material use our render target texture } ) -- Draw it on screen hook.Add( "HUDPaint", "DrawExampleMat", function() surface.SetDrawColor( color_white ) surface.SetMaterial( myMat ) surface.DrawTexturedRect( 25, 25, TEX_SIZE, TEX_SIZE ) end )

Example

Example usage of a render target with transparency/alpha channel

local textureRT = GetRenderTarget( "ExampleRTwithAlpha", 512, 512 ) local mat = CreateMaterial( "ExampleRTwithAlpha_Mat", "UnlitGeneric", { ['$basetexture'] = textureRT:GetName(), ["$translucent"] = "1" -- This is necessary to render the RT with alpha channel } ); hook.Add( "HUDPaint", "ExampleRTwithAlpha_Render", function() render.PushRenderTarget( textureRT ) cam.Start2D() -- Clear the RT render.Clear( 0, 0, 0, 0 ) -- Draw some basic animated stuff on it draw.RoundedBox( 0, 20, 100 + math.sin( CurTime() ) * 50, 50, 50, color_white ) -- Draw with transparency draw.RoundedBox( 0, 120, 100 + math.sin( CurTime() ) * 50, 50, 50, Color( 255, 0, 0, 100 ) ) cam.End2D() render.PopRenderTarget() -- Draw our render target on screen so we can see our result surface.SetDrawColor( color_white ) surface.SetMaterial( mat ) surface.DrawTexturedRect( 50, 50, 512, 512 ) end )

Page Links


Special Pages


Wikis

?

Render Time: 41ms

DB GetPage 3
Generate Html 17
SaveChanges (1) 12
Render Body 0
Render Sidebar 6