# Copyright 2018 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.

[require]
fbsize 800 600

[vertex shader]
#version 430

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

layout(set = 0, binding = 0) readonly buffer block1 {
  vec4 in_color;
};

void main() {
  gl_Position = position;
  frag_color = in_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;
}

[test]
clear

ssbo 0 subdata vec4 0 1.0 0.0 0.0 1.0
draw rect -1 -1 1 1

ssbo 0 subdata vec4 0 0.0 1.0 0.0 1.0
draw rect -1  0 1 1

ssbo 0 subdata vec4 0 0.0 0.0 1.0 1.0
draw rect  0 -1 1 1

ssbo 0 subdata vec4 0 0.5 0.0 0.5 1.0
draw rect  0  0 1 1

relative probe rect rgba (0.0, 0.0, 0.5, 0.5) (1.0,   0,   0, 1.0)
relative probe rect rgba (0.0, 0.5, 0.5, 0.5) (  0, 1.0,   0, 1.0)
relative probe rect rgba (0.5, 0.0, 0.5, 0.5) (  0,   0, 1.0, 1.0)
relative probe rect rgba (0.5, 0.5, 0.5, 0.5) (0.5,   0, 0.5, 1.0)
