/*--------------------------------------------------------- Register the convars that will control this effect ---------------------------------------------------------*/ local pp_stereoscopy = CreateClientConVar( "pp_stereoscopy", "0", false, false ) // On/Off local pp_stereoscopy_size = CreateClientConVar( "pp_stereoscopy_size", "6", false, false ) /*--------------------------------------------------------- Can be called from engine or hooks using bloom.Draw ---------------------------------------------------------*/ function RenderStereoscopy( ViewOrigin, ViewAngles ) render.Clear( 0, 0, 0, 255 ) local w = ScrW() / 2.2 local h = ScrH() / 2.2 local Right = ViewAngles:Right() * pp_stereoscopy_size:GetFloat() local view = {} view.y = ScrH() / 2 - h / 2 view.w = w view.h = h view.angles = ViewAngles // Left view.x = ScrW() / 2 - w - 10 view.origin = ViewOrigin + Right render.RenderView( view ) // Right view.x = ScrW() / 2 + 10 view.origin = ViewOrigin - Right render.RenderView( view ) end /*--------------------------------------------------------- The function to draw the bloom (called from the hook) ---------------------------------------------------------*/ local function DrawInternal( ViewOrigin, ViewAngles ) if ( !pp_stereoscopy:GetBool() ) then return end RenderStereoscopy( ViewOrigin, ViewAngles ) // Return true to override drawing the scene return true end hook.Add( "RenderScene", "RenderStereoscopy", DrawInternal )