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
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|