comparison semiconginev2/rendering.nim @ 1226:c8e3037aca66 compiletime-tests

add: contrib stuff
author sam <sam@basx.dev>
date Wed, 17 Jul 2024 23:41:51 +0700
parents a3fa15c25026
children 4e465583ea32
comparison
equal deleted inserted replaced
1225:27cd1c21290e 1226:c8e3037aca66
66 commandBuffers: array[INFLIGHTFRAMES.int, VkCommandBuffer] 66 commandBuffers: array[INFLIGHTFRAMES.int, VkCommandBuffer]
67 oldSwapchain: ref Swapchain 67 oldSwapchain: ref Swapchain
68 oldSwapchainCounter: int # swaps until old swapchain will be destroyed 68 oldSwapchainCounter: int # swaps until old swapchain will be destroyed
69 69
70 var vulkan*: VulkanGlobals 70 var vulkan*: VulkanGlobals
71 var fullscreen: bool
71 72
72 func currentFiF*(swapchain: Swapchain): int = swapchain.currentFiF 73 func currentFiF*(swapchain: Swapchain): int = swapchain.currentFiF
73 74
74 type 75 type
75 # type aliases 76 # type aliases
309 proc DestroyVulkan*() = 310 proc DestroyVulkan*() =
310 vkDestroyDevice(vulkan.device, nil) 311 vkDestroyDevice(vulkan.device, nil)
311 vkDestroySurfaceKHR(vulkan.instance, vulkan.surface, nil) 312 vkDestroySurfaceKHR(vulkan.instance, vulkan.surface, nil)
312 vkDestroyDebugUtilsMessengerEXT(vulkan.instance, vulkan.debugMessenger, nil) 313 vkDestroyDebugUtilsMessengerEXT(vulkan.instance, vulkan.debugMessenger, nil)
313 vkDestroyInstance(vulkan.instance, nil) 314 vkDestroyInstance(vulkan.instance, nil)
315
316 proc ShowSystemCursor*() = vulkan.window.ShowSystemCursor()
317 proc HideSystemCursor*() = vulkan.window.HideSystemCursor()
318 proc Fullscreen*(): bool = fullscreen
319 proc `Fullscreen=`*(enable: bool) =
320 if enable != fullscreen:
321 fullscreen = enable
322 vulkan.window.Fullscreen(fullscreen)
323
324 func GetAspectRatio*(swapchain: Swapchain): float32 = swapchain.width.float32 / swapchain.height.float32
325
326 proc MaxFramebufferSampleCount*(maxSamples = VK_SAMPLE_COUNT_8_BIT): VkSampleCountFlagBits =
327 let limits = svkGetPhysicalDeviceProperties().limits
328 let available = VkSampleCountFlags(
329 limits.framebufferColorSampleCounts.uint32 and limits.framebufferDepthSampleCounts.uint32
330 ).toEnums
331 return min(max(available), maxSamples)
332
333
334 proc `[]`*(texture: Texture, x, y: uint32): auto =
335 assert x < texture.width, &"{x} < {texture.width} is not true"
336 assert y < texture.height, &"{y} < {texture.height} is not true"
337
338 texture[].imagedata[y * texture.width + x]
339
340 proc `[]=`*[T](texture: var Texture[T], x, y: uint32, value: T) =
341 assert x < texture.width
342 assert y < texture.height
343
344 texture[].imagedata[y * texture.width + x] = value