62 lines
1.8 KiB
Lua
62 lines
1.8 KiB
Lua
|
|
local matToytown = Material( "pp/toytown-top" )
|
|
//matToytown:SetTexture( "$fbtexture", render.GetScreenEffectTexture() )
|
|
|
|
--[[---------------------------------------------------------
|
|
Register the convars that will control this effect
|
|
-----------------------------------------------------------]]
|
|
local pp_toytown = CreateClientConVar( "pp_toytown", "0", false, false )
|
|
local pp_toytown_passes = CreateClientConVar( "pp_toytown_passes", "3", true, false )
|
|
local pp_toytown_size = CreateClientConVar( "pp_toytown_size", "0.4", true, false )
|
|
|
|
function DrawToyTown( NumPasses, H )
|
|
cam.Start2D()
|
|
|
|
surface.SetMaterial( matToytown )
|
|
surface.SetDrawColor( 255, 255, 255, 255 )
|
|
|
|
for i = 1, NumPasses do
|
|
|
|
render.CopyRenderTargetToTexture( render.GetScreenEffectTexture() )
|
|
|
|
surface.DrawTexturedRect( 0, 0, ScrW(), H )
|
|
surface.DrawTexturedRectUV( 0, ScrH() - H, ScrW(), H, 0, 1, 1, 0 )
|
|
|
|
end
|
|
|
|
cam.End2D()
|
|
end
|
|
|
|
hook.Add( "RenderScreenspaceEffects", "RenderToyTown", function()
|
|
|
|
if ( !pp_toytown:GetBool() ) then return end
|
|
if ( !GAMEMODE:PostProcessPermitted( "toytown" ) ) then return end
|
|
if ( !render.SupportsPixelShaders_2_0() ) then return end
|
|
|
|
local NumPasses = pp_toytown_passes:GetInt()
|
|
local H = math.floor( ScrH() * pp_toytown_size:GetFloat() )
|
|
|
|
DrawToyTown( NumPasses, H )
|
|
|
|
end )
|
|
|
|
list.Set( "PostProcess", "#toytown_pp", {
|
|
|
|
icon = "gui/postprocess/toytown.png",
|
|
convar = "pp_toytown",
|
|
category = "#shaders_pp",
|
|
|
|
cpanel = function( CPanel )
|
|
|
|
CPanel:Help( "#toytown_pp.desc" )
|
|
CPanel:CheckBox( "#toytown_pp.enable", "pp_toytown" )
|
|
|
|
CPanel:ToolPresets( "toytown", { pp_toytown_passes = "3", pp_toytown_size = "0.5" } )
|
|
|
|
CPanel:NumSlider( "#toytown_pp.passes", "pp_toytown_passes", 1, 100, 0 )
|
|
CPanel:NumSlider( "#toytown_pp.height", "pp_toytown_size", 0, 1 )
|
|
|
|
end
|
|
|
|
} )
|