mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-01 11:15:33 +00:00
44 lines
No EOL
1.2 KiB
C#
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
|
|
}
|
|
} |