blob: c864387d6b1a0189f71e0d7ba875645c123e1a1f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
typedef struct
{
float2 a_position [[attribute(0)]];
float2 a_texCoords [[attribute(1)]];
} Vertex_T;
typedef struct
{
float4 position [[position]];
float2 texCoords;
} Fragment_T;
typedef struct
{
float u_opacity;
} Uniforms_T;
vertex Fragment_T vsScreenQuad(const Vertex_T in [[stage_in]])
{
Fragment_T out;
out.position = float4(in.a_position, 0.0, 1.0);
out.texCoords = in.a_texCoords;
return out;
}
fragment float4 fsScreenQuad(const Fragment_T in [[stage_in]],
constant Uniforms_T & uniforms [[buffer(0)]],
texture2d<float> u_colorTex [[texture(0)]],
sampler u_colorTexSampler [[sampler(0)]])
{
float4 color = u_colorTex.sample(u_colorTexSampler, in.texCoords);
color.a *= uniforms.u_opacity;
return color;
}
|