Files
wnsrc/lua/postprocess/overlay.lua
lifestorm 94063e4369 Upload
2024-08-04 22:55:00 +03:00

121 lines
6.0 KiB
Lua

--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
--[[---------------------------------------------------------
Register the convars that will control this effect
-----------------------------------------------------------]]
local pp_mat_overlay = CreateClientConVar( "pp_mat_overlay", "", false, false )
local pp_mat_overlay_refractamount = CreateClientConVar( "pp_mat_overlay_refractamount", "0.3", true, false )
local lastTexture = nil
local mat_Overlay = nil
function DrawMaterialOverlay( texture, refractamount )
if ( texture ~= lastTexture or mat_Overlay == nil ) then
mat_Overlay = Material( texture )
lastTexture = texture
end
if ( mat_Overlay == nil || mat_Overlay:IsError() ) then return end
render.UpdateScreenEffectTexture()
// FIXME: Changing refract amount affects textures used in the map/models.
mat_Overlay:SetFloat( "$envmap", 0 )
mat_Overlay:SetFloat( "$envmaptint", 0 )
mat_Overlay:SetFloat( "$refractamount", refractamount )
mat_Overlay:SetInt( "$ignorez", 1 )
render.SetMaterial( mat_Overlay )
render.DrawScreenQuad( true )
end
hook.Add( "RenderScreenspaceEffects", "RenderMaterialOverlay", function()
local overlay = pp_mat_overlay:GetString()
if ( overlay == "" ) then return end
if ( !GAMEMODE:PostProcessPermitted( "material overlay" ) ) then return end
DrawMaterialOverlay( overlay, pp_mat_overlay_refractamount:GetFloat() )
end )
list.Set( "OverlayMaterials", "#overlay_pp.binocoverlay", { Material = "effects/combine_binocoverlay", Icon = "effects/combine_binocoverlay" } )
list.Set( "OverlayMaterials", "#overlay_pp.waterfall", { Material = "models/shadertest/shader3", Icon = "models/shadertest/shader3" } )
list.Set( "OverlayMaterials", "#overlay_pp.jelly", { Material = "models/shadertest/shader4", Icon = "models/shadertest/shader4" } )
list.Set( "OverlayMaterials", "#overlay_pp.stainedglass", { Material = "models/shadertest/shader5", Icon = "models/shadertest/shader5" } )
list.Set( "OverlayMaterials", "#overlay_pp.statis", { Material = "models/props_combine/stasisshield_sheet", Icon = "models/props_combine/stasisshield_sheet" } )
list.Set( "OverlayMaterials", "#overlay_pp.shield", { Material = "models/props_combine/com_shield001a", Icon = "models/props_combine/com_shield001a" } )
list.Set( "OverlayMaterials", "#overlay_pp.froested", { Material = "models/props_c17/frostedglass_01a", Icon = "models/props_c17/frostedglass_01a" } )
list.Set( "OverlayMaterials", "#overlay_pp.tankglass", { Material = "models/props_lab/tank_glass001", Icon = "models/props_lab/tank_glass001" } )
list.Set( "OverlayMaterials", "#overlay_pp.waves", { Material = "models/props_combine/tprings_globe", Icon = "models/props_combine/tprings_globe" } )
list.Set( "OverlayMaterials", "#overlay_pp.fisheye", { Material = "models/props_c17/fisheyelens", Icon = "models/props_c17/fisheyelens" } )
list.Set( "OverlayMaterials", "#overlay_pp.rendertarget", { Material = "models/overlay_rendertarget", Icon = "models/overlay_rendertarget" } )
list.Set( "OverlayMaterials", "#overlay_pp.strider_pinch_dudv", { Material = "effects/strider_pinch_dudv", Icon = "effects/strider_pinch_dudv" } )
list.Set( "OverlayMaterials", "#overlay_pp.teleport", { Material = "effects/tp_eyefx/tpeye", Icon = "effects/tp_eyefx/tpeye" } )
list.Set( "OverlayMaterials", "#overlay_pp.teleport2", { Material = "effects/tp_eyefx/tpeye2", Icon = "effects/tp_eyefx/tpeye2" } )
list.Set( "OverlayMaterials", "#overlay_pp.teleport3", { Material = "effects/tp_eyefx/tpeye3", Icon = "effects/tp_eyefx/tpeye3" } )
list.Set( "OverlayMaterials", "#overlay_pp.tvnoise", { Material = "effects/tvscreen_noise002a", Icon = "effects/tvscreen_noise002a" } )
list.Set( "OverlayMaterials", "#overlay_pp.water_warp01", { Material = "effects/water_warp01", Icon = "effects/water_warp01" } )
if ( IsMounted( "tf" ) ) then
list.Set( "OverlayMaterials", "#overlay_pp.jarate", { Material = "effects/jarate_overlay", Icon = "effects/jarate_overlay" } )
list.Set( "OverlayMaterials", "#overlay_pp.invuln_overlay_red", { Material = "effects/invuln_overlay_red", Icon = "effects/invuln_overlay_red" } )
list.Set( "OverlayMaterials", "#overlay_pp.invuln_overlay_blu", { Material = "effects/invuln_overlay_blue", Icon = "effects/invuln_overlay_blue" } )
list.Set( "OverlayMaterials", "#overlay_pp.water_warp", { Material = "effects/water_warp", Icon = "effects/water_warp" } )
list.Set( "OverlayMaterials", "#overlay_pp.bleed_overlay", { Material = "effects/bleed_overlay", Icon = "effects/bleed_overlay" } )
list.Set( "OverlayMaterials", "#overlay_pp.bombinomicon_distortion", { Material = "effects/bombinomicon_distortion", Icon = "effects/bombinomicon_distortion" } )
list.Set( "OverlayMaterials", "#overlay_pp.dodge_overlay", { Material = "effects/dodge_overlay", Icon = "effects/dodge_overlay" } )
list.Set( "OverlayMaterials", "#overlay_pp.distortion_normal", { Material = "effects/distortion_normal001", Icon = "effects/distortion_normal001" } )
end
list.Set( "PostProcess", "#overlay_pp", {
category = "#overlay_pp",
func = function( content )
for k, overlay in pairs( list.Get( "OverlayMaterials" ) ) do
spawnmenu.CreateContentIcon( "postprocess", content, {
name = "#overlay_pp",
label = k,
icon = overlay.Icon,
convars = {
pp_mat_overlay = {
on = overlay.Material,
off = ""
}
}
} )
end
end,
cpanel = function( CPanel )
CPanel:AddControl( "Header", { Description = "#overlay_pp.desc" } )
local params = { Options = {}, CVars = {}, MenuButton = "1", Folder = "overlay" }
params.Options[ "#preset.default" ] = { pp_mat_overlay_refractamount = "0.3" }
params.CVars = table.GetKeys( params.Options[ "#preset.default" ] )
CPanel:AddControl( "ComboBox", params )
CPanel:AddControl( "Slider", { Label = "#overlay_pp.refract", Command = "pp_mat_overlay_refractamount", Type = "Float", Min = "-1", Max = "1" } )
end
} )