Files
sbox-public/engine/Sandbox.Engine/Systems/Render/RenderPipeline/DepthNormalPrepassLayer.cs
s&box team 71f266059a Open source release
This commit imports the C# engine code and game files, excluding C++ source code.

[Source-Commit: ceb3d758046e50faa6258bc3b658a30c97743268]
2025-11-24 09:05:18 +00:00

36 lines
1.1 KiB
C#

using NativeEngine;
namespace Sandbox.Rendering;
internal class DepthNormalPrepassLayer : RenderLayer
{
public DepthNormalPrepassLayer( bool large )
{
Name = $"Depth Normal Prepass {(large ? "Big" : "Small")}";
LayerType = SceneLayerType.DepthPrepass;
Flags |= LayerFlags.NeverRemove;
ShaderMode = "Depth";
if ( large )
{
Flags |= LayerFlags.DiscardColorBuffers;
ClearFlags = ClearFlags.Color;
// With fewer, larger objects we favor GPU perf over CPU perf by using fullsort
Flags |= LayerFlags.NeedsFullSort;
}
ObjectFlagsRequired = SceneObjectFlags.IsOpaque;
ObjectFlagsExcluded = SceneObjectFlags.IsLight | SceneObjectFlags.ExcludeGameLayer | SceneObjectFlags.NoZPrepass;
// Discard pixels conservatively, our depth prepass shader doesn't do the fancy a2c smoothing math. ( But shadows do, so don't remove me! )
Attributes.SetCombo( "D_ALPHA_TEST_CONSERVATIVE", 1 );
}
public void Setup( ISceneView view, RenderTarget gbufferColor, SceneViewRenderTargetHandle rtDepth )
{
ColorAttachment = gbufferColor.ToColorHandle( view );
DepthAttachment = rtDepth;
}
}