OLD | NEW |
---|---|
(Empty) | |
1 | |
kthelgason
2017/02/03 09:17:23
Missing copyright header
daniela-webrtc
2017/02/07 10:51:09
Done.
| |
2 #include <metal_stdlib> | |
3 #include <simd/simd.h> | |
4 | |
5 using namespace metal; | |
6 | |
7 typedef struct { | |
8 packed_float2 position; | |
9 packed_float2 texcoord; | |
10 } Vertex; | |
11 | |
12 | |
13 typedef struct { | |
14 float4 position [[position]]; | |
15 float2 texcoord; | |
16 } Varyings; | |
17 | |
18 vertex Varyings vertexPassthrough( | |
19 device Vertex* verticies [[ buffer(0) ]], | |
20 unsigned int vid [[ vertex_id ]] | |
21 ) { | |
22 Varyings out; | |
23 | |
24 device Vertex& v = verticies[vid]; | |
25 | |
26 out.position = float4(float2(v.position), 0.0, 1.0); | |
27 | |
28 out.texcoord = v.texcoord; | |
29 | |
30 return out; | |
31 } | |
32 | |
33 fragment half4 fragmentColorConversion( | |
34 Varyings in [[ stage_in ]], | |
35 texture2d<float, access::sample> textureY [[ texture(0) ]], | |
36 texture2d<float, access::sample> textureC bCr [[ texture(1) ]] | |
37 ) { | |
38 constexpr sampler s(address::clamp_to_edge, filter::linear); | |
39 float y; | |
40 float2 uv; | |
41 y = textureY.sample(s, in.texcoord).r; | |
42 uv = textureCbCr.sample(s, in.texcoord).rg - float2(0.5,0.5); | |
43 | |
44 float4 out = float4(y + 1.403 * uv.y, | |
45 y - 0.344 * uv.x - 0.714 * uv.y, | |
46 y + 1.770 * uv.x, | |
47 1.0); | |
48 | |
49 return half4(out); | |
50 } | |
OLD | NEW |