84 lines
2.0 KiB
C#
84 lines
2.0 KiB
C#
|
|
using Godot;
|
|
using Godot.Collections;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Rokojori
|
|
{
|
|
[Tool]
|
|
[GlobalClass]
|
|
public partial class DepthAntiAliasingEffect:SingleShaderCompositorEffect
|
|
{
|
|
public static readonly string shaderPath =
|
|
RokojoriPlugin.Path( "Runtime/Rendering/CompositorEffects/DepthAntiAliasing/DepthAntiAliasingShader.glsl" );
|
|
|
|
|
|
RDPushConstants constants = new RDPushConstants();
|
|
RDSampler sampler;
|
|
|
|
[Export( PropertyHint.Range, "0,1") ]
|
|
public float greyAmount;
|
|
|
|
[Export( PropertyHint.Range, "0,1") ]
|
|
public float depthAmount;
|
|
|
|
[Export( PropertyHint.Range, "0,1") ]
|
|
public float effectStrength = 1;
|
|
|
|
[Export( PropertyHint.Range, "0,20") ]
|
|
public float depthEdgeTreshold = 2f;
|
|
|
|
[Export( PropertyHint.Range, "0,1") ]
|
|
public float depthEdgeIntensity = 1f;
|
|
|
|
[Export( PropertyHint.Range, "0,100") ]
|
|
public float colorContrastTreshold = 2f;
|
|
|
|
[Export( PropertyHint.Range, "0,1") ]
|
|
public float colorContrastIntensity = 1f;
|
|
|
|
[Export( PropertyHint.Range, "0,1") ]
|
|
public float debugView = 0f;
|
|
|
|
protected override void OnConfigure()
|
|
{
|
|
EffectCallbackType = EffectCallbackTypeEnum.PostTransparent;
|
|
_shaderPath = shaderPath;
|
|
_groupSize = 8;
|
|
}
|
|
|
|
protected override void OnInitialize()
|
|
{
|
|
base.OnInitialize();
|
|
|
|
sampler = Sampler( RenderingDevice.SamplerFilter.Nearest, RenderingDevice.SamplerRepeatMode.ClampToEdge );
|
|
}
|
|
|
|
|
|
|
|
protected override void ForAllViews()
|
|
{
|
|
constants.Set(
|
|
(Vector2)context.internalSize,
|
|
new Vector2( greyAmount, depthAmount ),
|
|
effectStrength,
|
|
depthEdgeTreshold / 100f,
|
|
depthEdgeIntensity * 20f,
|
|
colorContrastTreshold / 100f,
|
|
colorContrastIntensity * 20f,
|
|
debugView
|
|
);
|
|
}
|
|
|
|
protected override void RenderView()
|
|
{
|
|
context.Assign_ScreenColorTexture();
|
|
context.Assign_ScreenDepthTexture( sampler );
|
|
|
|
context.pushConstants = constants;
|
|
|
|
context.Render();
|
|
|
|
}
|
|
}
|
|
} |