Garry's Mod Wiki

render.RenderView

  render.RenderView( table view = nil )

Description

Renders the scene with the specified viewData to the current active render target.

Static props and LODs are rendered improperly due to incorrectly perceived distance.

Issue Tracker: 1330
Using render.RenderView on a RenderTarget texture in a 3d context like SWEP:PostDrawViewModel() while drawing the RenderTarget texture causes screen flickers.

Arguments

1 table view = nil
The view data to be used in the rendering. See ViewData structure. Any missing value is assumed to be that of the current view. Similarly, you can make a normal render by simply not passing this table at all.

Example

How you could use this to draw the view on a derma panel.

local frame = vgui.Create( "DFrame" ) frame:SetSize( ScrW() - 100, ScrH() - 100 ) frame:Center() frame:MakePopup() function frame:Paint( w, h ) local x, y = self:GetPos() local old = DisableClipping( true ) -- Avoid issues introduced by the natural clipping of Panel rendering render.RenderView( { origin = Vector( 0, 0, 0 ), angles = Angle( 0, 0, 0 ), x = x, y = y, w = w, h = h } ) DisableClipping( old ) end
Output:

Example

Drawing the view to a render target.

local renderTarget = GetRenderTarget( "ExampleRenderTarget", 1024, 1024 ) hook.Add("PostRender", "RenderTargetExample", function() render.PushRenderTarget( renderTarget ) local view = { fov = 90, x = CurTime() * 100 % 1024, } cam.Start2D() render.RenderView( view ) cam.End2D() render.PopRenderTarget() end) local customMaterial = CreateMaterial( "example_rt_mat2", "UnlitGeneric", { ["$basetexture"] = renderTarget:GetName(), } ) hook.Add( "HUDPaint", "ExampleDraw", function() surface.SetDrawColor( 255, 255, 255, 255 ) surface.SetMaterial( customMaterial ) surface.DrawTexturedRect( 0, 0, customMaterial:GetTexture( "$basetexture" ):Width() / 2, customMaterial:GetTexture( "$basetexture" ):Height() / 2 ) end )
Output:
image.png