VERGELua API

render

Render state, scene drawing, render targets, stencil.

render.Viewport(x:number, y:number, w:number, h:number)

Set the render viewport rectangle.

render.GetViewport():table

Return the current viewport as {x, y, w, h}.

render.DepthRange(zNear:number, zFar:number)

Set the near and far depth buffer range.

render.GetDepthRange():number, number

Return the last set zNear and zFar.

render.SetRenderTarget(texture:Texture?)

Bind a render target, or nil to bind the back buffer.

render.GetRenderTarget():Texture

Return the current render target texture; nil if none bound.

render.ClearBuffers(clearColor:boolean, clearDepth:boolean, clearStencil:boolean)

Clear the color, depth and/or stencil buffers.

render.ClearColor3ub(r:number, g:number, b:number)

Set the clear color to an RGB byte value.

render.ClearColor4ub(r:number, g:number, b:number, a:number)

Set the clear color to an RGBA byte value.

render.OverrideDepthEnable(enable:boolean, depthEnable:boolean)

Override depth testing on or off.

render.OverrideAlphaWriteEnable(enable:boolean, alphaWriteEnable:boolean)

Override alpha channel writes on or off.

render.PushRenderTargetAndViewport()

Save the current render target and viewport.

render.PopRenderTargetAndViewport()

Restore the saved render target and viewport.

render.SetStencilEnable(on:boolean)

Enable or disable the stencil buffer.

render.SetStencilFailOperation(op:number)

Set the stencil operation when the stencil test fails.

render.SetStencilZFailOperation(op:number)

Set the stencil operation when the depth test fails.

render.SetStencilPassOperation(op:number)

Set the stencil operation when both tests pass.

render.SetStencilCompareFunction(fn:number)

Set the stencil compare function.

render.SetStencilReferenceValue(ref:number)

Set the stencil reference value.

render.SetStencilTestMask(mask:number)

Set the stencil test mask.

render.SetStencilWriteMask(mask:number)

Set the stencil write mask.

render.ClearStencilBufferRectangle(x0:number, y0:number, x1:number, y1:number, value:number)

Clear a rectangle of the stencil buffer to a value.

render.DrawScreenSpaceQuad(material:Material)

Draw a fullscreen quad with the given material.

render.ForcedMaterialOverride(material:Material)

Force every model to render with the material; pass nil to clear.

render.SetBlend(blend:number)

Set the view blend (0-1); applies to the current render pass.

render.GetBlend():number

Return the current blend value.

render.SetColorModulation(r:number, g:number, b:number)

Tint the view RGB; combine with SetBlend for opacity.

render.GetColorModulation():Vector3

Return the current color modulation as r, g, b.

render.Push3DView(view:ViewSetup, clearFlags:number, texture:Texture)

Push a 3D view rendering into the target texture (nil = screen).

render.PopView()

Pop the last pushed view.

render.CreateRenderTarget(w:number, h:number):Texture

Allocate an RGBA render target texture of the given size.

render.ViewDrawScene(drawSkybox:boolean, flags:number, view:ViewSetup, viewID:number?, drawFlags:number?, drawViewModel:boolean?, unk1:number?, unk2:number?)

Render the 3D scene into the current view and render target.

Examples

Enemy chams (wallhack)

Color every enemy a flat red that shows through walls. Uses materials.Create, DrawModel and render.SetColorModulation.

-- One flat material drawn with depth ignored so it appears through walls.
local mat = materials.Create("verge_chams", [[
"UnlitGeneric"
{
    "$basetexture" "vgui/white"
    "$model" "1"
}
]])

callbacks.Register("DrawModel", function(ctx)
    local ent = ctx:GetEntity()
    if not ent:IsValid() or not ent:IsPlayer() then
        return
    end
    local me = client.GetLocalPlayer()
    if not me:IsValid() or ent:GetTeam() == me:GetTeam() then
        return
    end
    render.SetColorModulation(1, 0.15, 0.15)
    ctx:ForcedMaterialOverride(mat)
end)