Skip to content

Commit

Permalink
Fix depthpass & rendering depthpass underwater
Browse files Browse the repository at this point in the history
  • Loading branch information
devonium committed Feb 3, 2024
1 parent e68f7b6 commit e024f98
Show file tree
Hide file tree
Showing 15 changed files with 51 additions and 51 deletions.
5 changes: 1 addition & 4 deletions include_files/depthpass.lua
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

local depthWriteMat = CreateMaterial( "egsm/depthmat", "DepthWrite", {
["$no_fullbright"] = "1",
["$color_depth"] = "1",
Expand Down Expand Up @@ -63,10 +62,8 @@ local function PreDrawEffectsHK()

BeginDepthPass()
rClear(0,0,0,0)
PopRenderTarget()

rClear(0,0,0,0)
PopRenderTarget()

rClear(0,0,0,0)

Expand Down Expand Up @@ -106,4 +103,4 @@ function shaderlib.__INIT()
render.DrawBox( zero_vec, angle_zero, max, min, color_white )
cam.End3D()
end)
end
end
2 changes: 1 addition & 1 deletion source/common_flashlight_fxc.h.inc

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion source/common_fxc.h.inc

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion source/common_hlsl_cpp_consts.h.inc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
const char common_hlsl_cpp_consts_h[] = "//========= Copyright Valve Corporation, All rights reserved. ============//\n""\n""//\n""\n""// Purpose: \n""\n""//\n""\n""// $NoKeywords: $\n""\n""//\n""\n""//=============================================================================//\n""\n""#ifndef COMMON_HLSL_CONSTS_H_\n""\n""#define COMMON_HLSL_CONSTS_H_\n""\n""\n""#ifdef NV3X\n""\n"" #define PSHADER_VECT_SCALE 20.0\n""\n"" #define VSHADER_VECT_SCALE (1.0 / (PSHADER_VECT_SCALE) )\n""\n""#else\n""\n"" #define PSHADER_VECT_SCALE 1.0\n""\n"" #define VSHADER_VECT_SCALE 1.0\n""\n""#endif\n""\n""\n""// GR - HDR luminance maps to 0..n range\n""\n""// IMPORTANT: Keep the same value as in materialsystem_global.h\n""\n""// HDRFIXME: Make this a pixel shader constant?\n""\n""#define MAX_HDR_OVERBRIGHT 16.0f\n""\n""\n""#define LINEAR_FOG_COLOR 29\n""\n""#define TONE_MAPPING_SCALE_PSH_CONSTANT 30\n""\n""\n""#endif //#ifndef COMMON_HLSL_CONSTS_H_\n""\n""\n";
const char common_hlsl_cpp_consts_h[] = "//========= Copyright Valve Corporation, All rights reserved. ============//\n""//\n""// Purpose: \n""//\n""// $NoKeywords: $\n""//\n""//=============================================================================//\n""#ifndef COMMON_HLSL_CONSTS_H_\n""#define COMMON_HLSL_CONSTS_H_\n""\n""#ifdef NV3X\n"" #define PSHADER_VECT_SCALE 20.0\n"" #define VSHADER_VECT_SCALE (1.0 / (PSHADER_VECT_SCALE) )\n""#else\n"" #define PSHADER_VECT_SCALE 1.0\n"" #define VSHADER_VECT_SCALE 1.0\n""#endif\n""\n""// GR - HDR luminance maps to 0..n range\n""// IMPORTANT: Keep the same value as in materialsystem_global.h\n""// HDRFIXME: Make this a pixel shader constant?\n""#define MAX_HDR_OVERBRIGHT 16.0f\n""\n""#define LINEAR_FOG_COLOR 29\n""#define TONE_MAPPING_SCALE_PSH_CONSTANT 30\n""\n""#endif //#ifndef COMMON_HLSL_CONSTS_H_\n""\n";
2 changes: 1 addition & 1 deletion source/common_pragmas.h.inc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
const char common_pragmas_h[] = "//========= Copyright Valve Corporation, All rights reserved. ============//\n""\n""//\n""\n""// Purpose: Common shader compiler pragmas\n""\n""//\n""\n""// $NoKeywords: $\n""\n""//\n""\n""//=============================================================================//\n""\n""#ifndef COMMON_PRAGMAS_H_\n""\n""#define COMMON_PRAGMAS_H_\n""\n""\n""//\n""\n""// Validated shader models:\n""\n""//\n""\n""// SHADER_MODEL_VS_1_1\n""\n""// SHADER_MODEL_VS_2_0\n""\n""// SHADER_MODEL_VS_3_0\n""\n""//\n""\n""// SHADER_MODEL_PS_1_1\n""\n""// SHADER_MODEL_PS_1_4\n""\n""// SHADER_MODEL_PS_2_0\n""\n""// SHADER_MODEL_PS_2_B\n""\n""// SHADER_MODEL_PS_3_0\n""\n""//\n""\n""//\n""\n""//\n""\n""// Platforms:\n""\n""//\n""\n""// PC\n""\n""// _X360\n""\n""//\n""\n""\n""// Special pragmas silencing common warnings\n""\n""#pragma warning ( disable : 3557 ) // warning X3557: Loop only executes for N iteration(s), forcing loop to unroll\n""\n""#pragma warning ( disable : 3595 ) // warning X3595: Microcode Compiler possible performance issue: pixel shader input semantic ___ is unused\n""\n""#pragma warning ( disable : 3596 ) // warning X3596: Microcode Compiler possible performance issue: pixel shader input semantic ___ is unused\n""\n""#pragma warning ( disable : 4702 ) // warning X4702: complement opportunity missed because input result WAS clamped from 0 to 1\n""\n""\n""#endif //#ifndef COMMON_PRAGMAS_H_\n""\n""\n";
const char common_pragmas_h[] = "//========= Copyright Valve Corporation, All rights reserved. ============//\n""//\n""// Purpose: Common shader compiler pragmas\n""//\n""// $NoKeywords: $\n""//\n""//=============================================================================//\n""#ifndef COMMON_PRAGMAS_H_\n""#define COMMON_PRAGMAS_H_\n""\n""//\n""// Validated shader models:\n""//\n""// SHADER_MODEL_VS_1_1\n""// SHADER_MODEL_VS_2_0\n""// SHADER_MODEL_VS_3_0\n""//\n""// SHADER_MODEL_PS_1_1\n""// SHADER_MODEL_PS_1_4\n""// SHADER_MODEL_PS_2_0\n""// SHADER_MODEL_PS_2_B\n""// SHADER_MODEL_PS_3_0\n""//\n""//\n""//\n""// Platforms:\n""//\n""// PC\n""// _X360\n""//\n""\n""// Special pragmas silencing common warnings\n""#pragma warning ( disable : 3557 ) // warning X3557: Loop only executes for N iteration(s), forcing loop to unroll\n""#pragma warning ( disable : 3595 ) // warning X3595: Microcode Compiler possible performance issue: pixel shader input semantic ___ is unused\n""#pragma warning ( disable : 3596 ) // warning X3596: Microcode Compiler possible performance issue: pixel shader input semantic ___ is unused\n""#pragma warning ( disable : 4702 ) // warning X4702: complement opportunity missed because input result WAS clamped from 0 to 1\n""\n""#endif //#ifndef COMMON_PRAGMAS_H_\n""\n";
2 changes: 1 addition & 1 deletion source/common_ps_fxc.h.inc

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion source/common_vertexlitgeneric_dx9.h.inc

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion source/common_vs_fxc.h.inc

Large diffs are not rendered by default.

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[] = "\n""local depthWriteMat = CreateMaterial( \"egsm/depthmat\", \"DepthWrite\", {\n""\n"" [\"$no_fullbright\"] = \"1\",\n""\n"" [\"$color_depth\"] = \"1\",\n""\n"" [\"$alpha_test\"] = \"0\",\n""\n""} )\n""\n""\n""local bDepthPass = false\n""\n""local halo = {}\n""\n""local render = render\n""\n""\n""MaterialOverride = MaterialOverride or render.MaterialOverride\n""\n""BrushMaterialOverride = BrushMaterialOverride or render.BrushMaterialOverride \n""\n""WorldMaterialOverride = WorldMaterialOverride or render.WorldMaterialOverride \n""\n""ModelMaterialOverride = ModelMaterialOverride or render.ModelMaterialOverride \n""\n""\n""local MaterialOverride = MaterialOverride\n""\n""local BrushMaterialOverride = BrushMaterialOverride\n""\n""local WorldMaterialOverride = WorldMaterialOverride\n""\n""local ModelMaterialOverride = ModelMaterialOverride\n""\n""\n""function render.MaterialOverride(m)\n""\n"" if bDepthPass then return end\n""\n"" MaterialOverride(m)\n""\n""end\n""\n""\n""function render.BrushMaterialOverride(m)\n""\n"" if bDepthPass then return end\n""\n"" BrushMaterialOverride(m)\n""\n""end\n""\n""\n""function render.WorldMaterialOverride(m)\n""\n"" if bDepthPass then return end\n""\n"" WorldMaterialOverride(m)\n""\n""end\n""\n""function render.ModelMaterialOverride(m)\n""\n"" if bDepthPass then return end\n""\n"" ModelMaterialOverride(m)\n""\n""end\n""\n""\n""local function dummyFn() end\n""\n""\n""local PushRenderTarget = render.PushRenderTarget\n""\n""local PopRenderTarget = render.PopRenderTarget\n""\n""local rClear = render.Clear\n""\n""local depthRT = render.GetResolvedFullFrameDepth()\n""\n""local hRender = dummyFn\n""\n""local BeginDepthPass = shaderlib.BeginDepthPass\n""\n""local EndDepthPass = shaderlib.EndDepthPass\n""\n""local RenderView = render.RenderView\n""\n""local rClearDepth = render.ClearDepth\n""\n""\n""local function PreDrawEffectsHK() \n""\n"" if bDepthPass then return end\n""\n"" bDepthPass = true\n""\n"" \n""\n"" halo.Render = dummyFn\n""\n"" \n""\n"" MaterialOverride( depthWriteMat )\n""\n"" BrushMaterialOverride( depthWriteMat )\n""\n"" WorldMaterialOverride( depthWriteMat )\n""\n"" ModelMaterialOverride( depthWriteMat )\n""\n"" \n""\n"" BeginDepthPass()\n""\n"" rClear(0,0,0,0) \n""\n"" PopRenderTarget()\n""\n"" \n""\n"" rClear(0,0,0,0)\n""\n"" PopRenderTarget()\n""\n"" \n""\n"" rClear(0,0,0,0) \n""\n""\n"" RenderView()\n""\n"" EndDepthPass()\n""\n""\n"" MaterialOverride()\n""\n"" BrushMaterialOverride()\n""\n"" WorldMaterialOverride()\n""\n"" ModelMaterialOverride()\n""\n"" \n""\n"" halo.Render = hRender\n""\n"" bDepthPass = false\n""\n""end\n""\n""\n""local zero_vec = Vector(0,0,0)\n""\n""local min,max = zero_vec, zero_vec\n""\n""\n""function shaderlib.__INIT()\n""\n"" halo = halo\n""\n"" hRender = halo.Render\n""\n""\n"" hook.Add(\"PreDrawViewModel\", \"!!!EGSM_ImTooLazy\", function() if bDepthPass then rClearDepth() end end) \n""\n"" hook.Add(\"NeedsDepthPass\", \"!!!EGSM_ImTooLazy\", PreDrawEffectsHK)\n""\n"" \n""\n"" hook.Add(\"PostDraw2DSkyBox\", \"!!!EGSM_ImTooLazy\", function()\n""\n"" local rt = render.GetRenderTarget()\n""\n"" if !rt or rt:GetName() != \"egsm_skyboxrt\" \n""\n"" then \n""\n"" return\n""\n"" end\n""\n"" cam.Start3D( zero_vec, EyeAngles() )\n""\n"" min,max = game.GetWorld():GetModelBounds()\n""\n"" \n""\n"" render.SetMaterial( depthWriteMat )\n""\n"" \n""\n"" render.DrawBox( zero_vec, angle_zero, max, min, color_white )\n""\n"" cam.End3D()\n""\n"" end) \n""\n""end\n""\n""\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""\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";
49 changes: 18 additions & 31 deletions source/f_vmatrix.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

#if !defined(_STATIC_LINKED) || defined(_SHARED_LIB)


#include "basetypes.h"
#include "mathlib/vmatrix.h"
#include "mathlib/mathlib.h"
Expand All @@ -26,23 +27,29 @@ inline void AddPointToBounds(const Vector& v, Vector& mins, Vector& maxs) { Asse

#ifdef CHROMIUM

#if defined(__i386__) || defined(_M_IX86)
inline void _SSE_RSqrtInline(float a, float* out)
inline vec_t VectorNormalize(Vector& v)
{
__m128 xx = _mm_load_ss(&a);
__m128 xr = _mm_rsqrt_ss(xx);
__m128 xt;
xt = _mm_mul_ss(xr, xr);
xt = _mm_mul_ss(xt, xx);
xt = _mm_sub_ss(_mm_set_ss(3.f), xt);
xt = _mm_mul_ss(xt, _mm_set_ss(0.5f));
xr = _mm_mul_ss(xr, xt);
_mm_store_ss(out, xr);
Assert(v.IsValid());
vec_t l = v.Length();
if (l != 0.0f)
{
v /= l;
}
else
{
// FIXME:
// Just copying the existing implemenation; shouldn't res.z == 0?
v.x = v.y = 0.0f; v.z = 1.0f;
}
return l;
}

#endif

#ifdef WIN64



float FASTCALL pfVectorNormalize(Vector& vec)
{
#ifdef _VPROF_MATHLIB
Expand All @@ -61,27 +68,7 @@ float FASTCALL pfVectorNormalize(Vector& vec)
return radius;
}

#endif

FORCEINLINE float VectorNormalize(Vector& vec)
{
#ifndef DEBUG // stop crashing my edit-and-continue!
#if defined(__i386__) || defined(_M_IX86)
#define DO_SSE_OPTIMIZATION
#endif
#endif

#if defined( DO_SSE_OPTIMIZATION )
float sqrlen = vec.LengthSqr() + 1.0e-10f, invlen;
_SSE_RSqrtInline(sqrlen, &invlen);
vec.x *= invlen;
vec.y *= invlen;
vec.z *= invlen;
return sqrlen * invlen;
#else
return (*pfVectorNormalize)(vec);
#endif
}

#endif

Expand Down
Loading

0 comments on commit e024f98

Please sign in to comment.