Mercurial > games > semicongine
comparison semiconginev2/rendering.nim @ 1229:5dcb503ef0c0
did: refactor renderpass a bit, enable depth buffering and msaa on offscreen-rendering
author | sam <sam@basx.dev> |
---|---|
date | Thu, 18 Jul 2024 21:32:41 +0700 |
parents | 4e465583ea32 |
children | 70f6c1cfe005 |
comparison
equal
deleted
inserted
replaced
1228:4e465583ea32 | 1229:5dcb503ef0c0 |
---|---|
10 const INFLIGHTFRAMES* = 2'u32 | 10 const INFLIGHTFRAMES* = 2'u32 |
11 const BUFFER_ALIGNMENT = 64'u64 # align offsets inside buffers along this alignment | 11 const BUFFER_ALIGNMENT = 64'u64 # align offsets inside buffers along this alignment |
12 const MEMORY_BLOCK_ALLOCATION_SIZE = 100_000_000'u64 # ca. 100mb per block, seems reasonable | 12 const MEMORY_BLOCK_ALLOCATION_SIZE = 100_000_000'u64 # ca. 100mb per block, seems reasonable |
13 const BUFFER_ALLOCATION_SIZE = 9_000_000'u64 # ca. 9mb per block, seems reasonable, can put 10 buffers into one memory block | 13 const BUFFER_ALLOCATION_SIZE = 9_000_000'u64 # ca. 9mb per block, seems reasonable, can put 10 buffers into one memory block |
14 const MAX_DESCRIPTORSETS = 4 | 14 const MAX_DESCRIPTORSETS = 4 |
15 const SURFACE_FORMAT* = VK_FORMAT_B8G8R8A8_SRGB | |
16 const DEPTH_FORMAT* = VK_FORMAT_D32_SFLOAT | |
15 | 17 |
16 # custom pragmas to classify shader attributes | 18 # custom pragmas to classify shader attributes |
17 template VertexAttribute* {.pragma.} | 19 template VertexAttribute* {.pragma.} |
18 template InstanceAttribute* {.pragma.} | 20 template InstanceAttribute* {.pragma.} |
19 template Pass* {.pragma.} | 21 template Pass* {.pragma.} |
40 graphicsQueueFamily*: uint32 | 42 graphicsQueueFamily*: uint32 |
41 graphicsQueue*: VkQueue | 43 graphicsQueue*: VkQueue |
42 debugMessenger: VkDebugUtilsMessengerEXT | 44 debugMessenger: VkDebugUtilsMessengerEXT |
43 # unclear as of yet | 45 # unclear as of yet |
44 anisotropy*: float32 = 0 # needs to be enable during device creation | 46 anisotropy*: float32 = 0 # needs to be enable during device creation |
45 Swapchain* = object | 47 Renderpass* = ref object |
48 vk*: VkRenderPass | |
49 samples*: VkSampleCountFlagBits | |
50 depthBuffer*: bool | |
51 Swapchain* = ref object | |
46 # parameters to InitSwapchain, required for swapchain recreation | 52 # parameters to InitSwapchain, required for swapchain recreation |
47 renderPass: VkRenderPass | 53 renderPass*: RenderPass |
48 vSync: bool | 54 vSync: bool |
49 samples*: VkSampleCountFlagBits | |
50 # populated through InitSwapchain proc | 55 # populated through InitSwapchain proc |
51 vk: VkSwapchainKHR | 56 vk: VkSwapchainKHR |
52 width*: uint32 | 57 width*: uint32 |
53 height*: uint32 | 58 height*: uint32 |
54 msaaImage: VkImage | |
55 msaaMemory: VkDeviceMemory | |
56 msaaImageView: VkImageView | |
57 framebuffers: seq[VkFramebuffer] | 59 framebuffers: seq[VkFramebuffer] |
58 framebufferViews: seq[VkImageView] | 60 framebufferViews: seq[VkImageView] |
59 currentFramebufferIndex: uint32 | 61 currentFramebufferIndex: uint32 |
60 commandBufferPool: VkCommandPool | 62 commandBufferPool: VkCommandPool |
63 # depth buffer stuff, if enabled | |
64 depthImage: VkImage | |
65 depthImageView*: VkImageView | |
66 depthMemory: VkDeviceMemory | |
67 # MSAA stuff, if enabled | |
68 msaaImage: VkImage | |
69 msaaImageView*: VkImageView | |
70 msaaMemory: VkDeviceMemory | |
61 # frame-in-flight handling | 71 # frame-in-flight handling |
62 currentFiF: range[0 .. (INFLIGHTFRAMES - 1).int] | 72 currentFiF: range[0 .. (INFLIGHTFRAMES - 1).int] |
63 queueFinishedFence*: array[INFLIGHTFRAMES.int, VkFence] | 73 queueFinishedFence*: array[INFLIGHTFRAMES.int, VkFence] |
64 imageAvailableSemaphore*: array[INFLIGHTFRAMES.int, VkSemaphore] | 74 imageAvailableSemaphore*: array[INFLIGHTFRAMES.int, VkSemaphore] |
65 renderFinishedSemaphore*: array[INFLIGHTFRAMES.int, VkSemaphore] | 75 renderFinishedSemaphore*: array[INFLIGHTFRAMES.int, VkSemaphore] |
66 commandBuffers: array[INFLIGHTFRAMES.int, VkCommandBuffer] | 76 commandBuffers: array[INFLIGHTFRAMES.int, VkCommandBuffer] |
67 oldSwapchain: ref Swapchain | 77 oldSwapchain: Swapchain |
68 oldSwapchainCounter: int # swaps until old swapchain will be destroyed | 78 oldSwapchainCounter: int # swaps until old swapchain will be destroyed |
69 | 79 |
70 var vulkan*: VulkanGlobals | 80 var vulkan*: VulkanGlobals |
71 var fullscreen: bool | 81 var fullscreen: bool |
72 | 82 |
113 data*: seq[T] | 123 data*: seq[T] |
114 vk*: VkImage | 124 vk*: VkImage |
115 imageview*: VkImageView | 125 imageview*: VkImageView |
116 sampler*: VkSampler | 126 sampler*: VkSampler |
117 isRenderTarget*: bool = false | 127 isRenderTarget*: bool = false |
128 samples*: VkSampleCountFlagBits = VK_SAMPLE_COUNT_1_BIT | |
118 GPUArray*[T: SupportedGPUType, TBuffer: static BufferType] = object | 129 GPUArray*[T: SupportedGPUType, TBuffer: static BufferType] = object |
119 data*: seq[T] | 130 data*: seq[T] |
120 buffer*: Buffer | 131 buffer*: Buffer |
121 offset*: uint64 | 132 offset*: uint64 |
122 GPUValue*[T: object, TBuffer: static BufferType] = object | 133 GPUValue*[T: object, TBuffer: static BufferType] = object |