new post | browse code | authors | help | about

LuaBin 2.0

Viewing file root / lua / postprocess / color_modify.lua

  1.  
  2.  
  3.  
  4. local mat_ColorMod              = Material( "pp/colour" )
  5.  
  6. mat_ColorMod:SetMaterialTexture( "$fbtexture", render.GetScreenEffectTexture() )
  7.  
  8. /*---------------------------------------------------------
  9.    Register the convars that will control this effect
  10. ---------------------------------------------------------*/  
  11. local pp_colormod                               = CreateClientConVar( "pp_colormod", "0", false, false )
  12. local pp_colormod_addr                  = CreateClientConVar( "pp_colormod_addr", "0", false, false )
  13. local pp_colormod_addg                  = CreateClientConVar( "pp_colormod_addg", "0", false, false )
  14. local pp_colormod_addb                  = CreateClientConVar( "pp_colormod_addb", "0", false, false )
  15. local pp_colormod_brightness    = CreateClientConVar( "pp_colormod_brightness", "0", false, false )
  16. local pp_colormod_contrast              = CreateClientConVar( "pp_colormod_contrast", "1", false, false )
  17. local pp_colormod_color                 = CreateClientConVar( "pp_colormod_color", "1", false, false )
  18. local pp_colormod_mulr                  = CreateClientConVar( "pp_colormod_mulr", "0", false, false )
  19. local pp_colormod_mulg                  = CreateClientConVar( "pp_colormod_mulg", "0", false, false )
  20. local pp_colormod_mulb                  = CreateClientConVar( "pp_colormod_mulb", "0", false, false )
  21.  
  22. function DrawColorModify( tab )
  23.  
  24.  
  25.         for k, v in pairs(tab) do
  26.        
  27.                 mat_ColorMod:SetMaterialFloat( k, v )
  28.                
  29.         end
  30.  
  31.         render.SetMaterial( mat_ColorMod )
  32.         render.DrawScreenQuad()
  33.        
  34. end
  35.  
  36. local function DrawInternal()
  37.  
  38.         if ( !pp_colormod:GetBool() ) then return end
  39.         if ( !GAMEMODE:PostProcessPermitted( "color mod" ) ) then return end
  40.  
  41.         local tab = {}
  42.        
  43.         tab[ "$pp_colour_addr" ]                = pp_colormod_addr:GetFloat() * 0.02
  44.         tab[ "$pp_colour_addg" ]                = pp_colormod_addg:GetFloat() * 0.02
  45.         tab[ "$pp_colour_addb" ]                = pp_colormod_addb:GetFloat() * 0.02
  46.         tab[ "$pp_colour_brightness" ]  = pp_colormod_brightness:GetFloat()
  47.         tab[ "$pp_colour_contrast" ]    = pp_colormod_contrast:GetFloat()
  48.         tab[ "$pp_colour_colour" ]              = pp_colormod_color:GetFloat()
  49.         tab[ "$pp_colour_mulr" ]                = pp_colormod_mulr:GetFloat() * 0.1
  50.         tab[ "$pp_colour_mulg" ]                = pp_colormod_mulg:GetFloat() * 0.1
  51.         tab[ "$pp_colour_mulb" ]                = pp_colormod_mulb:GetFloat() * 0.1
  52.        
  53.         DrawColorModify( tab );
  54.  
  55. end
  56.  
  57. hook.Add( "RenderScreenspaceEffects", "RenderColorModify", DrawInternal )
  58.  
  59.  
  60. /*
  61. // Control Panel
  62. */
  63. local function BuildControlPanel( CPanel )
  64.  
  65.         CPanel:AddControl( "Header", { Text = "#Color_Mod", Description = "#Color_Mod_Information" }  )
  66.         CPanel:AddControl( "CheckBox", { Label = "#Color_Mod_Toggle", Command = "pp_colormod" }  )
  67.        
  68.         local params = { Options = {}, CVars = {}, Label = "#Presets", MenuButton = "1", Folder = "colormod" }
  69.         params.Options[ "#Default" ] = { pp_colormod = "1", pp_colormod_addr = "0", pp_colormod_addg = "0", pp_colormod_addb = "0", pp_colormod_brightness = "0", pp_colormod_contrast = "1", pp_colormod_color = "1", pp_colormod_mulr = "0", pp_colormod_mulg = "0", pp_colormod_mulb = "0" }
  70.         params.CVars = { "pp_colormod", "pp_colormod_addr", "pp_colormod_addg", "pp_colormod_addb", "pp_colormod_brightness", "pp_colormod_contrast", "pp_colormod_color", "pp_colormod_mulr", "pp_colormod_mulg", "pp_colormod_mulb" }
  71.         CPanel:AddControl( "ComboBox",  params )
  72.        
  73.         CPanel:AddControl( "Slider", { Label = "#Colormod_Brightness", Command = "pp_colormod_brightness", Type = "Float", Min = "-2", Max = "2" }  )
  74.         CPanel:AddControl( "Slider", { Label = "#Colormod_Contrast", Command = "pp_colormod_contrast", Type = "Float", Min = "0", Max = "10" }  )
  75.         CPanel:AddControl( "Slider", { Label = "#Colormod_Color", Command = "pp_colormod_color", Type = "Float", Min = "0", Max = "5" }  )     
  76.        
  77.         CPanel:AddControl( "Color", { Label = "#Colormod_Color_Add", Red = "pp_colormod_addr", Green = "pp_colormod_addg", Blue = "pp_colormod_addb", ShowAlpha = "0", ShowHSV = "1", ShowRGB = "1" }  )       
  78.         CPanel:AddControl( "Color", { Label = "#Colormod_Color_Multiply",  Red = "pp_colormod_mulr", Green = "pp_colormod_mulg", Blue = "pp_colormod_mulb", ShowAlpha = "0", ShowHSV = "1", ShowRGB = "1" }  ) 
  79.        
  80. end
  81.  
  82. /*
  83. // Tool Menu
  84. */
  85. local function AddPostProcessMenu()
  86.  
  87.         spawnmenu.AddToolMenuOption( "PostProcessing", "PPShader", "ColorMod", "#Color Mod", "", "", BuildControlPanel, { SwitchConVar = "pp_colormod" } )
  88.  
  89. end
  90.  
  91. hook.Add( "PopulateToolMenu", "AddPostProcessMenu_ColorMod", AddPostProcessMenu )
  92.