xref: /aosp_15_r20/external/skia/tests/sksl/realistic/GaussianBlur.wgsl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1diagnostic(off, derivative_uniformity);
2diagnostic(off, chromium.unreachable_code);
3struct FSIn {
4  @location(0) vLocalCoord_Stage0: vec2<f32>,
5};
6struct FSOut {
7  @location(0) sk_FragColor: vec4<f32>,
8};
9struct uniformBuffer {
10  @size(16) sk_RTAdjust: vec4<f32>,
11  @size(16) uIncrement_Stage1_c0: vec2<f32>,
12  @size(112) uKernel_Stage1_c0: array<vec4<f32>, 7>,
13  @size(48) umatrix_Stage1_c0_c0: mat3x3<f32>,
14  @size(16) uborder_Stage1_c0_c0_c0: vec4<f32>,
15  @size(16) usubset_Stage1_c0_c0_c0: vec4<f32>,
16  unorm_Stage1_c0_c0_c0: vec4<f32>,
17};
18@group(0) @binding(0) var<uniform> _uniform0 : uniformBuffer;
19@group(0) @binding(10001) var uTextureSampler_0_Stage1_Sampler: sampler;
20@group(0) @binding(10002) var uTextureSampler_0_Stage1_Texture: texture_2d<f32>;
21fn MatrixEffect_Stage1_c0_c0_h4h4f2(_input: vec4<f32>, _coords: vec2<f32>) -> vec4<f32> {
22  {
23    var _1_inCoord: vec2<f32> = (_uniform0.umatrix_Stage1_c0_c0 * vec3<f32>(_coords, 1.0)).xy;
24    _1_inCoord = _1_inCoord * _uniform0.unorm_Stage1_c0_c0_c0.xy;
25    var _2_subsetCoord: vec2<f32>;
26    _2_subsetCoord.x = _1_inCoord.x;
27    _2_subsetCoord.y = _1_inCoord.y;
28    let _3_clampedCoord: vec2<f32> = _2_subsetCoord;
29    var _4_textureColor: vec4<f32> = textureSample(uTextureSampler_0_Stage1_Texture, uTextureSampler_0_Stage1_Sampler, _3_clampedCoord * _uniform0.unorm_Stage1_c0_c0_c0.zw);
30    let _skTemp3 = floor(_1_inCoord.x + 0.001);
31    let _5_snappedX: f32 = _skTemp3 + 0.5;
32    if (_5_snappedX < _uniform0.usubset_Stage1_c0_c0_c0.x) || (_5_snappedX > _uniform0.usubset_Stage1_c0_c0_c0.z) {
33      {
34        _4_textureColor = _uniform0.uborder_Stage1_c0_c0_c0;
35      }
36    }
37    return _4_textureColor;
38  }
39}
40fn _skslMain(_stageIn: FSIn, _stageOut: ptr<function, FSOut>) {
41  {
42    var outputColor_Stage0: vec4<f32>;
43    var outputCoverage_Stage0: vec4<f32>;
44    {
45      outputColor_Stage0 = vec4<f32>(1.0);
46      outputCoverage_Stage0 = vec4<f32>(1.0);
47    }
48    var _6_output: vec4<f32> = vec4<f32>(0.0);
49    var _7_coord: vec2<f32> = _stageIn.vLocalCoord_Stage0 - vec2<f32>(12.0 * _uniform0.uIncrement_Stage1_c0);
50    var _8_coordSampled: vec2<f32> = vec2<f32>(0.0);
51    _8_coordSampled = _7_coord;
52    let _skTemp4 = MatrixEffect_Stage1_c0_c0_h4h4f2(outputColor_Stage0, _8_coordSampled);
53    _6_output = _6_output + _skTemp4 * _uniform0.uKernel_Stage1_c0[0].x;
54    _7_coord = _7_coord + vec2<f32>(_uniform0.uIncrement_Stage1_c0);
55    _8_coordSampled = _7_coord;
56    let _skTemp5 = MatrixEffect_Stage1_c0_c0_h4h4f2(outputColor_Stage0, _8_coordSampled);
57    _6_output = _6_output + _skTemp5 * _uniform0.uKernel_Stage1_c0[0].y;
58    _7_coord = _7_coord + vec2<f32>(_uniform0.uIncrement_Stage1_c0);
59    _8_coordSampled = _7_coord;
60    let _skTemp6 = MatrixEffect_Stage1_c0_c0_h4h4f2(outputColor_Stage0, _8_coordSampled);
61    _6_output = _6_output + _skTemp6 * _uniform0.uKernel_Stage1_c0[0].z;
62    _7_coord = _7_coord + vec2<f32>(_uniform0.uIncrement_Stage1_c0);
63    _8_coordSampled = _7_coord;
64    let _skTemp7 = MatrixEffect_Stage1_c0_c0_h4h4f2(outputColor_Stage0, _8_coordSampled);
65    _6_output = _6_output + _skTemp7 * _uniform0.uKernel_Stage1_c0[0].w;
66    _7_coord = _7_coord + vec2<f32>(_uniform0.uIncrement_Stage1_c0);
67    _8_coordSampled = _7_coord;
68    let _skTemp8 = MatrixEffect_Stage1_c0_c0_h4h4f2(outputColor_Stage0, _8_coordSampled);
69    _6_output = _6_output + _skTemp8 * _uniform0.uKernel_Stage1_c0[1].x;
70    _7_coord = _7_coord + vec2<f32>(_uniform0.uIncrement_Stage1_c0);
71    _8_coordSampled = _7_coord;
72    let _skTemp9 = MatrixEffect_Stage1_c0_c0_h4h4f2(outputColor_Stage0, _8_coordSampled);
73    _6_output = _6_output + _skTemp9 * _uniform0.uKernel_Stage1_c0[1].y;
74    _7_coord = _7_coord + vec2<f32>(_uniform0.uIncrement_Stage1_c0);
75    _8_coordSampled = _7_coord;
76    let _skTemp10 = MatrixEffect_Stage1_c0_c0_h4h4f2(outputColor_Stage0, _8_coordSampled);
77    _6_output = _6_output + _skTemp10 * _uniform0.uKernel_Stage1_c0[1].z;
78    _7_coord = _7_coord + vec2<f32>(_uniform0.uIncrement_Stage1_c0);
79    _8_coordSampled = _7_coord;
80    let _skTemp11 = MatrixEffect_Stage1_c0_c0_h4h4f2(outputColor_Stage0, _8_coordSampled);
81    _6_output = _6_output + _skTemp11 * _uniform0.uKernel_Stage1_c0[1].w;
82    _7_coord = _7_coord + vec2<f32>(_uniform0.uIncrement_Stage1_c0);
83    _8_coordSampled = _7_coord;
84    let _skTemp12 = MatrixEffect_Stage1_c0_c0_h4h4f2(outputColor_Stage0, _8_coordSampled);
85    _6_output = _6_output + _skTemp12 * _uniform0.uKernel_Stage1_c0[2].x;
86    _7_coord = _7_coord + vec2<f32>(_uniform0.uIncrement_Stage1_c0);
87    _8_coordSampled = _7_coord;
88    let _skTemp13 = MatrixEffect_Stage1_c0_c0_h4h4f2(outputColor_Stage0, _8_coordSampled);
89    _6_output = _6_output + _skTemp13 * _uniform0.uKernel_Stage1_c0[2].y;
90    _7_coord = _7_coord + vec2<f32>(_uniform0.uIncrement_Stage1_c0);
91    _8_coordSampled = _7_coord;
92    let _skTemp14 = MatrixEffect_Stage1_c0_c0_h4h4f2(outputColor_Stage0, _8_coordSampled);
93    _6_output = _6_output + _skTemp14 * _uniform0.uKernel_Stage1_c0[2].z;
94    _7_coord = _7_coord + vec2<f32>(_uniform0.uIncrement_Stage1_c0);
95    _8_coordSampled = _7_coord;
96    let _skTemp15 = MatrixEffect_Stage1_c0_c0_h4h4f2(outputColor_Stage0, _8_coordSampled);
97    _6_output = _6_output + _skTemp15 * _uniform0.uKernel_Stage1_c0[2].w;
98    _7_coord = _7_coord + vec2<f32>(_uniform0.uIncrement_Stage1_c0);
99    _8_coordSampled = _7_coord;
100    let _skTemp16 = MatrixEffect_Stage1_c0_c0_h4h4f2(outputColor_Stage0, _8_coordSampled);
101    _6_output = _6_output + _skTemp16 * _uniform0.uKernel_Stage1_c0[3].x;
102    _7_coord = _7_coord + vec2<f32>(_uniform0.uIncrement_Stage1_c0);
103    _8_coordSampled = _7_coord;
104    let _skTemp17 = MatrixEffect_Stage1_c0_c0_h4h4f2(outputColor_Stage0, _8_coordSampled);
105    _6_output = _6_output + _skTemp17 * _uniform0.uKernel_Stage1_c0[3].y;
106    _7_coord = _7_coord + vec2<f32>(_uniform0.uIncrement_Stage1_c0);
107    _8_coordSampled = _7_coord;
108    let _skTemp18 = MatrixEffect_Stage1_c0_c0_h4h4f2(outputColor_Stage0, _8_coordSampled);
109    _6_output = _6_output + _skTemp18 * _uniform0.uKernel_Stage1_c0[3].z;
110    _7_coord = _7_coord + vec2<f32>(_uniform0.uIncrement_Stage1_c0);
111    _8_coordSampled = _7_coord;
112    let _skTemp19 = MatrixEffect_Stage1_c0_c0_h4h4f2(outputColor_Stage0, _8_coordSampled);
113    _6_output = _6_output + _skTemp19 * _uniform0.uKernel_Stage1_c0[3].w;
114    _7_coord = _7_coord + vec2<f32>(_uniform0.uIncrement_Stage1_c0);
115    _8_coordSampled = _7_coord;
116    let _skTemp20 = MatrixEffect_Stage1_c0_c0_h4h4f2(outputColor_Stage0, _8_coordSampled);
117    _6_output = _6_output + _skTemp20 * _uniform0.uKernel_Stage1_c0[4].x;
118    _7_coord = _7_coord + vec2<f32>(_uniform0.uIncrement_Stage1_c0);
119    _8_coordSampled = _7_coord;
120    let _skTemp21 = MatrixEffect_Stage1_c0_c0_h4h4f2(outputColor_Stage0, _8_coordSampled);
121    _6_output = _6_output + _skTemp21 * _uniform0.uKernel_Stage1_c0[4].y;
122    _7_coord = _7_coord + vec2<f32>(_uniform0.uIncrement_Stage1_c0);
123    _8_coordSampled = _7_coord;
124    let _skTemp22 = MatrixEffect_Stage1_c0_c0_h4h4f2(outputColor_Stage0, _8_coordSampled);
125    _6_output = _6_output + _skTemp22 * _uniform0.uKernel_Stage1_c0[4].z;
126    _7_coord = _7_coord + vec2<f32>(_uniform0.uIncrement_Stage1_c0);
127    _8_coordSampled = _7_coord;
128    let _skTemp23 = MatrixEffect_Stage1_c0_c0_h4h4f2(outputColor_Stage0, _8_coordSampled);
129    _6_output = _6_output + _skTemp23 * _uniform0.uKernel_Stage1_c0[4].w;
130    _7_coord = _7_coord + vec2<f32>(_uniform0.uIncrement_Stage1_c0);
131    _8_coordSampled = _7_coord;
132    let _skTemp24 = MatrixEffect_Stage1_c0_c0_h4h4f2(outputColor_Stage0, _8_coordSampled);
133    _6_output = _6_output + _skTemp24 * _uniform0.uKernel_Stage1_c0[5].x;
134    _7_coord = _7_coord + vec2<f32>(_uniform0.uIncrement_Stage1_c0);
135    _8_coordSampled = _7_coord;
136    let _skTemp25 = MatrixEffect_Stage1_c0_c0_h4h4f2(outputColor_Stage0, _8_coordSampled);
137    _6_output = _6_output + _skTemp25 * _uniform0.uKernel_Stage1_c0[5].y;
138    _7_coord = _7_coord + vec2<f32>(_uniform0.uIncrement_Stage1_c0);
139    _8_coordSampled = _7_coord;
140    let _skTemp26 = MatrixEffect_Stage1_c0_c0_h4h4f2(outputColor_Stage0, _8_coordSampled);
141    _6_output = _6_output + _skTemp26 * _uniform0.uKernel_Stage1_c0[5].z;
142    _7_coord = _7_coord + vec2<f32>(_uniform0.uIncrement_Stage1_c0);
143    _8_coordSampled = _7_coord;
144    let _skTemp27 = MatrixEffect_Stage1_c0_c0_h4h4f2(outputColor_Stage0, _8_coordSampled);
145    _6_output = _6_output + _skTemp27 * _uniform0.uKernel_Stage1_c0[5].w;
146    _7_coord = _7_coord + vec2<f32>(_uniform0.uIncrement_Stage1_c0);
147    _8_coordSampled = _7_coord;
148    let _skTemp28 = MatrixEffect_Stage1_c0_c0_h4h4f2(outputColor_Stage0, _8_coordSampled);
149    _6_output = _6_output + _skTemp28 * _uniform0.uKernel_Stage1_c0[6].x;
150    _7_coord = _7_coord + vec2<f32>(_uniform0.uIncrement_Stage1_c0);
151    _6_output = _6_output * outputColor_Stage0;
152    let output_Stage1: vec4<f32> = _6_output;
153    {
154      (*_stageOut).sk_FragColor = output_Stage1 * outputCoverage_Stage0;
155    }
156  }
157}
158@fragment fn main(_stageIn: FSIn) -> FSOut {
159  var _stageOut: FSOut;
160  _skslMain(_stageIn, &_stageOut);
161  return _stageOut;
162}
163