new post | browse code | authors | help | about

LuaBin 2.0

Viewing file root / lua / postprocess / sharpen.lua

  1.  
  2. local _Material                 = Material( "pp/sharpen" )
  3.  
  4. /*---------------------------------------------------------
  5.    Register the convars that will control this effect
  6. ---------------------------------------------------------*/  
  7. local pp_sharpen_contrast       = CreateClientConVar( "pp_sharpen_contrast", "1", false, false )
  8. local pp_sharpen_distance       = CreateClientConVar( "pp_sharpen_distance", "1", false, false )
  9. local pp_sharpen                        = CreateClientConVar( "pp_sharpen", "0", false, false )
  10.  
  11.  
  12. function DrawSharpen( contrast, distance )
  13.  
  14.  
  15.         _Material:SetMaterialFloat( "$contrast", contrast )
  16.         _Material:SetMaterialFloat( "$distance", distance / ScrW() )
  17.        
  18.        
  19.         render.SetMaterial( _Material )
  20.         render.DrawScreenQuad()
  21.        
  22. end
  23.  
  24. local function DrawInternal()
  25.  
  26.         if ( !pp_sharpen:GetBool() ) then return end
  27.         if ( !GAMEMODE:PostProcessPermitted( "sharpen" ) ) then return end
  28.  
  29.         DrawSharpen( pp_sharpen_contrast:GetFloat(), pp_sharpen_distance:GetFloat() );
  30.  
  31. end
  32.  
  33. hook.Add( "RenderScreenspaceEffects", "RenderSharpen", DrawInternal )
  34.  
  35.  
  36. /*
  37. // Control Panel
  38. */
  39. local function BuildControlPanel( CPanel )
  40.  
  41.         CPanel:AddControl( "Header", { Text = "#Sharpen", Description = "" }  )
  42.         CPanel:AddControl( "CheckBox", { Label = "#Enable", Command = "pp_sharpen" }  )
  43.        
  44.         CPanel:AddControl( "Slider", { Label = "#Distance", Command = "pp_sharpen_distance", Type = "Float", Min = "-5", Max = "5" }  )
  45.         CPanel:AddControl( "Slider", { Label = "#Contrast", Command = "pp_sharpen_contrast", Type = "Float", Min = "0", Max = "20" }  )
  46.  
  47. end
  48.  
  49. /*
  50. // Tool Menu
  51. */
  52. local function AddPostProcessMenu()
  53.  
  54.         spawnmenu.AddToolMenuOption( "PostProcessing", "PPShader", "Sharpen", "#Sharpen", "", "", BuildControlPanel, { SwitchConVar = "pp_sharpen" } )
  55.  
  56. end
  57.  
  58. hook.Add( "PopulateToolMenu", "AddPostProcessMenu_Sharpen", AddPostProcessMenu )
  59.