Skip to content

Commit

Permalink
Added _rt_WPNDepth instdead of _rt_resolvedfullframedepth
Browse files Browse the repository at this point in the history
  • Loading branch information
devonium committed Mar 13, 2024
1 parent e024f98 commit 8c88971
Show file tree
Hide file tree
Showing 6 changed files with 67 additions and 9 deletions.
62 changes: 59 additions & 3 deletions include_files/depthpass.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ local depthWriteMat = CreateMaterial( "egsm/depthmat", "DepthWrite", {
["$color_depth"] = "1",
["$alpha_test"] = "0",
} )
local fixResolvedfullframedepthMat

local bDepthPass = false
local halo = {}
Expand Down Expand Up @@ -48,7 +49,7 @@ local BeginDepthPass = shaderlib.BeginDepthPass
local EndDepthPass = shaderlib.EndDepthPass
local RenderView = render.RenderView
local rClearDepth = render.ClearDepth

local resolvedDepthRT = render.GetResolvedFullFrameDepth()
local function PreDrawEffectsHK()
if bDepthPass then return end
bDepthPass = true
Expand Down Expand Up @@ -77,6 +78,12 @@ local function PreDrawEffectsHK()

halo.Render = hRender
bDepthPass = false

render.PushRenderTarget(resolvedDepthRT)
render.Clear(0,0,0,0, true, true)
render.SetMaterial(fixResolvedfullframedepthMat)
render.DrawScreenQuad()
render.PopRenderTarget()
end

local zero_vec = Vector(0,0,0)
Expand All @@ -85,7 +92,7 @@ local min,max = zero_vec, zero_vec
function shaderlib.__INIT()
halo = halo
hRender = halo.Render

hook.Add("PreDrawViewModel", "!!!EGSM_ImTooLazy", function() if bDepthPass then rClearDepth() end end)
hook.Add("NeedsDepthPass", "!!!EGSM_ImTooLazy", PreDrawEffectsHK)

Expand All @@ -102,5 +109,54 @@ function shaderlib.__INIT()

render.DrawBox( zero_vec, angle_zero, max, min, color_white )
cam.End3D()
end)
end)


shaderlib.CompileVertexShader("FixResolvedfullframedepthVS", 0, [==[
#include "common_vs_fxc.h"
struct VS_INPUT
{
float4 vPos : POSITION;
float4 vTexCoord : TEXCOORD0;
};
struct VS_OUTPUT
{
float4 projPosSetup : POSITION;
float4 vTexCoord : TEXCOORD0;
};
VS_OUTPUT main( const VS_INPUT v )
{
VS_OUTPUT o = (VS_OUTPUT)0;
o.projPosSetup = mul( v.vPos, cViewProj );
o.vTexCoord = v.vTexCoord;
return o;
}
]==])

shaderlib.CompilePixelShader("FixResolvedfullframedepthPS", 0, [==[
sampler WDBuffer : register(s0);
struct PS_IN
{
float2 vTexCoord : TEXCOORD0;
};
float4 main(PS_IN i ) : COLOR
{
return float4((1/tex2D(WDBuffer, i.vTexCoord).w)/4000,0,0,1);
};
]==])


local shader = shaderlib.NewShader("FixResolvedfullframedepth")

shader:SetPixelShader("FixResolvedfullframedepthPS")
shader:SetVertexShader("FixResolvedfullframedepthVS")

shader:SetParamDefValue(PARAM_BASETEXTURE, "_rt_WPNDepth")
shader:BindTexture(0, PARAM_BASETEXTURE)

fixResolvedfullframedepthMat = CreateMaterial("EGSMFixResolvedfullframedepth", "FixResolvedfullframedepth", {} )
end
1 change: 1 addition & 0 deletions premake5.lua
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ include("prepare_files_for_include.lua")
include(gmcommon)



function CreateProject(config)
assert(type(config) == "table", "supplied argument is not a table!")

Expand Down
2 changes: 1 addition & 1 deletion source/ABICompatibility.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include <Platform.hpp>

// Visual Studio 2015 to Visual Studio 2022
#if defined SYSTEM_WINDOWS && ( _MSC_VER < 1900 || _MSC_VER > 1933 )
#if defined SYSTEM_WINDOWS && ( _MSC_VER < 1900 || _MSC_VER > 1937 )

#error The only supported compilation platforms for this project on Windows are Visual Studio 2015, 2017, 2019 and 2022 (for ABI compatibility reasons).

Expand Down
2 changes: 1 addition & 1 deletion source/DepthWrite.h
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ SHADER_DRAW
#ifndef _X360
else // 3.0 shader case (PC only)
{
SetHWMorphVertexShaderState(VERTEX_SHADER_SHADER_SPECIFIC_CONST_6, VERTEX_SHADER_SHADER_SPECIFIC_CONST_7, SHADER_VERTEXTEXTURE_SAMPLER0);
//SetHWMorphVertexShaderState(VERTEX_SHADER_SHADER_SPECIFIC_CONST_6, VERTEX_SHADER_SHADER_SPECIFIC_CONST_7, SHADER_VERTEXTEXTURE_SAMPLER0);

fdepthwrite_vs30_Dynamic_Index vshIndex;
vshIndex.SetSKINNING(pShaderAPI->GetCurrentNumBones() > 0);
Expand Down
2 changes: 1 addition & 1 deletion source/depthpass.lua.inc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
const char depthpass_lua[] = "local depthWriteMat = CreateMaterial( \"egsm/depthmat\", \"DepthWrite\", {\n"" [\"$no_fullbright\"] = \"1\",\n"" [\"$color_depth\"] = \"1\",\n"" [\"$alpha_test\"] = \"0\",\n""} )\n""\n""local bDepthPass = false\n""local halo = {}\n""local render = render\n""\n""MaterialOverride = MaterialOverride or render.MaterialOverride\n""BrushMaterialOverride = BrushMaterialOverride or render.BrushMaterialOverride \n""WorldMaterialOverride = WorldMaterialOverride or render.WorldMaterialOverride \n""ModelMaterialOverride = ModelMaterialOverride or render.ModelMaterialOverride \n""\n""local MaterialOverride = MaterialOverride\n""local BrushMaterialOverride = BrushMaterialOverride\n""local WorldMaterialOverride = WorldMaterialOverride\n""local ModelMaterialOverride = ModelMaterialOverride\n""\n""function render.MaterialOverride(m)\n"" if bDepthPass then return end\n"" MaterialOverride(m)\n""end\n""\n""function render.BrushMaterialOverride(m)\n"" if bDepthPass then return end\n"" BrushMaterialOverride(m)\n""end\n""\n""function render.WorldMaterialOverride(m)\n"" if bDepthPass then return end\n"" WorldMaterialOverride(m)\n""end\n""function render.ModelMaterialOverride(m)\n"" if bDepthPass then return end\n"" ModelMaterialOverride(m)\n""end\n""\n""local function dummyFn() end\n""\n""local PushRenderTarget = render.PushRenderTarget\n""local PopRenderTarget = render.PopRenderTarget\n""local rClear = render.Clear\n""local depthRT = render.GetResolvedFullFrameDepth()\n""local hRender = dummyFn\n""local BeginDepthPass = shaderlib.BeginDepthPass\n""local EndDepthPass = shaderlib.EndDepthPass\n""local RenderView = render.RenderView\n""local rClearDepth = render.ClearDepth\n""\n""local function PreDrawEffectsHK() \n"" if bDepthPass then return end\n"" bDepthPass = true\n"" \n"" halo.Render = dummyFn\n"" \n"" MaterialOverride( depthWriteMat )\n"" BrushMaterialOverride( depthWriteMat )\n"" WorldMaterialOverride( depthWriteMat )\n"" ModelMaterialOverride( depthWriteMat )\n"" \n"" BeginDepthPass()\n"" rClear(0,0,0,0) \n"" \n"" rClear(0,0,0,0)\n"" \n"" rClear(0,0,0,0) \n""\n"" RenderView()\n"" EndDepthPass()\n""\n"" MaterialOverride()\n"" BrushMaterialOverride()\n"" WorldMaterialOverride()\n"" ModelMaterialOverride()\n"" \n"" halo.Render = hRender\n"" bDepthPass = false\n""end\n""\n""local zero_vec = Vector(0,0,0)\n""local min,max = zero_vec, zero_vec\n""\n""function shaderlib.__INIT()\n"" halo = halo\n"" hRender = halo.Render\n""\n"" hook.Add(\"PreDrawViewModel\", \"!!!EGSM_ImTooLazy\", function() if bDepthPass then rClearDepth() end end) \n"" hook.Add(\"NeedsDepthPass\", \"!!!EGSM_ImTooLazy\", PreDrawEffectsHK)\n"" \n"" hook.Add(\"PostDraw2DSkyBox\", \"!!!EGSM_ImTooLazy\", function()\n"" local rt = render.GetRenderTarget()\n"" if !rt or rt:GetName() != \"egsm_skyboxrt\" \n"" then \n"" return\n"" end\n"" cam.Start3D( zero_vec, EyeAngles() )\n"" min,max = game.GetWorld():GetModelBounds()\n"" \n"" render.SetMaterial( depthWriteMat )\n"" \n"" render.DrawBox( zero_vec, angle_zero, max, min, color_white )\n"" cam.End3D()\n"" end) \n""end\n";
const char depthpass_lua[] = "local depthWriteMat = CreateMaterial( \"egsm/depthmat\", \"DepthWrite\", {\n"" [\"$no_fullbright\"] = \"1\",\n"" [\"$color_depth\"] = \"1\",\n"" [\"$alpha_test\"] = \"0\",\n""} )\n""local fixResolvedfullframedepthMat\n""\n""local bDepthPass = false\n""local halo = {}\n""local render = render\n""\n""MaterialOverride = MaterialOverride or render.MaterialOverride\n""BrushMaterialOverride = BrushMaterialOverride or render.BrushMaterialOverride \n""WorldMaterialOverride = WorldMaterialOverride or render.WorldMaterialOverride \n""ModelMaterialOverride = ModelMaterialOverride or render.ModelMaterialOverride \n""\n""local MaterialOverride = MaterialOverride\n""local BrushMaterialOverride = BrushMaterialOverride\n""local WorldMaterialOverride = WorldMaterialOverride\n""local ModelMaterialOverride = ModelMaterialOverride\n""\n""function render.MaterialOverride(m)\n"" if bDepthPass then return end\n"" MaterialOverride(m)\n""end\n""\n""function render.BrushMaterialOverride(m)\n"" if bDepthPass then return end\n"" BrushMaterialOverride(m)\n""end\n""\n""function render.WorldMaterialOverride(m)\n"" if bDepthPass then return end\n"" WorldMaterialOverride(m)\n""end\n""function render.ModelMaterialOverride(m)\n"" if bDepthPass then return end\n"" ModelMaterialOverride(m)\n""end\n""\n""local function dummyFn() end\n""\n""local PushRenderTarget = render.PushRenderTarget\n""local PopRenderTarget = render.PopRenderTarget\n""local rClear = render.Clear\n""local depthRT = render.GetResolvedFullFrameDepth()\n""local hRender = dummyFn\n""local BeginDepthPass = shaderlib.BeginDepthPass\n""local EndDepthPass = shaderlib.EndDepthPass\n""local RenderView = render.RenderView\n""local rClearDepth = render.ClearDepth\n""local resolvedDepthRT = render.GetResolvedFullFrameDepth()\n""local function PreDrawEffectsHK() \n"" if bDepthPass then return end\n"" bDepthPass = true\n"" \n"" halo.Render = dummyFn\n"" \n"" MaterialOverride( depthWriteMat )\n"" BrushMaterialOverride( depthWriteMat )\n"" WorldMaterialOverride( depthWriteMat )\n"" ModelMaterialOverride( depthWriteMat )\n"" \n"" BeginDepthPass()\n"" rClear(0,0,0,0) \n"" \n"" rClear(0,0,0,0)\n"" \n"" rClear(0,0,0,0) \n""\n"" RenderView()\n"" EndDepthPass()\n""\n"" MaterialOverride()\n"" BrushMaterialOverride()\n"" WorldMaterialOverride()\n"" ModelMaterialOverride()\n"" \n"" halo.Render = hRender\n"" bDepthPass = false\n"" \n"" render.PushRenderTarget(resolvedDepthRT)\n"" render.Clear(0,0,0,0, true, true)\n"" render.SetMaterial(fixResolvedfullframedepthMat)\n"" render.DrawScreenQuad()\n"" render.PopRenderTarget()\n""end\n""\n""local zero_vec = Vector(0,0,0)\n""local min,max = zero_vec, zero_vec\n""\n""function shaderlib.__INIT()\n"" halo = halo\n"" hRender = halo.Render\n"" \n"" hook.Add(\"PreDrawViewModel\", \"!!!EGSM_ImTooLazy\", function() if bDepthPass then rClearDepth() end end) \n"" hook.Add(\"NeedsDepthPass\", \"!!!EGSM_ImTooLazy\", PreDrawEffectsHK)\n"" \n"" hook.Add(\"PostDraw2DSkyBox\", \"!!!EGSM_ImTooLazy\", function()\n"" local rt = render.GetRenderTarget()\n"" if !rt or rt:GetName() != \"egsm_skyboxrt\" \n"" then \n"" return\n"" end\n"" cam.Start3D( zero_vec, EyeAngles() )\n"" min,max = game.GetWorld():GetModelBounds()\n"" \n"" render.SetMaterial( depthWriteMat )\n"" \n"" render.DrawBox( zero_vec, angle_zero, max, min, color_white )\n"" cam.End3D()\n"" end)\n"" \n"" \n"" shaderlib.CompileVertexShader(\"FixResolvedfullframedepthVS\", 0, [==[\n"" #include \"common_vs_fxc.h\"\n"" struct VS_INPUT\n"" {\n"" float4 vPos : POSITION;\n"" float4 vTexCoord : TEXCOORD0;\n"" };\n""\n"" struct VS_OUTPUT\n"" {\n"" float4 projPosSetup : POSITION;\n"" float4 vTexCoord : TEXCOORD0;\n"" };\n""\n"" VS_OUTPUT main( const VS_INPUT v )\n"" {\n"" VS_OUTPUT o = (VS_OUTPUT)0;\n"" o.projPosSetup = mul( v.vPos, cViewProj );\n"" o.vTexCoord = v.vTexCoord;\n"" return o;\n"" }\n"" ]==]) \n""\n"" shaderlib.CompilePixelShader(\"FixResolvedfullframedepthPS\", 0, [==[\n"" sampler WDBuffer : register(s0);\n""\n"" struct PS_IN\n"" {\n"" float2 vTexCoord : TEXCOORD0;\n"" };\n""\n"" float4 main(PS_IN i ) : COLOR\n"" {\n"" return float4((1/tex2D(WDBuffer, i.vTexCoord).w)/4000,0,0,1);\n"" }; \n"" ]==])\n""\n""\n"" local shader = shaderlib.NewShader(\"FixResolvedfullframedepth\")\n"" \n"" shader:SetPixelShader(\"FixResolvedfullframedepthPS\")\n"" shader:SetVertexShader(\"FixResolvedfullframedepthVS\")\n""\n"" shader:SetParamDefValue(PARAM_BASETEXTURE, \"_rt_WPNDepth\")\n"" shader:BindTexture(0, PARAM_BASETEXTURE)\n""\n"" fixResolvedfullframedepthMat = CreateMaterial(\"EGSMFixResolvedfullframedepth\", \"FixResolvedfullframedepth\", {} )\n""end\n";
7 changes: 4 additions & 3 deletions source/shaderlib.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1447,7 +1447,8 @@ namespace ShaderLib
void LuaInit(GarrysMod::Lua::ILuaBase* LUA)
{
g_pMaterialSystem->BeginRenderTargetAllocation();
g_DepthTex = g_pMaterialSystem->CreateNamedRenderTargetTextureEx2("_rt_ResolvedFullFrameDepth", 1, 1,

g_DepthTex = g_pMaterialSystem->CreateNamedRenderTargetTextureEx2("_rt_WPNDepth", 1, 1,
RT_SIZE_FULL_FRAME_BUFFER, IMAGE_FORMAT_RGBA32323232F, MATERIAL_RT_DEPTH_SHARED,
TEXTUREFLAGS_CLAMPS | TEXTUREFLAGS_CLAMPT | TEXTUREFLAGS_POINTSAMPLE,
CREATERENDERTARGETFLAGS_NOEDRAM);
Expand All @@ -1460,14 +1461,14 @@ namespace ShaderLib
g_NormalsTex->IncrementReferenceCount();

skyboxrt = g_pMaterialSystem->CreateNamedRenderTargetTextureEx2("egsm_skyboxrt", 1, 1,
RT_SIZE_FULL_FRAME_BUFFER, IMAGE_FORMAT_RGBA8888, MATERIAL_RT_DEPTH_SHARED,
RT_SIZE_FULL_FRAME_BUFFER, IMAGE_FORMAT_I8, MATERIAL_RT_DEPTH_SHARED,
TEXTUREFLAGS_CLAMPS | TEXTUREFLAGS_CLAMPT | TEXTUREFLAGS_POINTSAMPLE,
CREATERENDERTARGETFLAGS_NOEDRAM);
skyboxrt->IncrementReferenceCount();


egsm_fuckofffog = g_pMaterialSystem->CreateNamedRenderTargetTextureEx2("egsm_fuckofffog", 1, 1,
RT_SIZE_FULL_FRAME_BUFFER, IMAGE_FORMAT_RGBA8888, MATERIAL_RT_DEPTH_SHARED,
RT_SIZE_FULL_FRAME_BUFFER, IMAGE_FORMAT_I8, MATERIAL_RT_DEPTH_SHARED,
TEXTUREFLAGS_CLAMPS | TEXTUREFLAGS_CLAMPT | TEXTUREFLAGS_POINTSAMPLE,
CREATERENDERTARGETFLAGS_NOEDRAM);
egsm_fuckofffog->IncrementReferenceCount();
Expand Down

0 comments on commit 8c88971

Please sign in to comment.