mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-06-28 11:06:24 +02:00
Move solution and projects to src
This commit is contained in:
parent
cd124bda58
commit
cee7121058
3466 changed files with 55 additions and 55 deletions
100
src/Ryujinx.Graphics.Shader/SamplerType.cs
Normal file
100
src/Ryujinx.Graphics.Shader/SamplerType.cs
Normal file
|
@ -0,0 +1,100 @@
|
|||
using Ryujinx.Graphics.Shader.Translation;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.Graphics.Shader
|
||||
{
|
||||
[Flags]
|
||||
public enum SamplerType
|
||||
{
|
||||
None = 0,
|
||||
Texture1D,
|
||||
TextureBuffer,
|
||||
Texture2D,
|
||||
Texture3D,
|
||||
TextureCube,
|
||||
|
||||
Mask = 0xff,
|
||||
|
||||
Array = 1 << 8,
|
||||
Indexed = 1 << 9,
|
||||
Multisample = 1 << 10,
|
||||
Shadow = 1 << 11
|
||||
}
|
||||
|
||||
static class SamplerTypeExtensions
|
||||
{
|
||||
public static int GetDimensions(this SamplerType type)
|
||||
{
|
||||
return (type & SamplerType.Mask) switch
|
||||
{
|
||||
SamplerType.Texture1D => 1,
|
||||
SamplerType.TextureBuffer => 1,
|
||||
SamplerType.Texture2D => 2,
|
||||
SamplerType.Texture3D => 3,
|
||||
SamplerType.TextureCube => 3,
|
||||
_ => throw new ArgumentException($"Invalid sampler type \"{type}\".")
|
||||
};
|
||||
}
|
||||
|
||||
public static string ToGlslSamplerType(this SamplerType type)
|
||||
{
|
||||
string typeName = (type & SamplerType.Mask) switch
|
||||
{
|
||||
SamplerType.Texture1D => "sampler1D",
|
||||
SamplerType.TextureBuffer => "samplerBuffer",
|
||||
SamplerType.Texture2D => "sampler2D",
|
||||
SamplerType.Texture3D => "sampler3D",
|
||||
SamplerType.TextureCube => "samplerCube",
|
||||
_ => throw new ArgumentException($"Invalid sampler type \"{type}\".")
|
||||
};
|
||||
|
||||
if ((type & SamplerType.Multisample) != 0)
|
||||
{
|
||||
typeName += "MS";
|
||||
}
|
||||
|
||||
if ((type & SamplerType.Array) != 0)
|
||||
{
|
||||
typeName += "Array";
|
||||
}
|
||||
|
||||
if ((type & SamplerType.Shadow) != 0)
|
||||
{
|
||||
typeName += "Shadow";
|
||||
}
|
||||
|
||||
return typeName;
|
||||
}
|
||||
|
||||
public static string ToGlslImageType(this SamplerType type, AggregateType componentType)
|
||||
{
|
||||
string typeName = (type & SamplerType.Mask) switch
|
||||
{
|
||||
SamplerType.Texture1D => "image1D",
|
||||
SamplerType.TextureBuffer => "imageBuffer",
|
||||
SamplerType.Texture2D => "image2D",
|
||||
SamplerType.Texture3D => "image3D",
|
||||
SamplerType.TextureCube => "imageCube",
|
||||
_ => throw new ArgumentException($"Invalid sampler type \"{type}\".")
|
||||
};
|
||||
|
||||
if ((type & SamplerType.Multisample) != 0)
|
||||
{
|
||||
typeName += "MS";
|
||||
}
|
||||
|
||||
if ((type & SamplerType.Array) != 0)
|
||||
{
|
||||
typeName += "Array";
|
||||
}
|
||||
|
||||
switch (componentType)
|
||||
{
|
||||
case AggregateType.U32: typeName = 'u' + typeName; break;
|
||||
case AggregateType.S32: typeName = 'i' + typeName; break;
|
||||
}
|
||||
|
||||
return typeName;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue