vertex TextureMappingVertex mapTexture(unsigned int vertex_id [[ vertex_id ]]) { float4x4 renderedCoordinates = float4x4(float4( -1.0, -1.0, 0.0, 1.0 ), float4( 1.0, -1.0, 0.0, 1.0 ), float4( -1.0, 1.0, 0.0, 1.0 ), float4( 1.0, 1.0, 0.0, 1.0 )); float4x2 textureCoordinates = float4x2(float2( 0.0, 1.0 ), float2( 1.0, 1.0 ), float2( 0.0, 0.0 ), float2( 1.0, 0.0 )); TextureMappingVertex outVertex; outVertex.renderedCoordinate = renderedCoordinates[vertex_id]; outVertex.textureCoordinate = textureCoordinates[vertex_id]; return outVertex; } fragment half4 displayTexture(TextureMappingVertex mappingVertex [[ stage_in ]], texture2d<float, access::sample> texture [[ texture(0) ]]) { constexpr sampler s(address::clamp_to_edge, filter::linear); return half4(texture.sample(s, mappingVertex.textureCoordinate)); }