don't hardcode texture type
This commit is contained in:
parent
262452f586
commit
75781ba698
2 changed files with 28 additions and 2 deletions
|
@ -135,8 +135,8 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Msl
|
||||||
|
|
||||||
foreach (var texture in context.Properties.Textures.Values)
|
foreach (var texture in context.Properties.Textures.Values)
|
||||||
{
|
{
|
||||||
// TODO: don't use always texture2d
|
var textureTypeName = texture.Type.ToMslTextureType();
|
||||||
args = args.Append($"texture2d<float> tex_{texture.Name} [[texture({texture.Binding})]]").ToArray();
|
args = args.Append($"{textureTypeName} tex_{texture.Name} [[texture({texture.Binding})]]").ToArray();
|
||||||
args = args.Append($"sampler samp_{texture.Name} [[sampler({texture.Binding})]]").ToArray();
|
args = args.Append($"sampler samp_{texture.Name} [[sampler({texture.Binding})]]").ToArray();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -155,5 +155,31 @@ namespace Ryujinx.Graphics.Shader
|
||||||
|
|
||||||
return typeName;
|
return typeName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string ToMslTextureType(this SamplerType type)
|
||||||
|
{
|
||||||
|
string typeName = (type & SamplerType.Mask) switch
|
||||||
|
{
|
||||||
|
SamplerType.None => "texture",
|
||||||
|
SamplerType.Texture1D => "texture1d",
|
||||||
|
SamplerType.TextureBuffer => "texturebuffer",
|
||||||
|
SamplerType.Texture2D => "texture2d",
|
||||||
|
SamplerType.Texture3D => "texture3d",
|
||||||
|
SamplerType.TextureCube => "texturecube",
|
||||||
|
_ => throw new ArgumentException($"Invalid sampler type \"{type}\"."),
|
||||||
|
};
|
||||||
|
|
||||||
|
if ((type & SamplerType.Multisample) != 0)
|
||||||
|
{
|
||||||
|
typeName += "_ms";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((type & SamplerType.Array) != 0)
|
||||||
|
{
|
||||||
|
typeName += "_array";
|
||||||
|
}
|
||||||
|
|
||||||
|
return typeName + "<float>";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue