mirror of
https://github.com/Ryujinx/Ryujinx.git
synced 2024-08-18 06:38:42 +02:00
The type in the `texOp` in the textureSize instruction doesn't have the exact type on SPIR-V (for example, it is missing the Array flag). This PR gives it the proper type before giving it to the unscaling helper. This fixes the ground textures being broken on Pokemon Scarlet/Violet when scaling. It wasn't finding the texture, so the descriptor index it provided was -1...
36 lines
1 KiB
C#
36 lines
1 KiB
C#
using Ryujinx.Graphics.Shader.IntermediateRepresentation;
|
|
|
|
namespace Ryujinx.Graphics.Shader.StructuredIr
|
|
{
|
|
class AstTextureOperation : AstOperation
|
|
{
|
|
public SamplerType Type { get; }
|
|
public TextureFormat Format { get; }
|
|
public TextureFlags Flags { get; }
|
|
|
|
public int CbufSlot { get; }
|
|
public int Handle { get; }
|
|
|
|
public AstTextureOperation(
|
|
Instruction inst,
|
|
SamplerType type,
|
|
TextureFormat format,
|
|
TextureFlags flags,
|
|
int cbufSlot,
|
|
int handle,
|
|
int index,
|
|
params IAstNode[] sources) : base(inst, index, sources, sources.Length)
|
|
{
|
|
Type = type;
|
|
Format = format;
|
|
Flags = flags;
|
|
CbufSlot = cbufSlot;
|
|
Handle = handle;
|
|
}
|
|
|
|
public AstTextureOperation WithType(SamplerType type)
|
|
{
|
|
return new AstTextureOperation(Inst, type, Format, Flags, CbufSlot, Handle, Index);
|
|
}
|
|
}
|
|
} |