From 253fd3006aaa0342f2b0d70f43fa84024151b487 Mon Sep 17 00:00:00 2001 From: JimmyBinoculars Date: Fri, 20 Feb 2026 20:24:42 +0000 Subject: [PATCH] Rainbow trianglegit add . --- Dockerfile | 23 ----------------------- VulkanTest | Bin 103040 -> 103040 bytes a.out | Bin 102080 -> 0 bytes cve_model.cpp | 9 +++++++-- cve_model.hpp | 2 ++ first_app.cpp | 6 +++--- shaders/simple_shader.frag | 8 +++++--- shaders/simple_shader.frag.spv | Bin 424 -> 572 bytes shaders/simple_shader.vert | 4 ++++ shaders/simple_shader.vert.spv | Bin 896 -> 1080 bytes 10 files changed, 21 insertions(+), 31 deletions(-) delete mode 100644 Dockerfile delete mode 100755 a.out diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 06ad274..0000000 --- a/Dockerfile +++ /dev/null @@ -1,23 +0,0 @@ -FROM ubuntu:22.04 - -# Install dependencies -RUN apt-get update && apt-get install -y \ - build-essential \ - cmake \ - git \ - vulkan-tools \ - libvulkan-dev \ - vulkan-validationlayers \ - spirv-tools \ - libxxf86vm-dev \ - libxi-dev \ - libglfw3-dev \ - libglm-dev \ - wget \ - && rm -rf /var/lib/apt/lists/* - -# Install glslc -RUN wget -O /tmp/glslc.deb https://storage.googleapis.com/shaderc/badges/build_link_linux_gcc_release.html && \ - apt-get update && apt-get install -y /tmp/glslc.deb || true - -WORKDIR /workspace \ No newline at end of file diff --git a/VulkanTest b/VulkanTest index d36e5ca52a0b2bb2c1bef667c5b2c1d0558db855..0aa2d424eab28c681732e4334d5f1152aa575277 100755 GIT binary patch delta 9000 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 delta 8859 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 diff --git a/a.out b/a.out deleted file mode 100755 index 76a56707a7d9aa6fabeed1c360a9b5eff90632e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102080 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 VP;?f7UHr9tu<0sG1k0oLe*yZJw@Ls2 diff --git a/cve_model.cpp b/cve_model.cpp index b56d2a7..aa6bf73 100644 --- a/cve_model.cpp +++ b/cve_model.cpp @@ -51,11 +51,16 @@ namespace cve { } std::vector CveModel::Vertex::getAttributeDescriptions() { - std::vector attributeDescriptions(1); + std::vector attributeDescriptions(2); attributeDescriptions[0].binding = 0; attributeDescriptions[0].location = 0; attributeDescriptions[0].format = VK_FORMAT_R32G32_SFLOAT; - attributeDescriptions[0].offset = 0; + attributeDescriptions[0].offset = offsetof(Vertex, position); + + attributeDescriptions[1].binding = 0; + attributeDescriptions[1].location = 1; + attributeDescriptions[1].format = VK_FORMAT_R32G32B32_SFLOAT; + attributeDescriptions[1].offset = offsetof(Vertex, color); return attributeDescriptions; } diff --git a/cve_model.hpp b/cve_model.hpp index 59b1adf..b148ce8 100644 --- a/cve_model.hpp +++ b/cve_model.hpp @@ -14,6 +14,8 @@ namespace cve { struct Vertex { glm::vec2 position; + glm::vec3 color; + static std::vector getBindingDescriptions(); static std::vector getAttributeDescriptions(); }; diff --git a/first_app.cpp b/first_app.cpp index d61bff0..f0d8c72 100644 --- a/first_app.cpp +++ b/first_app.cpp @@ -26,9 +26,9 @@ namespace cve { void FirstApp::loadModels() { std::vector verticies { - {{0.0f, -0.5f}}, - {{0.5f, 0.5f}}, - {{-0.5f, 0.5f}} + {{0.0f, -0.5f}, {1.0f, 0.0f, 0.0f}}, + {{0.5f, 0.5f}, {0.0f, 1.0f, 0.0f}}, + {{-0.5f, 0.5f}, {0.0f, 0.0f, 1.0f}} }; cveModel = std::make_unique(cveDevice, verticies); diff --git a/shaders/simple_shader.frag b/shaders/simple_shader.frag index 1d1b727..ba9894d 100644 --- a/shaders/simple_shader.frag +++ b/shaders/simple_shader.frag @@ -1,7 +1,9 @@ #version 450 -layout (location = 0) out vec4 outColor; +layout(location = 0) in vec3 fragColor; + +layout(location = 0) out vec4 outColor; void main() { - outColor = vec4(1.0, 1.0, 0.0, 1.0); -} + outColor = vec4(fragColor, 1.0); +} \ No newline at end of file diff --git a/shaders/simple_shader.frag.spv b/shaders/simple_shader.frag.spv index b5a7103864001f34497b64f20c1afdc706f739c0..da37f7ede672fe162b5322c32f5938a7836409a7 100644 GIT binary patch delta 287 zcmX|+Jqp4=6oe-xF=(>>7HLETE3p;?@dqqywXm{EqX=psm4$_!b?_1%!pnFN!5LZ2 z^6}ox&hEZE+^1*ULN@>$gfM94W)KJPfG@{ne`1RgiSqTW=fg)tvCWd*JUyft`vs#4 zw240HD1U8cF`F`tB5_HFI%IW-{E^kVP+p%}*$M%!)BD+JUB)yOHblV{Cs3$rJ(j;$ ivz{*d1%m)ExApQXqVFl85 RKprQM2I>0?bdCiO0{}d}4OajF diff --git a/shaders/simple_shader.vert b/shaders/simple_shader.vert index 5d8e89b..662c096 100644 --- a/shaders/simple_shader.vert +++ b/shaders/simple_shader.vert @@ -1,7 +1,11 @@ #version 450 layout(location = 0) in vec2 position; +layout(location = 1) in vec3 color; + +layout(location = 0) out vec3 fragColor; void main() { gl_Position = vec4(position, 0.0, 1.0); + fragColor = color; } diff --git a/shaders/simple_shader.vert.spv b/shaders/simple_shader.vert.spv index 4a3fc9b410a132ba8768744f8b3b5e4dec8f92de..75cc466adaac3212c50833cc5ceae919c746e37b 100644 GIT binary patch delta 249 zcmZo*-@(Dl%%sfDz`)4B&A`i`IFZ*>o|6FtSb#V;F*6Uu<^^IQAeIGU`Hhj>jEbxb ztYBVRQDVAteolT7P=*z#M;=HggZPsZ8S`b`fg&J1azG3MAU;S1h|jqBETc4|uQ*Uh z8pve>VrC##0P>D$ln*inCJ)vQlbQj0K57Y?*IS* delta 71 zcmdnN(ZJ5j%%sfDz`)4B&A`hbJ(1T`9LNI#79h?|%*+F^d4X7HV(dPvH0q)MWw008r8j@&Et;