From 13063ad2897e31d24a22d97a54ca7deb3b37b814 Mon Sep 17 00:00:00 2001 From: JimmyBinoculars Date: Sat, 21 Feb 2026 15:23:14 +0000 Subject: [PATCH] Movmenet & duplication! --- Makefile | 32 +++++++++++++++++++++---- VulkanTest | Bin 110688 -> 110816 bytes build/cve_device.d | 3 +++ build/cve_device.o | Bin 0 -> 56312 bytes build/cve_model.d | 5 ++++ build/cve_model.o | Bin 0 -> 4872 bytes build/cve_pipeline.d | 6 +++++ build/cve_pipeline.o | Bin 0 -> 16232 bytes build/cve_swap_chain.d | 5 ++++ build/cve_swap_chain.o | Bin 0 -> 38680 bytes build/cve_window.d | 2 ++ build/cve_window.o | Bin 0 -> 5728 bytes build/first_app.d | 8 +++++++ build/first_app.o | Bin 0 -> 29928 bytes build/main.d | 8 +++++++ build/main.o | Bin 0 -> 3992 bytes first_app.cpp | 42 +++++++++++++++++++++++++++++---- shaders/simple_shader.frag | 9 ++++--- shaders/simple_shader.frag.spv | Bin 572 -> 756 bytes shaders/simple_shader.vert | 8 ++++--- shaders/simple_shader.vert.spv | Bin 1080 -> 1224 bytes 21 files changed, 113 insertions(+), 15 deletions(-) create mode 100644 build/cve_device.d create mode 100644 build/cve_device.o create mode 100644 build/cve_model.d create mode 100644 build/cve_model.o create mode 100644 build/cve_pipeline.d create mode 100644 build/cve_pipeline.o create mode 100644 build/cve_swap_chain.d create mode 100644 build/cve_swap_chain.o create mode 100644 build/cve_window.d create mode 100644 build/cve_window.o create mode 100644 build/first_app.d create mode 100644 build/first_app.o create mode 100644 build/main.d create mode 100644 build/main.o diff --git a/Makefile b/Makefile index 9c5deb6..39897a2 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,30 @@ -CFLAGS = -std=c++17 -O2 +CXX ?= g++ +CCACHE := $(shell command -v ccache 2>/dev/null) +ifneq ($(CCACHE),) +CXX := ccache $(CXX) +endif +CXXFLAGS = -std=c++17 -O2 -MMD -MP LDFLAGS = -lglfw -lvulkan -ldl -lpthread -lX11 -lXxf86vm -lXrandr -lXi SOURCES = $(wildcard *.cpp) HEADERS = $(wildcard *.hpp) +OBJECTS = $(SOURCES:%.cpp=build/%.o) +DEPS = $(OBJECTS:.o=.d) -VulkanTest: $(SOURCES) $(HEADERS) - ./compile.sh - g++ $(CFLAGS) -o VulkanTest $(SOURCES) $(LDFLAGS) +SHADERS = shaders/simple_shader.vert shaders/simple_shader.frag +SPV = $(SHADERS:=.spv) + +VulkanTest: $(SPV) $(OBJECTS) + $(CXX) $(CXXFLAGS) -o VulkanTest $(OBJECTS) $(LDFLAGS) + +build/%.o: %.cpp $(HEADERS) | build + $(CXX) $(CXXFLAGS) -c $< -o $@ + +shaders/%.spv: shaders/% + /usr/local/bin/glslc $< -o $@ + +build: + mkdir -p build .PHONY: test clean @@ -14,4 +32,8 @@ test: VulkanTest ./VulkanTest clean: - rm -f VulkanTest \ No newline at end of file + rm -f VulkanTest + rm -rf build + rm -f $(SPV) + +-include $(DEPS) \ No newline at end of file diff --git a/VulkanTest b/VulkanTest index a2d8df6439777c5c9b468dda931b9d30120b2a3b..7fea3c0213d20c731bed19208770f6e78f92ef90 100755 GIT binary patch delta 24111 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 EA8-13?EnA( delta 23816 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 z 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 diff --git a/build/cve_device.d b/build/cve_device.d new file mode 100644 index 0000000..48bd825 --- /dev/null +++ b/build/cve_device.d @@ -0,0 +1,3 @@ +build/cve_device.o: cve_device.cpp cve_device.hpp cve_window.hpp +cve_device.hpp: +cve_window.hpp: diff --git a/build/cve_device.o b/build/cve_device.o new file mode 100644 index 0000000000000000000000000000000000000000..5c4985085e7bd82fe4f34a89f5987caaa3ecf12a GIT binary patch literal 56312 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 Y{HF=*`lGp5y8Px&nL~fi%qjo>0W{PM{Qv*} literal 0 HcmV?d00001 diff --git a/build/cve_model.d b/build/cve_model.d new file mode 100644 index 0000000..e007a78 --- /dev/null +++ b/build/cve_model.d @@ -0,0 +1,5 @@ +build/cve_model.o: cve_model.cpp cve_model.hpp cve_device.hpp \ + cve_window.hpp +cve_model.hpp: +cve_device.hpp: +cve_window.hpp: diff --git a/build/cve_model.o b/build/cve_model.o new file mode 100644 index 0000000000000000000000000000000000000000..040530cb2253876b4bd1efcf9712ddcfe78d43e1 GIT binary patch literal 4872 zcmbtXU5pb|6u#R9w*1%@!DI~x1J=zNbkcTLgbiSqw#yL8+H6_GzYMd}>2BHWPo~qd z%L9_EflO)>9(?1$H$&os#3v*sf*6sA3E_bdA51XDfWfHokEn4y=gvL5vqQ^+o}~BZ zJLi1&+;i{Td;3NzJ>=`?U?d%E7hC8N%9uZ}(2nzFoULVRxa|t)uN3NEf*bzKDvd71 z{wsPzX&m({jq?+ojNL)K(&$tg)etHcz*jHl^Kx+Go1EY@`YRW{yynQ@fzhlodoPqz z8cUw)MFu+=2FfA7vSpca>Ap`1zW<56r+fCkFL?44=q|Ei{?hCj)cabZ&F+Q)Kz1Isi(cd9cYel9Ggu5}*alg_`hyCehG8|H_ zK!L8DgeOzXEg9}!n8;F?NbhB?;p>?X{>bxsWe;}_uI~DH6_7Zt&CDvr?o{k-2!60O zk0Jk+xF0LU2JjZF@caU|c;+Z&X^h)&`m?LjDv=08PmIK`MhCPd-ZauYDrZqH!x5)bgOLc zaP+%+o(5LN>fAa}u9Yll*G{QV>gka-J0_CO(P9k<#tccbq$xv#cHd?O1FJcO#V`I z9Uf&q#x5cTpB9((qV71BNsq9O=}^}hMAofa)#X18nL&M6*z`kTzBmSpx^swuyo`mT%kqg}zlGrDSi*ju zYoUT1LN;4SC&Qy-u>^UyYcU8tCx44pnA=lp42Hs!pK^c2e;9jO)z#nzRiED_0 zhsq`&p1_WfALa%3i&qK&w8E2Z@H*hF#%%~Z4mAqj8&KbXUn~A@Sb$b|xDCFg4Zgh% zzNZa-2yl!)0yPTl$1`p4uLYhF_Ow@*!xm{3{~ExNzas1p^HCVv)y95Q*k2d+d~bu# zsW$daVJ|_A!uLBi79TZoIuT(|M6rlr(TBxzOnqgz4@|cu#A%p}rRpsCl584zSyjiU zr_~A^hvkwsRj_8%dW6*{lSb7t%QMbN3H>3{F!me8vN`i0TNK#5LqxZ?IB-)V`?A(n z=cwH~oQmZndt`oyFFJo!q*QX|7z zbs?&UPNd&8k@=J-qW_zsKWA!3Q<>=V2PYHdVo@vQCa9u68@PBU+uzgx^VpV$(}!;ppW+;zS0O^F1}0r z+)zjOV=f%;V8YkCaJ(%D-z0G4z`KF)9v6-;CBi>&;p<%ZH5cx-|G|Yn;j-@(=LA-G zOA-H0fnz*w`$H~!ygSH#!o`nkL^w3LpqjsNMIUpBf^-YF5o367p&%}X;{7Nu9gN;E z2px9eXdf4SdJ7N_o#(V42&Z%VBM%Rq&$m1{ox{I+a0v-f-$%cw?zsJv})7tU*;)vFfjkdj+NOP(t0 z+LZjT(^}TyI50{OL8)vRGQ13*dI z72!{IgnRoXQ1JElBrqa29<4L&Kk_I19Wj1{1`zeM7@zJVQq#PtJ}dl5PxZUPpZZjj zAN9{e1J7$u`0T9km&j1m6hFb&p@E!U|IaCZo&ml7Ux06`??(~&yCnv~{NaBf@~8Z@ w8XH}%i;a6n1cv(q|MhtN5o?vI^Wv}8CC|h>)8XezD}PB`Qn!KMEnfeB0iNw9aR2}S literal 0 HcmV?d00001 diff --git a/build/cve_pipeline.d b/build/cve_pipeline.d new file mode 100644 index 0000000..da4a20e --- /dev/null +++ b/build/cve_pipeline.d @@ -0,0 +1,6 @@ +build/cve_pipeline.o: cve_pipeline.cpp cve_pipeline.hpp cve_device.hpp \ + cve_window.hpp cve_model.hpp +cve_pipeline.hpp: +cve_device.hpp: +cve_window.hpp: +cve_model.hpp: diff --git a/build/cve_pipeline.o b/build/cve_pipeline.o new file mode 100644 index 0000000000000000000000000000000000000000..2c4ecc256be14048e3dd258918993dc58ec6d289 GIT binary patch literal 16232 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 OGwV3ZN=pMvQTtz7h(*%? literal 0 HcmV?d00001 diff --git a/build/cve_swap_chain.d b/build/cve_swap_chain.d new file mode 100644 index 0000000..ec645b3 --- /dev/null +++ b/build/cve_swap_chain.d @@ -0,0 +1,5 @@ +build/cve_swap_chain.o: cve_swap_chain.cpp cve_swap_chain.hpp \ + cve_device.hpp cve_window.hpp +cve_swap_chain.hpp: +cve_device.hpp: +cve_window.hpp: diff --git a/build/cve_swap_chain.o b/build/cve_swap_chain.o new file mode 100644 index 0000000000000000000000000000000000000000..f1f3b726826d036ea61b8d3aeb9cecceaf06fceb GIT binary patch literal 38680 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 WfEY?h6?box|4TB_){sL;Wq$)bWdke# literal 0 HcmV?d00001 diff --git a/first_app.cpp b/first_app.cpp index c540d68..885e034 100644 --- a/first_app.cpp +++ b/first_app.cpp @@ -3,7 +3,16 @@ #include #include +#define GLM_FORCE_RADIANS +#define GLM_FORCE_DEPTH_ZERO_TO_ONE +#include + namespace cve { + struct SimplePushConstantData{ + glm::vec2 offset; + alignas(16) glm::vec3 color; + }; + FirstApp::FirstApp() { loadModels(); createPipelineLayout(); @@ -35,12 +44,17 @@ namespace cve { } void FirstApp::createPipelineLayout() { + VkPushConstantRange pushConstantRange{}; + pushConstantRange.stageFlags = VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_FRAGMENT_BIT; + pushConstantRange.offset = 0; + pushConstantRange.size = sizeof(SimplePushConstantData); + VkPipelineLayoutCreateInfo pipelineLayoutInfo{}; pipelineLayoutInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO; pipelineLayoutInfo.setLayoutCount = 0; pipelineLayoutInfo.pSetLayouts = nullptr; - pipelineLayoutInfo.pushConstantRangeCount = 0; - pipelineLayoutInfo.pPushConstantRanges = nullptr; + pipelineLayoutInfo.pushConstantRangeCount = 1; + pipelineLayoutInfo.pPushConstantRanges = &pushConstantRange; if (vkCreatePipelineLayout(cveDevice.device(), &pipelineLayoutInfo, nullptr, &pipelineLayout) != VK_SUCCESS) { throw std::runtime_error("Failed to create pipeline layout"); @@ -108,6 +122,9 @@ namespace cve { } void FirstApp::recordCommandBuffer(int imageIndex) { + static int frame = 30; + frame = (frame+1) % 2000; + VkCommandBufferBeginInfo beginInfo{}; beginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; @@ -124,7 +141,7 @@ namespace cve { renderPassInfo.renderArea.extent = cveSwapChain->getSwapChainExtent(); std::array clearValues{}; - clearValues[0].color = {0.1f, 0.1f, 0.1f, 1.0f}; + clearValues[0].color = {0.01f, 0.01f, 0.01f, 1.0f}; clearValues[1].depthStencil = {1.0f, 0}; renderPassInfo.clearValueCount = static_cast(clearValues.size()); renderPassInfo.pClearValues = clearValues.data(); @@ -144,7 +161,24 @@ namespace cve { cvePipeline->bind(commandBuffers[imageIndex]); cveModel->bind(commandBuffers[imageIndex]); - cveModel->draw(commandBuffers[imageIndex]); + + for (int j = 0; j < 4; j++) { + SimplePushConstantData push{}; + push.offset = {-0.5f + frame * 0.0005f, -0.4f + j * 0.25f}; + push.color = {0.0f, 0.0f, 0.2f + 0.2f * j}; + + vkCmdPushConstants( + commandBuffers[imageIndex], + pipelineLayout, + VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_FRAGMENT_BIT, + 0, + sizeof(SimplePushConstantData), + &push + ); + cveModel->draw(commandBuffers[imageIndex]); + } + + vkCmdEndRenderPass(commandBuffers[imageIndex]); if (vkEndCommandBuffer(commandBuffers[imageIndex]) != VK_SUCCESS) { diff --git a/shaders/simple_shader.frag b/shaders/simple_shader.frag index ba9894d..6092dcd 100644 --- a/shaders/simple_shader.frag +++ b/shaders/simple_shader.frag @@ -1,9 +1,12 @@ #version 450 -layout(location = 0) in vec3 fragColor; - layout(location = 0) out vec4 outColor; +layout(push_constant) uniform Push { + vec2 offset; + vec3 color; +} push; + void main() { - outColor = vec4(fragColor, 1.0); + outColor = vec4(push.color, 1.0); } \ No newline at end of file diff --git a/shaders/simple_shader.frag.spv b/shaders/simple_shader.frag.spv index da37f7ede672fe162b5322c32f5938a7836409a7..6cc4cd44a0abd69f75b1e7edc4e9adb1c34e713c 100644 GIT binary patch literal 756 zcmYk2OG^TA6veO4O!JkgwGqQ*AT26_sECMZF`&^07(z!HFh_I@+V$D`RBeLJZyd`% z+_`hkJ@=VO_jb%uRJ2KD!LD+;X>`iWNlA=xLUq~^J2ifa57o?(Lcv7qa=~Mits$ibA;Kc zBjY*RhdS)^xK*=9P;bLg6Rsv}NR9qDzQ#JYrT@IRuB@#d+zQNIU40AkTpIo=!OQ`N zz9^5Ly5LfRiFbsV5e+=`%JSsHQxD9Za82Q=d{>r|og|pq!Q|KF(Nd2%y$@t&pSKsf z19LDtj~Twjcp|Tova1F4&w${4T93}h$(wQ~b$Mj++_VrwWLq#Gor4dk-{X}-yh zOv*L3KpsdHFA#%N1TwIKW%;3EKngA<02Kq70#hdl6=MR@0SxRw$iN^3#3213^&ojZ TAhu&*273i0_ZR363m^snjpGvP diff --git a/shaders/simple_shader.vert b/shaders/simple_shader.vert index 662c096..cfa9bc6 100644 --- a/shaders/simple_shader.vert +++ b/shaders/simple_shader.vert @@ -3,9 +3,11 @@ layout(location = 0) in vec2 position; layout(location = 1) in vec3 color; -layout(location = 0) out vec3 fragColor; +layout(push_constant) uniform Push { + vec2 offset; + vec3 color; +} push; void main() { - gl_Position = vec4(position, 0.0, 1.0); - fragColor = color; + gl_Position = vec4(position + push.offset, 0.0, 1.0); } diff --git a/shaders/simple_shader.vert.spv b/shaders/simple_shader.vert.spv index 75cc466adaac3212c50833cc5ceae919c746e37b..d1f503f659cf3312ce64e9b14efb66d04afd80f1 100644 GIT binary patch delta 518 zcmYk3%`QVx6ovP>x4)4SKSgP&YHvq|A|!$sk(ksYG@>EF6=h%`W#9p%Ph#c~ypOTO zw~l+mPFD6_>+GL(+mFg;)yGk{Z02mry!GDvR5Kksg@#grD57PQ&pp(;Jj}Dz`0O>FEh&MqENIylBjTVru$h9?UX}Z|Q h1U7K-+p9NOmtAi6g4Yg2|DcZV<6OKAzFDyYegJcjAyohX delta 379 zcmXv~xeCHS6nr^6f-HhpyrWo(r67okSlH?ZSfo%9JiyK>{(|I7ECfHn|FN(VoLQ5F zA#?0|JLKg&)5RV?