# Copyright 2019 The Amber Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

[vertex shader]
#version 430

layout(location = 0) in vec4 position;
layout(location = 1) in vec4 vert_color;
layout(location = 0) out vec4 frag_color;

void main() {
  gl_Position = position;
  frag_color = vert_color;
}

[fragment shader]
#version 430

layout(location = 0) in vec4 frag_color;
layout(location = 0) out vec4 final_color;

void main() {
  final_color = frag_color;
}

[vertex data]
#        position     vert_color
     0/R8G8_SNORM 1/R8G8B8A8_UNORM

#           Red for entire frame
#         R8   G8     R8  G8  B8   A8
        -128 -128    255   0   0  255
         127  127    255   0   0  255
        -128  127    255   0   0  255

        -128 -128    255   0   0  255
         127  127    255   0   0  255
         127 -128    255   0   0  255

#           Green for half frame
#         R8   G8     R8  G8  B8   A8
           0 -128      0 255   0  255
         127  127      0 255   0  255
           0  127      0 255   0  255

           0 -128      0 255   0  255
         127  127      0 255   0  255
         127 -128      0 255   0  255

#         Blue for quarter frame
#         R8   G8     R8  G8  B8   A8
        -128    0      0   0 255  255
           0  127      0   0 255  255
        -128  127      0   0 255  255

        -128    0      0   0 255  255
           0  127      0   0 255  255
           0    0      0   0 255  255

#  Mixed color for quarter frame
#         R8   G8     R8  G8  B8   A8
           0    0    128 128 128  255
         127  127    128 128 128  255
           0  127    128 128 128  255

           0    0    128 128 128  255
         127  127    128 128 128  255
         127    0    128 128 128  255

[test]
clear

draw arrays TRIANGLE_LIST 0 6
relative probe rgba (0.9, 0.9) (1.0, 0, 0, 1.0)
relative probe rgba (0.5, 0.5) (1.0, 0, 0, 1.0)
relative probe rgba (0.1, 0.7) (1.0, 0, 0, 1.0)
relative probe rgba (0.8, 0.3) (1.0, 0, 0, 1.0)

draw arrays TRIANGLE_LIST 6 6
relative probe rgba (0.0, 0.0) (1.0, 0, 0, 1.0)
relative probe rgba (0.3, 0.7) (1.0, 0, 0, 1.0)
relative probe rgba (0.4, 0.9) (1.0, 0, 0, 1.0)
relative probe rgba (0.5, 0.0) (0, 1.0, 0, 1.0)
relative probe rgba (0.8, 0.7) (0, 1.0, 0, 1.0)
relative probe rgba (0.9, 0.9) (0, 1.0, 0, 1.0)

draw arrays TRIANGLE_LIST 12 6
relative probe rgba (0.0, 0.0) (1.0, 0, 0, 1.0)
relative probe rgba (0.3, 0.2) (1.0, 0, 0, 1.0)
relative probe rgba (0.4, 0.4) (1.0, 0, 0, 1.0)
relative probe rgba (0.5, 0.0) (0, 1.0, 0, 1.0)
relative probe rgba (0.8, 0.7) (0, 1.0, 0, 1.0)
relative probe rgba (0.9, 0.9) (0, 1.0, 0, 1.0)
relative probe rgba (0.0, 0.5) (0, 0, 1.0, 1.0)
relative probe rgba (0.3, 0.7) (0, 0, 1.0, 1.0)
relative probe rgba (0.4, 0.9) (0, 0, 1.0, 1.0)

draw arrays TRIANGLE_LIST 18 6
relative probe rgba (0.0, 0.0) (1.0, 0, 0, 1.0)
relative probe rgba (0.3, 0.2) (1.0, 0, 0, 1.0)
relative probe rgba (0.4, 0.4) (1.0, 0, 0, 1.0)
relative probe rgba (0.5, 0.0) (0, 1.0, 0, 1.0)
relative probe rgba (0.8, 0.2) (0, 1.0, 0, 1.0)
relative probe rgba (0.9, 0.4) (0, 1.0, 0, 1.0)
relative probe rgba (0.0, 0.5) (0, 0, 1.0, 1.0)
relative probe rgba (0.3, 0.7) (0, 0, 1.0, 1.0)
relative probe rgba (0.4, 0.9) (0, 0, 1.0, 1.0)
relative probe rgba (0.5, 0.5) (0.5, 0.5, 0.5, 1.0)
relative probe rgba (0.8, 0.7) (0.5, 0.5, 0.5, 1.0)
relative probe rgba (0.9, 0.9) (0.5, 0.5, 0.5, 1.0)
