mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 21:53:46 +03:00
Upload
This commit is contained in:
120
lua/postprocess/overlay.lua
Normal file
120
lua/postprocess/overlay.lua
Normal file
@@ -0,0 +1,120 @@
|
||||
--[[
|
||||
| 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
|
||||
|
||||
} )
|
||||
Reference in New Issue
Block a user