cirnogodot/Scripts/Components/Actors/3D/OutlineEffect.cs
2025-06-26 10:58:27 +02:00

44 lines
No EOL
1.2 KiB
C#

using Godot;
namespace Cirno.Scripts.Components.Actors._3D;
[Tool]
public partial class OutlineEffect : CompositorEffect
{
private RenderingDevice RenderingDevice => RenderingServer.GetRenderingDevice();
private Rid _shader;
private Rid _pipeline;
private Rid _parameterStorageBuffer;
// tutorial: https://www.youtube.com/watch?v=PQHExF-sbB4
public OutlineEffect()
{
var shaderFile = GD.Load<RDShaderFile>("res://Shaders/outline3D.glsl");
var shaderSpirv = shaderFile.GetSpirV();
_shader = RenderingDevice.ShaderCreateFromSpirV(shaderSpirv);
_pipeline = RenderingDevice.ComputePipelineCreate(_shader);
byte[] parameterData = [0, 0, 0, 0];
_parameterStorageBuffer = RenderingDevice.StorageBufferCreate((uint)parameterData.Length, parameterData);
}
public override void _RenderCallback(int effectCallbackType, RenderData renderData)
{
//base._RenderCallback(effectCallbackType, renderData);
var renderSceneBuffers = renderData.GetRenderSceneBuffers();
if (renderSceneBuffers is null)
{
return;
}
//var size = renderSceneBuffers.get
}
}