#!amber
# Copyright 2020 Google LLC
#
# 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
#
#     http://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.

SHADER vertex vert_shader PASSTHROUGH

SHADER fragment frag_shader GLSL
#version 430
layout(location = 0) out vec4 frag_out;
uniform layout(set=0, binding=0) sampler1D tex_sampler;
void main()
{
    vec4 color = texture(tex_sampler, 0.0);
    for (int i = 0; i < 4; i++)
    {
        if (color[i] != -1.0)
        {
            frag_out = vec4(1, 0, 0, 1);
            return;
        }
    }

    frag_out = vec4(0, 1, 0, 1);
}
END

IMAGE framebuffer FORMAT B8G8R8A8_UNORM DIM_2D WIDTH 32 HEIGHT 32
IMAGE texture FORMAT B8G8R8A8_SNORM DIM_1D WIDTH 1 FILL -128
SAMPLER sampler

PIPELINE graphics pipeline
  ATTACH vert_shader
  ATTACH frag_shader
  BIND BUFFER texture AS combined_image_sampler SAMPLER sampler DESCRIPTOR_SET 0 BINDING 0
  BIND BUFFER framebuffer AS color LOCATION 0
END

RUN pipeline DRAW_RECT POS 0 0 SIZE 32 32
EXPECT framebuffer IDX 0 0 SIZE 32 32 EQ_RGBA 0 255 0 255
