Mercurial > games > semicongine
comparison src/zamikongine/engine.nim @ 22:b45a5d338cd0
did: improve alotof_triangles example, remove glslang lib, use only binary, easier cross-compilation
| author | Sam <sam@basx.dev> |
|---|---|
| date | Wed, 11 Jan 2023 00:43:17 +0700 |
| parents | beb86492b178 |
| children | 71bbe11d8de8 |
comparison
equal
deleted
inserted
replaced
| 21:316923e9247c | 22:b45a5d338cd0 |
|---|---|
| 12 import ./shader | 12 import ./shader |
| 13 import ./vertex | 13 import ./vertex |
| 14 import ./buffer | 14 import ./buffer |
| 15 import ./thing | 15 import ./thing |
| 16 import ./mesh | 16 import ./mesh |
| 17 | |
| 18 import ./glslang/glslang | |
| 19 | 17 |
| 20 const MAX_FRAMES_IN_FLIGHT = 2 | 18 const MAX_FRAMES_IN_FLIGHT = 2 |
| 21 const DEBUG_LOG = not defined(release) | 19 const DEBUG_LOG = not defined(release) |
| 22 | 20 |
| 23 var logger = newConsoleLogger() | 21 var logger = newConsoleLogger() |
| 453 # setup vulkan functions | 451 # setup vulkan functions |
| 454 vkLoad1_0() | 452 vkLoad1_0() |
| 455 vkLoad1_1() | 453 vkLoad1_1() |
| 456 vkLoad1_2() | 454 vkLoad1_2() |
| 457 | 455 |
| 458 checkGlslangResult glslang_initialize_process() | |
| 459 | |
| 460 # create vulkan instance | 456 # create vulkan instance |
| 461 result.vulkan.instance = createVulkanInstance(VULKAN_VERSION) | 457 result.vulkan.instance = createVulkanInstance(VULKAN_VERSION) |
| 462 when DEBUG_LOG: | 458 when DEBUG_LOG: |
| 463 result.vulkan.debugMessenger = result.vulkan.instance.setupDebugLog() | 459 result.vulkan.debugMessenger = result.vulkan.instance.setupDebugLog() |
| 464 result.vulkan.surface = result.vulkan.instance.createVulkanSurface(result.window) | 460 result.vulkan.surface = result.vulkan.instance.createVulkanSurface(result.window) |
| 503 fragmentShader, | 499 fragmentShader, |
| 504 ) | 500 ) |
| 505 var allmeshes: seq[Mesh[T]] | 501 var allmeshes: seq[Mesh[T]] |
| 506 for mesh in partsOfType[ref Mesh[T]](engine.currentscenedata): | 502 for mesh in partsOfType[ref Mesh[T]](engine.currentscenedata): |
| 507 allmeshes.add(mesh[]) | 503 allmeshes.add(mesh[]) |
| 508 var ubermesh = createUberMesh(allmeshes) | 504 if allmeshes.len > 0: |
| 509 engine.vulkan.vertexBuffers.add createVertexBuffers(ubermesh, engine.vulkan.device.device, engine.vulkan.device.physicalDevice.device, engine.vulkan.commandPool, engine.vulkan.device.graphicsQueue) | 505 var ubermesh = createUberMesh(allmeshes) |
| 506 engine.vulkan.vertexBuffers.add createVertexBuffers(ubermesh, engine.vulkan.device.device, engine.vulkan.device.physicalDevice.device, engine.vulkan.commandPool, engine.vulkan.device.graphicsQueue) | |
| 510 | 507 |
| 511 var allindexedmeshes: seq[IndexedMesh[T, U]] | 508 var allindexedmeshes: seq[IndexedMesh[T, U]] |
| 512 for mesh in partsOfType[ref IndexedMesh[T, U]](engine.currentscenedata): | 509 for mesh in partsOfType[ref IndexedMesh[T, U]](engine.currentscenedata): |
| 513 allindexedmeshes.add(mesh[]) | 510 allindexedmeshes.add(mesh[]) |
| 514 var indexedubermesh = createUberMesh(allindexedmeshes) | 511 if allindexedmeshes.len > 0: |
| 515 engine.vulkan.indexedVertexBuffers.add createIndexedVertexBuffers(indexedubermesh, engine.vulkan.device.device, engine.vulkan.device.physicalDevice.device, engine.vulkan.commandPool, engine.vulkan.device.graphicsQueue) | 512 var indexedubermesh = createUberMesh(allindexedmeshes) |
| 513 engine.vulkan.indexedVertexBuffers.add createIndexedVertexBuffers(indexedubermesh, engine.vulkan.device.device, engine.vulkan.device.physicalDevice.device, engine.vulkan.commandPool, engine.vulkan.device.graphicsQueue) | |
| 516 | 514 |
| 517 proc recordCommandBuffer(renderPass: VkRenderPass, pipeline: VkPipeline, commandBuffer: VkCommandBuffer, framebuffer: VkFramebuffer, frameDimension: VkExtent2D, engine: var Engine) = | 515 proc recordCommandBuffer(renderPass: VkRenderPass, pipeline: VkPipeline, commandBuffer: VkCommandBuffer, framebuffer: VkFramebuffer, frameDimension: VkExtent2D, engine: var Engine) = |
| 518 var | 516 var |
| 519 beginInfo = VkCommandBufferBeginInfo( | 517 beginInfo = VkCommandBufferBeginInfo( |
| 520 sType: VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, | 518 sType: VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, |
| 676 | 674 |
| 677 engine.vulkan.instance.vkDestroySurfaceKHR(engine.vulkan.surface, nil) | 675 engine.vulkan.instance.vkDestroySurfaceKHR(engine.vulkan.surface, nil) |
| 678 engine.vulkan.device.device.vkDestroyDevice(nil) | 676 engine.vulkan.device.device.vkDestroyDevice(nil) |
| 679 when DEBUG_LOG: | 677 when DEBUG_LOG: |
| 680 engine.vulkan.instance.vkDestroyDebugUtilsMessengerEXT(engine.vulkan.debugMessenger, nil) | 678 engine.vulkan.instance.vkDestroyDebugUtilsMessengerEXT(engine.vulkan.debugMessenger, nil) |
| 681 glslang_finalize_process() | |
| 682 engine.window.trash() | 679 engine.window.trash() |
| 683 engine.vulkan.instance.vkDestroyInstance(nil) | 680 engine.vulkan.instance.vkDestroyInstance(nil) |
