@@ -5,64 +5,56 @@ namespace Alimer.Graphics;
55
66public readonly struct BufferBindingLayout
77{
8- public readonly BufferBindingType Type ;
9- public readonly bool HasDynamicOffset ;
10- public readonly ulong MinBindingSize ;
8+ public readonly BufferBindingType Type = BufferBindingType . Constant ;
9+ public readonly bool HasDynamicOffset = false ;
1110
1211 public BufferBindingLayout ( )
1312 {
14- Type = BufferBindingType . Constant ;
15- HasDynamicOffset = false ;
16- MinBindingSize = 0 ;
1713 }
1814
19- public BufferBindingLayout ( BufferBindingType type , bool hasDynamicOffset = false , ulong minBindingSize = 0 )
15+ public BufferBindingLayout ( BufferBindingType type , bool hasDynamicOffset = false )
2016 {
2117 Type = type ;
2218 HasDynamicOffset = hasDynamicOffset ;
23- MinBindingSize = minBindingSize ;
2419 }
2520}
2621
2722public readonly struct SamplerBindingLayout
2823{
29- public readonly SamplerBindingType Type ;
24+ public readonly SamplerBindingType Type = SamplerBindingType . Filtering ;
3025
3126 public SamplerBindingLayout ( )
3227 {
33- Type = SamplerBindingType . Filtering ;
3428 }
3529
36- public SamplerBindingLayout ( SamplerBindingType type )
30+ public SamplerBindingLayout ( SamplerBindingType type = SamplerBindingType . Filtering )
3731 {
3832 Type = type ;
3933 }
4034}
4135
4236public readonly struct TextureBindingLayout
4337{
44- public readonly TextureSampleType SampleType ;
45- // public TextureViewDimension ViewDimension;
46- public readonly bool Multisampled ;
38+ public readonly TextureSampleType SampleType = TextureSampleType . Float ;
39+ public readonly TextureViewDimension ViewDimension = TextureViewDimension . View2D ;
40+ public readonly bool Multisampled = false ;
4741
4842 public TextureBindingLayout ( )
4943 {
50- SampleType = TextureSampleType . Float ;
51- Multisampled = false ;
5244 }
5345
54- public TextureBindingLayout ( TextureSampleType sampleType , bool multisampled = false )
46+ public TextureBindingLayout ( TextureSampleType sampleType = TextureSampleType . Float , bool multisampled = false )
5547 {
5648 SampleType = sampleType ;
5749 Multisampled = multisampled ;
5850 }
5951}
6052
61- public struct StorageTextureBindingLayout
53+ public readonly struct StorageTextureBindingLayout
6254{
63- public StorageTextureAccess Access = StorageTextureAccess . WriteOnly ;
64- public PixelFormat Format = PixelFormat . Undefined ;
65- // public TextureViewDimension viewDimension ;
55+ public readonly StorageTextureAccess Access = StorageTextureAccess . WriteOnly ;
56+ public readonly PixelFormat Format = PixelFormat . Undefined ;
57+ public readonly TextureViewDimension ViewDimension = TextureViewDimension . View2D ;
6658
6759 public StorageTextureBindingLayout ( )
6860 {
@@ -75,9 +67,9 @@ public StorageTextureBindingLayout(StorageTextureAccess access, PixelFormat form
7567 }
7668}
7769
78- public struct AccelerationStructureBindingLayout
70+ public readonly struct AccelerationStructureBindingLayout
7971{
80- public PixelFormat Format = PixelFormat . Undefined ;
72+ public readonly PixelFormat Format = PixelFormat . Undefined ;
8173
8274 public AccelerationStructureBindingLayout ( )
8375 {
@@ -89,34 +81,38 @@ public AccelerationStructureBindingLayout(PixelFormat format)
8981 }
9082}
9183
92-
9384/// <summary>
9485/// Single entry for <see cref="BindGroupLayout"/>.
9586/// </summary>
96- public record struct BindGroupLayoutEntry
87+ public readonly struct BindGroupLayoutEntry
9788{
9889 /// <summary>
9990 /// Register index to bind to (supplied in shader).
10091 /// </summary>
101- public uint Binding ;
92+ public readonly uint Binding ;
10293
10394 /// <summary>
10495 /// The shader stage the resources will be accessible to.
10596 /// </summary>
106- public ShaderStages Visibility ;
97+ public readonly ShaderStages Visibility ;
98+
99+ /// <summary>
100+ /// The number of descriptors contained in the binding, accessed in a shader as an array.
101+ /// </summary>
102+ public readonly uint Count = 1u ;
107103
108104 /// <summary>
109105 /// Gets the buffer binding.
110106 /// </summary>
111- public BufferBindingLayout Buffer ;
107+ public readonly BufferBindingLayout Buffer ;
112108
113- public SamplerBindingLayout Sampler ;
109+ public readonly SamplerBindingLayout Sampler ;
114110
115- public SamplerDescriptor ? StaticSampler ;
111+ public readonly SamplerDescriptor ? StaticSampler ;
116112
117- public TextureBindingLayout Texture ;
118- public StorageTextureBindingLayout StorageTexture ;
119- public AccelerationStructureBindingLayout AccelerationStructure ;
113+ public readonly TextureBindingLayout Texture ;
114+ public readonly StorageTextureBindingLayout StorageTexture ;
115+ public readonly AccelerationStructureBindingLayout AccelerationStructure ;
120116
121117 public BindGroupLayoutEntry ( BufferBindingLayout buffer , uint binding , ShaderStages visibility = ShaderStages . All )
122118 {
0 commit comments