mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 13:23:46 +03:00
121 lines
6.0 KiB
Lua
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
|
|
|
|
} )
|