From 01c586239b4d1c7d3a19d23b2f022cd6ddddb846 Mon Sep 17 00:00:00 2001 From: Jaebaek Seo Date: Fri, 16 Nov 2018 10:30:55 -0500 Subject: Vulkan: add draw triangles (#52) Vulkan: add draw triangles Add tests/cases/draw_triangle_list.amber to test drawing simple triangles and update engine to conduct draw based on parameters of draw array command. Fixes #57 --- tests/cases/clear.amber | 4 +- ...ear_and_probe_all_wrong_color.expect_fail.amber | 4 +- ...r_and_probe_small_wrong_color.expect_fail.amber | 4 +- ...lear_and_probe_too_large_rect.expect_fail.amber | 4 +- tests/cases/clear_color.amber | 4 +- ...r_color_without_clear_command.expect_fail.amber | 4 +- tests/cases/draw_triangle_list.amber | 100 +++++++++++++++++++++ tests/cases/multiple_clear_color.amber | 4 +- 8 files changed, 107 insertions(+), 21 deletions(-) create mode 100644 tests/cases/draw_triangle_list.amber (limited to 'tests') diff --git a/tests/cases/clear.amber b/tests/cases/clear.amber index b178987..6068b98 100644 --- a/tests/cases/clear.amber +++ b/tests/cases/clear.amber @@ -20,9 +20,7 @@ layout(location = 0) in vec4 color_in; layout(location = 0) out vec4 color_out; -void -main() -{ +void main() { color_out = color_in; } diff --git a/tests/cases/clear_and_probe_all_wrong_color.expect_fail.amber b/tests/cases/clear_and_probe_all_wrong_color.expect_fail.amber index fda1da2..82f34cd 100644 --- a/tests/cases/clear_and_probe_all_wrong_color.expect_fail.amber +++ b/tests/cases/clear_and_probe_all_wrong_color.expect_fail.amber @@ -20,9 +20,7 @@ layout(location = 0) in vec4 color_in; layout(location = 0) out vec4 color_out; -void -main() -{ +void main() { color_out = color_in; } diff --git a/tests/cases/clear_and_probe_small_wrong_color.expect_fail.amber b/tests/cases/clear_and_probe_small_wrong_color.expect_fail.amber index 54eee4f..431fb31 100644 --- a/tests/cases/clear_and_probe_small_wrong_color.expect_fail.amber +++ b/tests/cases/clear_and_probe_small_wrong_color.expect_fail.amber @@ -20,9 +20,7 @@ layout(location = 0) in vec4 color_in; layout(location = 0) out vec4 color_out; -void -main() -{ +void main() { color_out = color_in; } diff --git a/tests/cases/clear_and_probe_too_large_rect.expect_fail.amber b/tests/cases/clear_and_probe_too_large_rect.expect_fail.amber index ed58f41..a4c8bfb 100644 --- a/tests/cases/clear_and_probe_too_large_rect.expect_fail.amber +++ b/tests/cases/clear_and_probe_too_large_rect.expect_fail.amber @@ -20,9 +20,7 @@ layout(location = 0) in vec4 color_in; layout(location = 0) out vec4 color_out; -void -main() -{ +void main() { color_out = color_in; } diff --git a/tests/cases/clear_color.amber b/tests/cases/clear_color.amber index 74433de..634ae8b 100644 --- a/tests/cases/clear_color.amber +++ b/tests/cases/clear_color.amber @@ -20,9 +20,7 @@ layout(location = 0) in vec4 color_in; layout(location = 0) out vec4 color_out; -void -main() -{ +void main() { color_out = color_in; } diff --git a/tests/cases/clear_color_without_clear_command.expect_fail.amber b/tests/cases/clear_color_without_clear_command.expect_fail.amber index e367c6d..608c0c9 100644 --- a/tests/cases/clear_color_without_clear_command.expect_fail.amber +++ b/tests/cases/clear_color_without_clear_command.expect_fail.amber @@ -20,9 +20,7 @@ layout(location = 0) in vec4 color_in; layout(location = 0) out vec4 color_out; -void -main() -{ +void main() { color_out = color_in; } diff --git a/tests/cases/draw_triangle_list.amber b/tests/cases/draw_triangle_list.amber new file mode 100644 index 0000000..a15c0a1 --- /dev/null +++ b/tests/cases/draw_triangle_list.amber @@ -0,0 +1,100 @@ +# 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. + +[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/R8G8B8_UNORM + +# Red for entire frame +# R8 G8 R8 G8 B8 + -128 -128 255 0 0 + 127 127 255 0 0 + -128 127 255 0 0 + + -128 -128 255 0 0 + 127 127 255 0 0 + 127 -128 255 0 0 + +# Green for half frame +# R8 G8 R8 G8 B8 + 0 -128 0 255 0 + 127 127 0 255 0 + 0 127 0 255 0 + + 0 -128 0 255 0 + 127 127 0 255 0 + 127 -128 0 255 0 + +# Blue for quarter frame +# R8 G8 R8 G8 B8 + -128 0 0 0 255 + 0 127 0 0 255 + -128 127 0 0 255 + + -128 0 0 0 255 + 0 127 0 0 255 + 0 0 0 0 255 + +# Mixed color for quarter frame +# R8 G8 R8 G8 B8 + 0 0 128 128 128 + 127 127 128 128 128 + 0 127 128 128 128 + + 0 0 128 128 128 + 127 127 128 128 128 + 127 0 128 128 128 + +[test] +clear + +draw arrays TRIANGLE_LIST 0 6 +relative probe rect rgb (0.0, 0.0, 1.0, 1.0) (1.0, 0, 0) + +draw arrays TRIANGLE_LIST 6 6 +relative probe rect rgb (0.0, 0.0, 0.5, 1.0) (1.0, 0, 0) +relative probe rect rgb (0.5, 0.0, 0.5, 1.0) (0, 1.0, 0) + +draw arrays TRIANGLE_LIST 12 6 +relative probe rect rgb (0.0, 0.0, 0.5, 0.5) (1.0, 0, 0) +relative probe rect rgb (0.5, 0.0, 0.5, 1.0) (0, 1.0, 0) +relative probe rect rgb (0.0, 0.5, 0.5, 0.5) (0, 0, 1.0) + +draw arrays TRIANGLE_LIST 18 6 +relative probe rect rgb (0.0, 0.0, 0.5, 0.5) (1.0, 0, 0) +relative probe rect rgb (0.5, 0.0, 0.5, 0.5) (0, 1.0, 0) +relative probe rect rgb (0.0, 0.5, 0.5, 0.5) (0, 0, 1.0) +relative probe rect rgb (0.5, 0.5, 0.5, 0.5) (0.5, 0.5, 0.5) diff --git a/tests/cases/multiple_clear_color.amber b/tests/cases/multiple_clear_color.amber index ede2d82..f70d97e 100644 --- a/tests/cases/multiple_clear_color.amber +++ b/tests/cases/multiple_clear_color.amber @@ -20,9 +20,7 @@ layout(location = 0) in vec4 color_in; layout(location = 0) out vec4 color_out; -void -main() -{ +void main() { color_out = color_in; } -- cgit v1.2.3