Mercurial > games > semicongine
comparison src/zamikongine/descriptor.nim @ 30:917d99d5eb89
add: missing file
author | Sam <sam@basx.dev> |
---|---|
date | Sat, 14 Jan 2023 14:08:45 +0700 |
parents | |
children | 9edca5dc4e93 |
comparison
equal
deleted
inserted
replaced
29:da922b506570 | 30:917d99d5eb89 |
---|---|
1 import ./vulkan | |
2 import ./vulkan_helpers | |
3 import ./math/vector | |
4 import ./math/matrix | |
5 import ./buffer | |
6 | |
7 type | |
8 DescriptorType = SomeNumber|Vec|Mat | |
9 Descriptor*[T:DescriptorType] = object | |
10 value*: T | |
11 | |
12 proc createUniformDescriptorLayout*(device: VkDevice, shaderStage: VkShaderStageFlags, binding: uint32): VkDescriptorSetLayout = | |
13 var | |
14 layoutbinding = VkDescriptorSetLayoutBinding( | |
15 binding: binding, | |
16 descriptorType: VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, | |
17 descriptorCount: 1, | |
18 stageFlags: shaderStage, | |
19 pImmutableSamplers: nil, | |
20 ) | |
21 layoutInfo = VkDescriptorSetLayoutCreateInfo( | |
22 sType: VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO, | |
23 bindingCount: 1, | |
24 pBindings: addr(layoutbinding) | |
25 ) | |
26 checkVkResult device.vkCreateDescriptorSetLayout(addr(layoutInfo), nil, addr(result)) | |
27 | |
28 proc createUniformBuffers*[nBuffers: static int, T](device: VkDevice, physicalDevice: VkPhysicalDevice): array[nBuffers, Buffer] = | |
29 let size = sizeof(T) | |
30 for i in 0 ..< nBuffers: | |
31 var buffer = InitBuffer( | |
32 device, | |
33 physicalDevice, | |
34 uint64(size), | |
35 {UniformBuffer}, | |
36 {VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT, VK_MEMORY_PROPERTY_HOST_COHERENT_BIT}, | |
37 persistentMapping=true, | |
38 ) | |
39 result[i] = buffer |