mirror of
https://github.com/Ryubing/Ryujinx.git
synced 2025-11-23 16:01:06 -05:00
* Tell GAL to use Vk model (and break everything) * ResourceBindingSegments * Set information on backend caps * Get ready to break everything * Refactor EncoderStateManager * Remove padding from helper shaders * Fix ref array sizes * Seperate vert & frag buffers * Shader-side changes * Fixes * Fix some helper shader resource layouts * Sort by binding id * Fix helper shader layouts * Don’t do inline vertex buffer updates * Check for null storage
44 lines
1022 B
Metal
44 lines
1022 B
Metal
#include <metal_stdlib>
|
|
|
|
using namespace metal;
|
|
|
|
struct CopyVertexOut {
|
|
float4 position [[position]];
|
|
float2 uv;
|
|
};
|
|
|
|
struct TexCoords {
|
|
float data[4];
|
|
};
|
|
|
|
struct ConstantBuffers {
|
|
constant TexCoords* texCoord;
|
|
};
|
|
|
|
struct Textures
|
|
{
|
|
texture2d<float, access::sample> texture;
|
|
sampler sampler;
|
|
};
|
|
|
|
vertex CopyVertexOut vertexMain(uint vid [[vertex_id]],
|
|
constant ConstantBuffers &constant_buffers [[buffer(20)]]) {
|
|
CopyVertexOut out;
|
|
|
|
int low = vid & 1;
|
|
int high = vid >> 1;
|
|
out.uv.x = constant_buffers.texCoord->data[low];
|
|
out.uv.y = constant_buffers.texCoord->data[2 + high];
|
|
out.position.x = (float(low) - 0.5f) * 2.0f;
|
|
out.position.y = (float(high) - 0.5f) * 2.0f;
|
|
out.position.z = 0.0f;
|
|
out.position.w = 1.0f;
|
|
|
|
return out;
|
|
}
|
|
|
|
fragment float4 fragmentMain(CopyVertexOut in [[stage_in]],
|
|
constant Textures &textures [[buffer(22)]]) {
|
|
return textures.texture.sample(textures.sampler, in.uv);
|
|
}
|