Update rive-cpp to 2.0 version
[platform/core/uifw/rive-tizen.git] / submodule / skia / tests / sksl / shared / GaussianBlur.metal
1 #include <metal_stdlib>
2 #include <simd/simd.h>
3 using namespace metal;
4 struct Inputs {
5     float2 vLocalCoord_Stage0  [[user(locn0)]];
6 };
7 struct Outputs {
8     half4 sk_FragColor [[color(0)]];
9 };
10 struct uniformBuffer {
11     float4 sk_RTAdjust;
12     half2 uIncrement_Stage1_c0;
13     char pad0[12];
14     array<half4, 7> uKernel_Stage1_c0;
15     char pad1[56];
16     float3x3 umatrix_Stage1_c0_c0;
17     half4 uborder_Stage1_c0_c0_c0;
18     char pad2[8];
19     float4 usubset_Stage1_c0_c0_c0;
20     float4 unorm_Stage1_c0_c0_c0;
21 };
22 struct Globals {
23     constant uniformBuffer* _anonInterface0;
24     texture2d<half> uTextureSampler_0_Stage1;
25     sampler uTextureSampler_0_Stage1Smplr;
26 };
27 half4 MatrixEffect_Stage1_c0_c0_h4h4f2(thread Globals& _globals, half4 _input, float2 _coords) {
28     float2 _1_inCoord = (_globals._anonInterface0->umatrix_Stage1_c0_c0 * float3(_coords, 1.0)).xy;
29     _1_inCoord *= _globals._anonInterface0->unorm_Stage1_c0_c0_c0.xy;
30     float2 _2_subsetCoord;
31     _2_subsetCoord.x = _1_inCoord.x;
32     _2_subsetCoord.y = _1_inCoord.y;
33     float2 _3_clampedCoord;
34     _3_clampedCoord = _2_subsetCoord;
35     half4 _4_textureColor = _globals.uTextureSampler_0_Stage1.sample(_globals.uTextureSampler_0_Stage1Smplr, _3_clampedCoord * _globals._anonInterface0->unorm_Stage1_c0_c0_c0.zw);
36     float _5_snappedX = floor(_1_inCoord.x + 0.0010000000474974513) + 0.5;
37     if (_5_snappedX < _globals._anonInterface0->usubset_Stage1_c0_c0_c0.x || _5_snappedX > _globals._anonInterface0->usubset_Stage1_c0_c0_c0.z) {
38         _4_textureColor = _globals._anonInterface0->uborder_Stage1_c0_c0_c0;
39     }
40     return _4_textureColor;
41 }
42 fragment Outputs fragmentMain(Inputs _in [[stage_in]], texture2d<half> uTextureSampler_0_Stage1[[texture(0)]], sampler uTextureSampler_0_Stage1Smplr[[sampler(0)]], constant uniformBuffer& _anonInterface0 [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
43     Globals _globals{&_anonInterface0, uTextureSampler_0_Stage1, uTextureSampler_0_Stage1Smplr};
44     (void)_globals;
45     Outputs _out;
46     (void)_out;
47     half4 outputColor_Stage0;
48     half4 outputCoverage_Stage0;
49     {
50         outputColor_Stage0 = half4(1.0h);
51         outputCoverage_Stage0 = half4(1.0h);
52     }
53     half4 output_Stage1;
54     half4 _6_output;
55     _6_output = half4(0.0h, 0.0h, 0.0h, 0.0h);
56     float2 _7_coord = _in.vLocalCoord_Stage0 - float2(12.0h * _globals._anonInterface0->uIncrement_Stage1_c0);
57     float2 _8_coordSampled = float2(0.0, 0.0);
58     _8_coordSampled = _7_coord;
59     _6_output += MatrixEffect_Stage1_c0_c0_h4h4f2(_globals, outputColor_Stage0, _8_coordSampled) * _globals._anonInterface0->uKernel_Stage1_c0[0].x;
60     _7_coord += float2(_globals._anonInterface0->uIncrement_Stage1_c0);
61     _8_coordSampled = _7_coord;
62     _6_output += MatrixEffect_Stage1_c0_c0_h4h4f2(_globals, outputColor_Stage0, _8_coordSampled) * _globals._anonInterface0->uKernel_Stage1_c0[0].y;
63     _7_coord += float2(_globals._anonInterface0->uIncrement_Stage1_c0);
64     _8_coordSampled = _7_coord;
65     _6_output += MatrixEffect_Stage1_c0_c0_h4h4f2(_globals, outputColor_Stage0, _8_coordSampled) * _globals._anonInterface0->uKernel_Stage1_c0[0].z;
66     _7_coord += float2(_globals._anonInterface0->uIncrement_Stage1_c0);
67     _8_coordSampled = _7_coord;
68     _6_output += MatrixEffect_Stage1_c0_c0_h4h4f2(_globals, outputColor_Stage0, _8_coordSampled) * _globals._anonInterface0->uKernel_Stage1_c0[0].w;
69     _7_coord += float2(_globals._anonInterface0->uIncrement_Stage1_c0);
70     _8_coordSampled = _7_coord;
71     _6_output += MatrixEffect_Stage1_c0_c0_h4h4f2(_globals, outputColor_Stage0, _8_coordSampled) * _globals._anonInterface0->uKernel_Stage1_c0[1].x;
72     _7_coord += float2(_globals._anonInterface0->uIncrement_Stage1_c0);
73     _8_coordSampled = _7_coord;
74     _6_output += MatrixEffect_Stage1_c0_c0_h4h4f2(_globals, outputColor_Stage0, _8_coordSampled) * _globals._anonInterface0->uKernel_Stage1_c0[1].y;
75     _7_coord += float2(_globals._anonInterface0->uIncrement_Stage1_c0);
76     _8_coordSampled = _7_coord;
77     _6_output += MatrixEffect_Stage1_c0_c0_h4h4f2(_globals, outputColor_Stage0, _8_coordSampled) * _globals._anonInterface0->uKernel_Stage1_c0[1].z;
78     _7_coord += float2(_globals._anonInterface0->uIncrement_Stage1_c0);
79     _8_coordSampled = _7_coord;
80     _6_output += MatrixEffect_Stage1_c0_c0_h4h4f2(_globals, outputColor_Stage0, _8_coordSampled) * _globals._anonInterface0->uKernel_Stage1_c0[1].w;
81     _7_coord += float2(_globals._anonInterface0->uIncrement_Stage1_c0);
82     _8_coordSampled = _7_coord;
83     _6_output += MatrixEffect_Stage1_c0_c0_h4h4f2(_globals, outputColor_Stage0, _8_coordSampled) * _globals._anonInterface0->uKernel_Stage1_c0[2].x;
84     _7_coord += float2(_globals._anonInterface0->uIncrement_Stage1_c0);
85     _8_coordSampled = _7_coord;
86     _6_output += MatrixEffect_Stage1_c0_c0_h4h4f2(_globals, outputColor_Stage0, _8_coordSampled) * _globals._anonInterface0->uKernel_Stage1_c0[2].y;
87     _7_coord += float2(_globals._anonInterface0->uIncrement_Stage1_c0);
88     _8_coordSampled = _7_coord;
89     _6_output += MatrixEffect_Stage1_c0_c0_h4h4f2(_globals, outputColor_Stage0, _8_coordSampled) * _globals._anonInterface0->uKernel_Stage1_c0[2].z;
90     _7_coord += float2(_globals._anonInterface0->uIncrement_Stage1_c0);
91     _8_coordSampled = _7_coord;
92     _6_output += MatrixEffect_Stage1_c0_c0_h4h4f2(_globals, outputColor_Stage0, _8_coordSampled) * _globals._anonInterface0->uKernel_Stage1_c0[2].w;
93     _7_coord += float2(_globals._anonInterface0->uIncrement_Stage1_c0);
94     _8_coordSampled = _7_coord;
95     _6_output += MatrixEffect_Stage1_c0_c0_h4h4f2(_globals, outputColor_Stage0, _8_coordSampled) * _globals._anonInterface0->uKernel_Stage1_c0[3].x;
96     _7_coord += float2(_globals._anonInterface0->uIncrement_Stage1_c0);
97     _8_coordSampled = _7_coord;
98     _6_output += MatrixEffect_Stage1_c0_c0_h4h4f2(_globals, outputColor_Stage0, _8_coordSampled) * _globals._anonInterface0->uKernel_Stage1_c0[3].y;
99     _7_coord += float2(_globals._anonInterface0->uIncrement_Stage1_c0);
100     _8_coordSampled = _7_coord;
101     _6_output += MatrixEffect_Stage1_c0_c0_h4h4f2(_globals, outputColor_Stage0, _8_coordSampled) * _globals._anonInterface0->uKernel_Stage1_c0[3].z;
102     _7_coord += float2(_globals._anonInterface0->uIncrement_Stage1_c0);
103     _8_coordSampled = _7_coord;
104     _6_output += MatrixEffect_Stage1_c0_c0_h4h4f2(_globals, outputColor_Stage0, _8_coordSampled) * _globals._anonInterface0->uKernel_Stage1_c0[3].w;
105     _7_coord += float2(_globals._anonInterface0->uIncrement_Stage1_c0);
106     _8_coordSampled = _7_coord;
107     _6_output += MatrixEffect_Stage1_c0_c0_h4h4f2(_globals, outputColor_Stage0, _8_coordSampled) * _globals._anonInterface0->uKernel_Stage1_c0[4].x;
108     _7_coord += float2(_globals._anonInterface0->uIncrement_Stage1_c0);
109     _8_coordSampled = _7_coord;
110     _6_output += MatrixEffect_Stage1_c0_c0_h4h4f2(_globals, outputColor_Stage0, _8_coordSampled) * _globals._anonInterface0->uKernel_Stage1_c0[4].y;
111     _7_coord += float2(_globals._anonInterface0->uIncrement_Stage1_c0);
112     _8_coordSampled = _7_coord;
113     _6_output += MatrixEffect_Stage1_c0_c0_h4h4f2(_globals, outputColor_Stage0, _8_coordSampled) * _globals._anonInterface0->uKernel_Stage1_c0[4].z;
114     _7_coord += float2(_globals._anonInterface0->uIncrement_Stage1_c0);
115     _8_coordSampled = _7_coord;
116     _6_output += MatrixEffect_Stage1_c0_c0_h4h4f2(_globals, outputColor_Stage0, _8_coordSampled) * _globals._anonInterface0->uKernel_Stage1_c0[4].w;
117     _7_coord += float2(_globals._anonInterface0->uIncrement_Stage1_c0);
118     _8_coordSampled = _7_coord;
119     _6_output += MatrixEffect_Stage1_c0_c0_h4h4f2(_globals, outputColor_Stage0, _8_coordSampled) * _globals._anonInterface0->uKernel_Stage1_c0[5].x;
120     _7_coord += float2(_globals._anonInterface0->uIncrement_Stage1_c0);
121     _8_coordSampled = _7_coord;
122     _6_output += MatrixEffect_Stage1_c0_c0_h4h4f2(_globals, outputColor_Stage0, _8_coordSampled) * _globals._anonInterface0->uKernel_Stage1_c0[5].y;
123     _7_coord += float2(_globals._anonInterface0->uIncrement_Stage1_c0);
124     _8_coordSampled = _7_coord;
125     _6_output += MatrixEffect_Stage1_c0_c0_h4h4f2(_globals, outputColor_Stage0, _8_coordSampled) * _globals._anonInterface0->uKernel_Stage1_c0[5].z;
126     _7_coord += float2(_globals._anonInterface0->uIncrement_Stage1_c0);
127     _8_coordSampled = _7_coord;
128     _6_output += MatrixEffect_Stage1_c0_c0_h4h4f2(_globals, outputColor_Stage0, _8_coordSampled) * _globals._anonInterface0->uKernel_Stage1_c0[5].w;
129     _7_coord += float2(_globals._anonInterface0->uIncrement_Stage1_c0);
130     _8_coordSampled = _7_coord;
131     _6_output += MatrixEffect_Stage1_c0_c0_h4h4f2(_globals, outputColor_Stage0, _8_coordSampled) * _globals._anonInterface0->uKernel_Stage1_c0[6].x;
132     _7_coord += float2(_globals._anonInterface0->uIncrement_Stage1_c0);
133     _6_output *= outputColor_Stage0;
134     output_Stage1 = _6_output;
135     {
136         _out.sk_FragColor = output_Stage1 * outputCoverage_Stage0;
137     }
138     return _out;
139 }