1cb93a386Sopenharmony_ci[[block]]
2cb93a386Sopenharmony_cistruct Uniforms {
3cb93a386Sopenharmony_ci  modelViewProjectionMatrix : mat4x4<f32>;
4cb93a386Sopenharmony_ci};
5cb93a386Sopenharmony_ci
6cb93a386Sopenharmony_ci[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;
7cb93a386Sopenharmony_ci
8cb93a386Sopenharmony_cistruct VertexInput {
9cb93a386Sopenharmony_ci  [[location(0)]]
10cb93a386Sopenharmony_ci  cur_position : vec4<f32>;
11cb93a386Sopenharmony_ci  [[location(1)]]
12cb93a386Sopenharmony_ci  color : vec4<f32>;
13cb93a386Sopenharmony_ci};
14cb93a386Sopenharmony_ci
15cb93a386Sopenharmony_cistruct VertexOutput {
16cb93a386Sopenharmony_ci  [[location(0)]]
17cb93a386Sopenharmony_ci  vtxFragColor : vec4<f32>;
18cb93a386Sopenharmony_ci  [[builtin(position)]]
19cb93a386Sopenharmony_ci  Position : vec4<f32>;
20cb93a386Sopenharmony_ci};
21cb93a386Sopenharmony_ci
22cb93a386Sopenharmony_ci[[stage(vertex)]]
23cb93a386Sopenharmony_cifn vtx_main(input : VertexInput) -> VertexOutput {
24cb93a386Sopenharmony_ci  var output : VertexOutput;
25cb93a386Sopenharmony_ci  output.Position = (uniforms.modelViewProjectionMatrix * input.cur_position);
26cb93a386Sopenharmony_ci  output.vtxFragColor = input.color;
27cb93a386Sopenharmony_ci  return output;
28cb93a386Sopenharmony_ci}
29cb93a386Sopenharmony_ci
30cb93a386Sopenharmony_ci[[stage(fragment)]]
31cb93a386Sopenharmony_cifn frag_main([[location(0)]] fragColor : vec4<f32>) -> [[location(0)]] vec4<f32> {
32cb93a386Sopenharmony_ci  return fragColor;
33cb93a386Sopenharmony_ci}
34