new post | browse code | authors | help | about

LuaBin 2.0

Viewing file root / lua / postprocess / stereoscopy.lua

  1.  
  2. /*---------------------------------------------------------
  3.    Register the convars that will control this effect
  4. ---------------------------------------------------------*/  
  5. local pp_stereoscopy                    = CreateClientConVar( "pp_stereoscopy", "0", false, false )                             // On/Off
  6. local pp_stereoscopy_size               = CreateClientConVar( "pp_stereoscopy_size", "6", false, false )
  7.  
  8.  
  9. /*---------------------------------------------------------
  10.    Can be called from engine or hooks using bloom.Draw
  11. ---------------------------------------------------------*/
  12. function RenderStereoscopy( ViewOrigin, ViewAngles )
  13.  
  14.         render.Clear( 0, 0, 0, 255 )
  15.        
  16.         local w = ScrW() / 2.2
  17.         local h = ScrH() / 2.2
  18.        
  19.         local Right = ViewAngles:Right() * pp_stereoscopy_size:GetFloat()
  20.        
  21.         local view = {}
  22.        
  23.                 view.y = ScrH() / 2 - h / 2
  24.                 view.w = w
  25.                 view.h = h
  26.                 view.angles = ViewAngles
  27.        
  28.         // Left
  29.         view.x = ScrW() / 2 - w - 10
  30.         view.origin = ViewOrigin + Right
  31.         render.RenderView( view )
  32.  
  33.         // Right
  34.         view.x = ScrW() / 2 + 10
  35.         view.origin = ViewOrigin - Right
  36.         render.RenderView( view )
  37.        
  38. end
  39.  
  40.  
  41. /*---------------------------------------------------------
  42.    The function to draw the bloom (called from the hook)
  43. ---------------------------------------------------------*/
  44. local function DrawInternal( ViewOrigin, ViewAngles )
  45.  
  46.         if ( !pp_stereoscopy:GetBool() ) then return end
  47.  
  48.         RenderStereoscopy( ViewOrigin, ViewAngles )
  49.                                
  50.         // Return true to override drawing the scene
  51.         return true
  52.  
  53. end
  54.  
  55.  
  56.  
  57. hook.Add( "RenderScene", "RenderStereoscopy", DrawInternal )
  58.