mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
81 lines
2.8 KiB
Lua
81 lines
2.8 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/
|
||
|
|
--]]
|
||
|
|
|
||
|
|
local dl_blurrange = CreateClientConVar("pp_dlens_blurrange", "10", true, false)
|
||
|
|
local dl_blurpasses = CreateClientConVar("pp_dlens_blurpasses", "30", true, false)
|
||
|
|
local dl_multiply = CreateClientConVar("pp_dlens_multiply", "1", true, false)
|
||
|
|
local dl_darken = CreateClientConVar("pp_dlens_darken", "0.30", true, false)
|
||
|
|
local dl_texture = CreateClientConVar("pp_dlens_texture", "dlenstexture/dlensdefault", true, false)
|
||
|
|
local dl_sunenable = CreateClientConVar("pp_dlens_sun", "1", true, false)
|
||
|
|
local dl_sunmultiply = CreateClientConVar("pp_dlens_sunmultiply", "2", true, false)
|
||
|
|
local dl_suninterpolation = CreateClientConVar("pp_dlens_suninterpolation", "6", true, false)
|
||
|
|
|
||
|
|
local mat_Downsample = Material("pp/downsample")
|
||
|
|
local mat_Bloom = Material("dlenstexture/dlensmat")
|
||
|
|
local OldRT = render.GetRenderTarget()
|
||
|
|
local tex_Bloom0 = render.GetBloomTex0()
|
||
|
|
local w, h = ScrW(), ScrH()
|
||
|
|
local targetMultiply = 1
|
||
|
|
local multiply = 1
|
||
|
|
|
||
|
|
hook.Add("RenderScreenspaceEffects", "DrawDirtLens", function()
|
||
|
|
if not ix.option.Get("enableDirtyLens", false) then return end
|
||
|
|
|
||
|
|
if not render.SupportsPixelShaders_2_0() then return end
|
||
|
|
|
||
|
|
local blur = dl_blurrange:GetFloat()
|
||
|
|
local passes = dl_blurpasses:GetFloat()
|
||
|
|
local darken = dl_darken:GetFloat()
|
||
|
|
local lens_texture = dl_texture:GetString()
|
||
|
|
local SunMultiply = dl_sunmultiply:GetFloat()
|
||
|
|
local SunInterpolation = dl_suninterpolation:GetInt()
|
||
|
|
|
||
|
|
if dl_sunenable:GetBool() then
|
||
|
|
local sun = util.GetSunInfo()
|
||
|
|
if sun then
|
||
|
|
if ( sun.obstruction ~= 0 ) then
|
||
|
|
targetMultiply = dl_multiply:GetFloat() + SunMultiply
|
||
|
|
else
|
||
|
|
targetMultiply = dl_multiply:GetFloat()
|
||
|
|
end
|
||
|
|
else
|
||
|
|
targetMultiply = dl_multiply:GetFloat()
|
||
|
|
end
|
||
|
|
multiply = Lerp(FrameTime() * SunInterpolation, multiply, targetMultiply)
|
||
|
|
else
|
||
|
|
multiply = dl_multiply:GetFloat()
|
||
|
|
end
|
||
|
|
|
||
|
|
mat_Downsample:SetFloat("$multiply", multiply)
|
||
|
|
mat_Downsample:SetFloat("$darken", darken)
|
||
|
|
mat_Downsample:SetTexture("$fbtexture", render.GetScreenEffectTexture())
|
||
|
|
|
||
|
|
render.SetViewPort(0, 0, w, h)
|
||
|
|
render.SetRenderTarget(tex_Bloom0)
|
||
|
|
render.SetBlend(1)
|
||
|
|
render.SetMaterial(mat_Downsample)
|
||
|
|
render.DrawScreenQuad()
|
||
|
|
render.BlurRenderTarget(tex_Bloom0, blur, blur, passes)
|
||
|
|
render.ClearDepth()
|
||
|
|
render.SetRenderTarget(OldRT)
|
||
|
|
|
||
|
|
mat_Bloom:SetFloat("$levelr", 1)
|
||
|
|
mat_Bloom:SetFloat("$levelg", 1)
|
||
|
|
mat_Bloom:SetFloat("$levelb", 1)
|
||
|
|
mat_Bloom:SetFloat("$colormul", 16)
|
||
|
|
|
||
|
|
mat_Bloom:SetTexture("$basetexture", lens_texture)
|
||
|
|
mat_Bloom:SetTexture("$dudvmap", lens_texture)
|
||
|
|
mat_Bloom:SetTexture("$normalmap", lens_texture)
|
||
|
|
mat_Bloom:SetTexture("$refracttinttexture", tex_Bloom0)
|
||
|
|
|
||
|
|
render.SetMaterial(mat_Bloom)
|
||
|
|
render.DrawScreenQuad()
|
||
|
|
end)
|