local _Material
= Material( "pp/sunbeams" )
/*---------------------------------------------------------
Register the convars that will control this effect
---------------------------------------------------------*/
local pp_sunbeams_darken
= CreateClientConVar( "pp_sunbeams_darken",
"0.95",
false,
false )
local pp_sunbeams_multiply
= CreateClientConVar( "pp_sunbeams_multiply",
"1.0",
false,
false )
local pp_sunbeams_sunsize
= CreateClientConVar( "pp_sunbeams_sunsize",
"0.075",
false,
false )
function DrawSunbeams( darken, multiply, sunsize, sunx, suny
)
end
local function DrawInternal()
if ( !pp_sunbeams:
GetBool() ) then return end
if ( !GAMEMODE:PostProcessPermitted( "sunbeams" ) ) then return end
if (!sun) then return end
if (sun.obstruction == 0) then return end
local sunpos
= EyePos() + sun.direction
* 4096
if (dot <= 0) then return end
pp_sunbeams_multiply:
GetFloat() * dot
* sun.obstruction,
);
end
hook.Add( "RenderScreenspaceEffects",
"RenderSunbeams", DrawInternal
)
/*
// Control Panel
*/
local function BuildControlPanel( CPanel )
CPanel:AddControl( "Header", { Text = "#Sun Beams", Description = "#Sun Beams" } )
CPanel:AddControl
( "CheckBox",
{ Label = "#Enable",
Command = "pp_sunbeams" } )
CPanel:AddControl
( "Slider",
{ Label = "#Multiply",
Command = "pp_sunbeams_multiply", Type
= "Float", Min
= "0", Max
= "1" } )
CPanel:AddControl
( "Slider",
{ Label = "#Darken",
Command = "pp_sunbeams_darken", Type
= "Float", Min
= "0", Max
= "1" } )
CPanel:AddControl
( "Slider",
{ Label = "#Sun Size",
Command = "pp_sunbeams_sunsize", Type
= "Float", Min
= "0.01", Max
= "0.25" } )
end
/*
// Tool Menu
*/
local function AddPostProcessMenu()
spawnmenu.AddToolMenuOption( "PostProcessing",
"PPShader",
"SunBeams",
"#Sun Beams",
"",
"", BuildControlPanel,
{ SwitchConVar
= "pp_sunbeams" } )
end
hook.Add( "PopulateToolMenu",
"AddPostProcessMenu_SunBeams", AddPostProcessMenu
)