rj-action-library/Runtime/Rendering/SilhouetteOutlines/SilhouetteOutlineCompositer.cs

61 lines
1.4 KiB
C#

using System.Diagnostics;
using System.Collections;
using System.Collections.Generic;
using System;
using Godot;
// https://github.com/jamesdimick/godot-compositor-effect-csharp-test/blob/main/TestCompositorEffect.cs
// https://github.com/txnsor/godot-datamosher/blob/main/shaders/datamosher.glsl
// https://github.com/DevPoodle/godot-compositor-outline/blob/main/outline_effect.gd
namespace Rokojori
{
[Tool]
[GlobalClass]
public partial class SilhouetteOutlineCompositer:CompositorEffect
{
RenderingDevice renderingDevice;
Rid frameBuffer;
public void _Init()
{
EffectCallbackType = EffectCallbackTypeEnum.PostOpaque;
renderingDevice = RenderingServer.GetRenderingDevice();
}
public override void _Notification(int what)
{
}
public override void _RenderCallback( int effectCallbackType, RenderData renderData )
{
if ( renderingDevice == null || effectCallbackType != (int) EffectCallbackTypeEnum.PostOpaque )
{
return;
}
var renderBuffers = (RenderSceneBuffersRD) renderData.GetRenderSceneBuffers();
if ( renderBuffers == null )
{
return;
}
var size = renderBuffers.GetInternalSize();
if ( size.X == 0 || size.Y == 0 )
{
return;
}
var groups = new Vector3((size.X - 1.0f) / 8.0f + 1.0f, (size.Y - 1.0f) / 8.0f + 1.0f, 1.0f).Floor();
}
}
}