menu_bookDocumentation

RenderOptions: Game, Overlay, Bloom, AfterUI Render Layers — and Renderer.Attributes for Shader Parameters

calendar_today May 4, 2026 schedule ~1 min read person patrickjr verified 50

RenderOptions: Render Layers for SceneObjects

RenderOptions controls which render layers a Renderer component's SceneObject appears in. It's exposed as a property on all Renderer subclasses.

Render Layers

CSHARP
// Access via any Renderer component
renderer.RenderOptions.Game = true;    // default — renders in the main game layer
renderer.RenderOptions.Overlay = false; // renders above everything else (no depth test)
renderer.RenderOptions.Bloom = false;   // contributes to the bloom effect
renderer.RenderOptions.AfterUI = false; // renders after UI (e.g., crosshairs, HUD elements)

Common Patterns

CSHARP
// Weapon viewmodel — render above world geometry
weaponRenderer.RenderOptions.Overlay = true;

// Glowing object — contribute to bloom
glowRenderer.RenderOptions.Bloom = true;

// Shadow-only object (invisible but casts shadows)
// Use ModelRenderer.ShadowRenderType.ShadowsOnly instead

// Render after UI (e.g., a 3D cursor)
cursorRenderer.RenderOptions.AfterUI = true;

Renderer.Attributes

Renderer.Attributes provides access to the SceneObject's RenderAttributes for setting shader parameters:
CSHARP
// Set a shader parameter on the renderer
renderer.Attributes.Set( "g_flGlowAmount", 1.0f );
renderer.Attributes.Set( "g_vTintColor", Color.Red );
renderer.Attributes.GrabFrameTexture( "ColorBuffer" );  // copy backbuffer to texture

Attributes are not saved to disk and are not cloned. They persist as long as the SceneObject exists.

ExecuteBefore / ExecuteAfter

CSHARP
// Execute a CommandList immediately before/after this object renders
renderer.ExecuteBefore = myCommandList;
renderer.ExecuteAfter = myCommandList;

These are executed on the render thread, not the main thread.

Was this helpful?