Mercurial > games > semicongine
comparison test1.nim @ 1198:96a094cd0c78 compiletime-tests
sync to notebook in bedroom
| author | sam <sam@basx.dev> |
|---|---|
| date | Sat, 13 Jul 2024 19:26:03 +0700 |
| parents | f6a0dc7ad052 |
| children | ba1af13233ee |
comparison
equal
deleted
inserted
replaced
| 1197:f6a0dc7ad052 | 1198:96a094cd0c78 |
|---|---|
| 39 uniforms: DescriptorSet[UniformsA, MaterialSet] | 39 uniforms: DescriptorSet[UniformsA, MaterialSet] |
| 40 # code | 40 # code |
| 41 vertexCode: string = "void main() {}" | 41 vertexCode: string = "void main() {}" |
| 42 fragmentCode: string = "void main() {}" | 42 fragmentCode: string = "void main() {}" |
| 43 | 43 |
| 44 putEnv("VK_LAYER_ENABLES", "VALIDATION_CHECK_ENABLE_VENDOR_SPECIFIC_AMD,VALIDATION_CHECK_ENABLE_VENDOR_SPECIFIC_NVIDIA,VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXTVK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT,VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT") | |
| 45 | |
| 46 let frameWidth = 100'u32 | 44 let frameWidth = 100'u32 |
| 47 let frameHeight = 100'u32 | 45 let frameHeight = 100'u32 |
| 48 | 46 |
| 49 var myMesh1 = MeshA( | 47 var myMesh1 = MeshA( |
| 50 position: GPUArray[Vec3f, VertexBuffer](data: @[NewVec3f(0, 0, ), NewVec3f(0, 0, ), NewVec3f(0, 0, )]), | 48 position: GPUArray[Vec3f, VertexBuffer](data: @[NewVec3f(0, 0, ), NewVec3f(0, 0, ), NewVec3f(0, 0, )]), |
| 74 settings: GPUValue[ShaderSettings, UniformBuffer](data: ShaderSettings(gamma: 1.0)) | 72 settings: GPUValue[ShaderSettings, UniformBuffer](data: ShaderSettings(gamma: 1.0)) |
| 75 ) | 73 ) |
| 76 ) | 74 ) |
| 77 | 75 |
| 78 let renderpass = CreatePresentationRenderPass() | 76 let renderpass = CreatePresentationRenderPass() |
| 79 var swapchainResult = InitSwapchain(renderpass) | 77 var swapchainResult = InitSwapchain(renderpass = renderpass) |
| 80 assert swapchainResult.isSome() | 78 assert swapchainResult.isSome() |
| 81 var swapchain = swapchainResult.get() | 79 var swapchain = swapchainResult.get() |
| 82 | 80 |
| 83 # shaders | 81 # shaders |
| 84 var pipeline1 = CreatePipeline[ShaderA](renderPass = renderpass) | 82 var pipeline1 = CreatePipeline[ShaderA](renderPass = renderpass) |
| 102 UpdateAllGPUBuffers(instances1) | 100 UpdateAllGPUBuffers(instances1) |
| 103 UpdateAllGPUBuffers(uniforms1) | 101 UpdateAllGPUBuffers(uniforms1) |
| 104 UpdateAllGPUBuffers(myGlobals) | 102 UpdateAllGPUBuffers(myGlobals) |
| 105 renderdata.FlushAllMemory() | 103 renderdata.FlushAllMemory() |
| 106 | 104 |
| 107 | |
| 108 # descriptors | 105 # descriptors |
| 109 echo "Writing descriptors" | 106 echo "Writing descriptors" |
| 110 InitDescriptorSet(renderdata, pipeline1.GetLayoutFor(GlobalSet), myGlobals) | 107 InitDescriptorSet(renderdata, pipeline1.GetLayoutFor(GlobalSet), myGlobals) |
| 111 InitDescriptorSet(renderdata, pipeline1.GetLayoutFor(MaterialSet), uniforms1) | 108 InitDescriptorSet(renderdata, pipeline1.GetLayoutFor(MaterialSet), uniforms1) |
| 112 | 109 |
| 113 | 110 |
| 114 | |
| 115 | |
| 116 | |
| 117 | |
| 118 # command buffer | |
| 119 var | |
| 120 commandBufferPool: VkCommandPool | |
| 121 createInfo = VkCommandPoolCreateInfo( | |
| 122 sType: VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO, | |
| 123 flags: toBits [VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT], | |
| 124 queueFamilyIndex: vulkan.graphicsQueueFamily, | |
| 125 ) | |
| 126 checkVkResult vkCreateCommandPool(vulkan.device, addr createInfo, nil, addr commandBufferPool) | |
| 127 var | |
| 128 cmdBuffers: array[INFLIGHTFRAMES.int, VkCommandBuffer] | |
| 129 allocInfo = VkCommandBufferAllocateInfo( | |
| 130 sType: VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO, | |
| 131 commandPool: commandBufferPool, | |
| 132 level: VK_COMMAND_BUFFER_LEVEL_PRIMARY, | |
| 133 commandBufferCount: INFLIGHTFRAMES, | |
| 134 ) | |
| 135 checkVkResult vkAllocateCommandBuffers(vulkan.device, addr allocInfo, cmdBuffers.ToCPointer) | |
| 136 | |
| 137 | |
| 138 | |
| 139 # start command buffer | 111 # start command buffer |
| 140 block: | 112 while true: |
| 141 let | 113 RecordRenderingCommands(swapchain, framebuffer, commandbuffer): |
| 142 currentFramebuffer = VkFramebuffer(0) # TODO | |
| 143 currentFrameInFlight = 1 | |
| 144 cmd = cmdBuffers[currentFrameInFlight] | |
| 145 beginInfo = VkCommandBufferBeginInfo( | |
| 146 sType: VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, | |
| 147 flags: VkCommandBufferUsageFlags(VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT), | |
| 148 ) | |
| 149 checkVkResult cmd.vkResetCommandBuffer(VkCommandBufferResetFlags(0)) | |
| 150 checkVkResult cmd.vkBeginCommandBuffer(addr(beginInfo)) | |
| 151 | |
| 152 # start renderpass | |
| 153 block: | |
| 154 var | 114 var |
| 155 clearColors = [VkClearValue(color: VkClearColorValue(float32: [0, 0, 0, 0]))] | 115 clearColors = [VkClearValue(color: VkClearColorValue(float32: [0, 0, 0, 0]))] |
| 156 renderPassInfo = VkRenderPassBeginInfo( | 116 renderPassInfo = VkRenderPassBeginInfo( |
| 157 sType: VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO, | 117 sType: VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO, |
| 158 renderPass: renderpass, | 118 renderPass: renderpass, |
| 159 framebuffer: currentFramebuffer, # TODO | 119 framebuffer: framebuffer, |
| 160 renderArea: VkRect2D( | 120 renderArea: VkRect2D( |
| 161 offset: VkOffset2D(x: 0, y: 0), | 121 offset: VkOffset2D(x: 0, y: 0), |
| 162 extent: VkExtent2D(width: frameWidth, height: frameHeight), | 122 extent: VkExtent2D(width: frameWidth, height: frameHeight), |
| 163 ), | 123 ), |
| 164 clearValueCount: uint32(clearColors.len), | 124 clearValueCount: uint32(clearColors.len), |
| 174 ) | 134 ) |
| 175 scissor = VkRect2D( | 135 scissor = VkRect2D( |
| 176 offset: VkOffset2D(x: 0, y: 0), | 136 offset: VkOffset2D(x: 0, y: 0), |
| 177 extent: VkExtent2D(width: frameWidth, height: frameHeight) | 137 extent: VkExtent2D(width: frameWidth, height: frameHeight) |
| 178 ) | 138 ) |
| 179 vkCmdBeginRenderPass(cmd, addr(renderPassInfo), VK_SUBPASS_CONTENTS_INLINE) | 139 vkCmdBeginRenderPass(commandbuffer, addr(renderPassInfo), VK_SUBPASS_CONTENTS_INLINE) |
| 180 | 140 |
| 181 # setup viewport | 141 # setup viewport |
| 182 vkCmdSetViewport(cmd, firstViewport = 0, viewportCount = 1, addr(viewport)) | 142 vkCmdSetViewport(commandbuffer, firstViewport = 0, viewportCount = 1, addr(viewport)) |
| 183 vkCmdSetScissor(cmd, firstScissor = 0, scissorCount = 1, addr(scissor)) | 143 vkCmdSetScissor(commandbuffer, firstScissor = 0, scissorCount = 1, addr(scissor)) |
| 184 | 144 |
| 185 # bind pipeline, will be loop | 145 # bind pipeline, will be loop |
| 186 # block: | 146 # block: |
| 187 # Bind(pipeline1, cmd, currentFrameInFlight = currentFrameInFlight) | 147 # Bind(pipeline1, commandbuffer, currentFrameInFlight = currentFrameInFlight) |
| 188 | 148 |
| 189 # render object, will be loop | 149 # render object, will be loop |
| 190 # block: | 150 # block: |
| 191 # Render(cmd, pipeline1, myGlobals, uniforms1, myMesh1, instances1) | 151 # Render(commandbuffer, pipeline1, myGlobals, uniforms1, myMesh1, instances1) |
| 192 | 152 |
| 193 vkCmdEndRenderPass(cmd) | 153 vkCmdEndRenderPass(commandbuffer) |
| 194 checkVkResult cmd.vkEndCommandBuffer() |
