rj-action-library/Runtime/Rendering/Compositor/CompositorEffects/Pixelation/PixelationEffect.cs

45 lines
927 B
C#
Raw Normal View History

2025-04-23 12:00:43 +00:00
using Godot;
using Godot.Collections;
using System.Collections.Generic;
namespace Rokojori
{
[Tool]
[GlobalClass]
public partial class PixelationEffect:SingleShaderCompositorEffect
{
2025-04-26 20:04:11 +00:00
public static readonly string shaderPath = Path( "Pixelation/PixelationShader.glsl" );
2025-04-23 12:00:43 +00:00
[Export]
public float pixelSize = 1f;
[Export]
public float pixelSizePower = 1f;
protected override void OnConfigure()
{
EffectCallbackType = EffectCallbackTypeEnum.PostTransparent;
_shaderPath = shaderPath;
_groupSize = 8;
}
2025-04-24 13:39:00 +00:00
protected override void SetConstants()
2025-04-23 12:00:43 +00:00
{
constants.Set(
(Vector2)context.internalSize,
Mathf.Pow( pixelSize, pixelSizePower )
);
}
protected override void RenderView()
{
2025-04-25 08:13:22 +00:00
context.AssignScreenColorTexture();
2025-04-23 12:00:43 +00:00
context.pushConstants = constants;
2025-04-26 20:04:11 +00:00
context.ProcessComputeProgram();
2025-04-23 12:00:43 +00:00
}
}
}