Mercurial > games > semicongine
changeset 1160:836dc1eda5e3 compiletime-tests
did: some stuff
author | sam <sam@basx.dev> |
---|---|
date | Wed, 19 Jun 2024 09:17:24 +0700 |
parents | e7cbb13999e4 |
children | dbca0528c714 |
files | static_utils.nim test2.nim |
diffstat | 2 files changed, 48 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/static_utils.nim Mon Jun 17 22:21:59 2024 +0700 +++ b/static_utils.nim Wed Jun 19 09:17:24 2024 +0700 @@ -106,18 +106,18 @@ else: return 1 - type - Renderable[IndexType: static VkIndexType] = object + Renderable = object buffers: seq[VkBuffer] offsets: seq[VkDeviceSize] instanceCount: uint32 - when IndexType == VK_INDEX_TYPE_NONE_KHR: - vertexCount: uint32 - else: - indexBuffer: VkBuffer - indexCount: uint32 - indexBufferOffset: VkDeviceSize + case indexType: VkIndexType + of VK_INDEX_TYPE_NONE_KHR: + vertexCount: uint32 + of VK_INDEX_TYPE_UINT8_EXT, VK_INDEX_TYPE_UINT16, VK_INDEX_TYPE_UINT32: + indexBuffer: VkBuffer + indexCount: uint32 + indexBufferOffset: VkDeviceSize Pipeline = object pipeline: VkPipeline layout: VkPipelineLayout @@ -271,7 +271,7 @@ ) -proc Render*[IndexType: static VkIndexType](renderable: Renderable[IndexType], commandBuffer: VkCommandBuffer, pipeline: Pipeline, frameInFlight: int) = +proc Render*(renderable: Renderable, commandBuffer: VkCommandBuffer, pipeline: Pipeline, frameInFlight: int) = assert 0 <= frameInFlight and frameInFlight < 2 commandBuffer.vkCmdBindPipeline(VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline.pipeline) commandBuffer.vkCmdBindDescriptorSets( @@ -289,7 +289,7 @@ pBuffers = renderable.buffers.ToCPointer(), pOffsets = renderable.offsets.ToCPointer() ) - when IndexType != VK_INDEX_TYPE_NONE_KHR: + if renderable.indexType != VK_INDEX_TYPE_NONE_KHR: commandBuffer.vkCmdBindIndexBuffer( renderable.indexBuffer, renderable.indexBufferOffset,
--- a/test2.nim Mon Jun 17 22:21:59 2024 +0700 +++ b/test2.nim Wed Jun 19 09:17:24 2024 +0700 @@ -1,10 +1,41 @@ +import std/os + +import semicongine/platform/window +import semicongine/core/vulkanapi +import semicongine/vulkan/instance +import semicongine/vulkan/device +import semicongine/vulkan/physicaldevice +# import ./vulkan/shader + +import semicongine/core/vector +import semicongine/core/matrix + type - ShaderInputA = object - positions {.VertexAttribute.}: seq[Vec3f] - colors {.VertexAttribute.}: seq[Vec3f] - transforms {.InstanceAttribute.}: seq[Vec3f] - other: bool + MeshA = object + positions: seq[Vec3f] + colors: seq[Vec3f] + transparency: float32 + ArrayData = object + transforms: seq[Vec3f] + Enemy = object - shaderData: ShaderInputA + mesh: MeshA + enemies: ArrayData + +let e = Enemy() +echo e -proc initEnemy() +let w = CreateWindow("test2") +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") +let i = w.CreateInstance( + vulkanVersion = VK_MAKE_API_VERSION(0, 1, 3, 0), + instanceExtensions = @[], + layers = @["VK_LAYER_KHRONOS_validation"], +) + +let selectedPhysicalDevice = i.GetPhysicalDevices().FilterBestGraphics() +let d = i.CreateDevice( + selectedPhysicalDevice, + enabledExtensions = @[], + selectedPhysicalDevice.FilterForGraphicsPresentationQueues() +)