From 829e3fd3d8e77db800ff04db965cc7d6ca5e7d87 Mon Sep 17 00:00:00 2001 From: Warwick New Date: Mon, 6 Jan 2025 16:30:47 +0000 Subject: [PATCH] Added dynamic state --- compile_shaders.sh | 4 ++-- shaders/shader.frag | 7 ------- shaders/shader.frag.glsl | 10 ++++++++++ shaders/shader.vert | 11 ----------- shaders/shader.vert.glsl | 20 ++++++++++++++++++++ src/main.c | 16 ++++++++++++++++ 6 files changed, 48 insertions(+), 20 deletions(-) delete mode 100644 shaders/shader.frag create mode 100644 shaders/shader.frag.glsl delete mode 100644 shaders/shader.vert create mode 100644 shaders/shader.vert.glsl diff --git a/compile_shaders.sh b/compile_shaders.sh index 08a2e37..e1a15df 100755 --- a/compile_shaders.sh +++ b/compile_shaders.sh @@ -3,5 +3,5 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) cd $SCRIPT_DIR -glslc shaders/shader.vert -o shaders/shader.vert.spv -glslc shaders/shader.frag -o shaders/shader.frag.spv +glslc -fshader-stage=vert shaders/shader.vert.glsl -o shaders/shader.vert.spv +glslc -fshader-stage=frag shaders/shader.frag.glsl -o shaders/shader.frag.spv diff --git a/shaders/shader.frag b/shaders/shader.frag deleted file mode 100644 index 43674b2..0000000 --- a/shaders/shader.frag +++ /dev/null @@ -1,7 +0,0 @@ -#version 450 - -layout (location = 0) out vec4 outColor; - -void main() { - outColor = vec4(0.0, 1.0, 0.0, 1.0); -} diff --git a/shaders/shader.frag.glsl b/shaders/shader.frag.glsl new file mode 100644 index 0000000..571c04e --- /dev/null +++ b/shaders/shader.frag.glsl @@ -0,0 +1,10 @@ +#version 450 + +layout(location = 0) in vec3 fragColor; + +layout(location = 0) out vec4 outColor; + +void main() { + outColor = vec4(fragColor, 1.0); +} + diff --git a/shaders/shader.vert b/shaders/shader.vert deleted file mode 100644 index 0fb555d..0000000 --- a/shaders/shader.vert +++ /dev/null @@ -1,11 +0,0 @@ -#version 450 - -vec2 positions[3] = vec2[] ( - vec2(0.0,-0.5), - vec2(0.5,0.5), - vec2(-0.5,0.5) -); - -void main() { - gl_Position = vec4(positions[gl_VertexIndex], 0.0, 1.0); -} diff --git a/shaders/shader.vert.glsl b/shaders/shader.vert.glsl new file mode 100644 index 0000000..f5b2f8d --- /dev/null +++ b/shaders/shader.vert.glsl @@ -0,0 +1,20 @@ +#version 450 + +layout(location = 0) out vec3 fragColor; + +vec2 positions[3] = vec2[]( + vec2(0.0, -0.5), + vec2(0.5, 0.5), + vec2(-0.5, 0.5) +); + +vec3 colors[3] = vec3[]( + vec3(1.0, 0.0, 0.0), + vec3(0.0, 1.0, 0.0), + vec3(0.0, 0.0, 1.0) +); + +void main() { + gl_Position = vec4(positions[gl_VertexIndex], 0.0, 1.0); + fragColor = colors[gl_VertexIndex]; +} diff --git a/src/main.c b/src/main.c index 64e6564..59145d9 100644 --- a/src/main.c +++ b/src/main.c @@ -697,6 +697,22 @@ void createGraphicsPipeline(Application *app) { VkPipelineShaderStageCreateInfo shaderStages[] = {vertShaderStageInfo, fragShaderStageInfo}; + size_t dynamicStatesCount = 2; + VkDynamicState dynamicStates[] = {VK_DYNAMIC_STATE_VIEWPORT, + VK_DYNAMIC_STATE_SCISSOR}; + VkPipelineDynamicStateCreateInfo dynamicState = {0}; + dynamicState.sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO; + dynamicState.dynamicStateCount = dynamicStatesCount; + dynamicState.pDynamicStates = dynamicStates; + + VkPipelineVertexInputStateCreateInfo vertexInputInfo = {0}; + vertexInputInfo.sType = + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO; + vertexInputInfo.vertexBindingDescriptionCount = 0; + vertexInputInfo.pVertexBindingDescriptions = NULL; // Optional + vertexInputInfo.vertexAttributeDescriptionCount = 0; + vertexInputInfo.pVertexAttributeDescriptions = NULL; // Optional + vkDestroyShaderModule(app->device, fragShaderModule, NULL); vkDestroyShaderModule(app->device, vertShaderModule, NULL); }