rokojori_action_library/Runtime/Rendering/Objects/RDUniformSet.cs

47 lines
1.7 KiB
C#
Raw Normal View History

2025-04-23 12:00:43 +00:00
using Godot;
using Godot.Collections;
namespace Rokojori
{
2025-05-10 20:56:23 +00:00
public class RDUniformSet:RDObject
2025-04-23 12:00:43 +00:00
{
protected int _setIndex = -1;
public int setIndex => _setIndex;
2025-04-26 20:04:11 +00:00
public RDUniformSet( RDContext effect, int setIndex, Rid rid ):base( effect, rid )
2025-04-23 12:00:43 +00:00
{
2026-01-10 18:35:50 +00:00
_setIndex = setIndex;
2025-04-23 12:00:43 +00:00
}
2026-01-10 18:35:50 +00:00
public static RDUniformSet Image( RDContext context, RDTexture texture, int setIndex, int binding = 0 )
2025-04-23 12:00:43 +00:00
{
var uniform = new RDUniform();
uniform.UniformType = RenderingDevice.UniformType.Image;
2026-01-10 18:35:50 +00:00
uniform.Binding = binding;
2025-04-23 12:00:43 +00:00
uniform.AddId( texture.rid );
2025-04-29 19:46:45 +00:00
var rid = context._CreateUniformSetRid( setIndex, uniform );
// UniformSetCacheRD.GetCache( context.shader.rid, (uint) setIndex, new Array<RDUniform> { uniform } );
2025-04-23 12:00:43 +00:00
// var rid = rd.UniformSetCreate( new Array<RDUniform>{ uniform }, effect.context.shader.rid, (uint) setIndex );
2025-04-26 20:04:11 +00:00
return new RDUniformSet( context, setIndex, rid );
2025-04-23 12:00:43 +00:00
}
2026-01-10 18:35:50 +00:00
public static RDUniformSet Sampler( RDContext context, RDSampler sampler, RDTexture texture, int setIndex, int binding = 0 )
2025-04-23 12:00:43 +00:00
{
var uniform = new RDUniform();
uniform.UniformType = RenderingDevice.UniformType.SamplerWithTexture;
2026-01-10 18:35:50 +00:00
uniform.Binding = binding;
2025-04-23 12:00:43 +00:00
uniform.AddId( sampler.rid );
uniform.AddId( texture.rid ) ;
2025-04-29 19:46:45 +00:00
// var rid = UniformSetCacheRD.GetCache( context.shader.rid, (uint) setIndex, new Array<RDUniform>{ uniform } );
var rid = context._CreateUniformSetRid( setIndex, uniform );
2025-04-23 12:00:43 +00:00
// var rid = rd.UniformSetCreate( new Array<RDUniform>{ uniform }, effect.context.shader.rid, (uint) setIndex );
2025-04-26 20:04:11 +00:00
return new RDUniformSet( context, setIndex, rid );
2025-04-23 12:00:43 +00:00
}
}
}