MoonWorks/src/Graphics/State/ComputeShaderInfo.cs

51 lines
1.3 KiB
C#
Raw Normal View History

using System.Runtime.InteropServices;
2022-03-02 19:42:26 +00:00
namespace MoonWorks.Graphics
{
/// <summary>
2023-09-19 20:19:41 +00:00
/// Information that the compute pipeline needs about a compute shader.
2022-03-02 19:42:26 +00:00
/// </summary>
public struct ComputeShaderInfo
{
public ShaderModule ShaderModule;
public string EntryPointName;
public uint UniformBufferSize;
public uint BufferBindingCount;
public uint ImageBindingCount;
2022-04-27 21:14:15 +00:00
public unsafe static ComputeShaderInfo Create<T>(
ShaderModule shaderModule,
string entryPointName,
uint bufferBindingCount,
uint imageBindingCount
2022-04-27 21:14:15 +00:00
) where T : unmanaged
{
return new ComputeShaderInfo
{
ShaderModule = shaderModule,
EntryPointName = entryPointName,
UniformBufferSize = (uint) Marshal.SizeOf<T>(),
BufferBindingCount = bufferBindingCount,
ImageBindingCount = imageBindingCount
};
}
public static ComputeShaderInfo Create(
ShaderModule shaderModule,
string entryPointName,
uint bufferBindingCount,
uint imageBindingCount
)
{
return new ComputeShaderInfo
{
ShaderModule = shaderModule,
EntryPointName = entryPointName,
UniformBufferSize = 0,
BufferBindingCount = bufferBindingCount,
ImageBindingCount = imageBindingCount
};
}
2022-03-02 19:42:26 +00:00
}
}