metal: flip y texture coordinate

Cette révision appartient à :
Samuliak 2024-04-10 19:55:56 +02:00
Parent e3ab4c6349
révision 8ff1ce68c3
Signature inconnue de Forgejo
2 fichiers modifiés avec 14 ajouts et 12 suppressions

Voir le fichier

@ -279,10 +279,10 @@ std::unique_ptr<GraphicsPipeline> PipelineCache::CreateGraphicsPipeline(
#include <metal_stdlib>
using namespace metal;
constant float2 texCoords[] = {
float2(0.0, -1.0),
float2(0.0, 1.0),
float2(2.0, 1.0),
constant float2 positions[] = {
float2(-1.0, -3.0),
float2(-1.0, 1.0),
float2( 3.0, 1.0),
};
struct VertexOut {
@ -292,8 +292,9 @@ std::unique_ptr<GraphicsPipeline> PipelineCache::CreateGraphicsPipeline(
vertex VertexOut vertexMain(uint vid [[vertex_id]]) {
VertexOut out;
out.position = float4(texCoords[vid] * 2.0 - 1.0, 0.0, 1.0);
out.texCoord = texCoords[vid];
out.position = float4(positions[vid], 0.0, 1.0);
out.texCoord = positions[vid] * 0.5 + 0.5;
out.texCoord.y = 1.0 - out.texCoord.y;
return out;
}

Voir le fichier

@ -80,10 +80,10 @@ void RendererMetal::CreateBlitPipelineState() {
#include <metal_stdlib>
using namespace metal;
constant float2 texCoords[] = {
float2(0.0, -1.0),
float2(0.0, 1.0),
float2(2.0, 1.0),
constant float2 positions[] = {
float2(-1.0, -3.0),
float2(-1.0, 1.0),
float2( 3.0, 1.0),
};
struct VertexOut {
@ -93,8 +93,9 @@ void RendererMetal::CreateBlitPipelineState() {
vertex VertexOut vertexMain(uint vid [[vertex_id]]) {
VertexOut out;
out.position = float4(texCoords[vid] * 2.0 - 1.0, 0.0, 1.0);
out.texCoord = texCoords[vid];
out.position = float4(positions[vid], 0.0, 1.0);
out.texCoord = positions[vid] * 0.5 + 0.5;
out.texCoord.y = 1.0 - out.texCoord.y;
return out;
}