Mercurial > games > semicongine
comparison src/zamikongine/descriptor.nim @ 33:94c38e4b5782
did: refactoring, move more from make to nimscript
| author | Sam <sam@basx.dev> |
|---|---|
| date | Sun, 15 Jan 2023 23:23:54 +0700 |
| parents | 9edca5dc4e93 |
| children |
comparison
equal
deleted
inserted
replaced
| 32:9edca5dc4e93 | 33:94c38e4b5782 |
|---|---|
| 31 bindingCount: 1, | 31 bindingCount: 1, |
| 32 pBindings: addr(layoutbinding) | 32 pBindings: addr(layoutbinding) |
| 33 ) | 33 ) |
| 34 checkVkResult device.vkCreateDescriptorSetLayout(addr(layoutInfo), nil, addr(result)) | 34 checkVkResult device.vkCreateDescriptorSetLayout(addr(layoutInfo), nil, addr(result)) |
| 35 | 35 |
| 36 proc createUniformBuffers*[nBuffers: static int, T](device: VkDevice, physicalDevice: VkPhysicalDevice): array[nBuffers, Buffer] = | 36 proc createUniformBuffers*[nBuffers: static int, Uniforms](device: VkDevice, physicalDevice: VkPhysicalDevice): array[nBuffers, Buffer] = |
| 37 let size = sizeof(T) | 37 let size = sizeof(Uniforms) |
| 38 for i in 0 ..< nBuffers: | 38 for i in 0 ..< nBuffers: |
| 39 var buffer = InitBuffer( | 39 var buffer = InitBuffer( |
| 40 device, | 40 device, |
| 41 physicalDevice, | 41 physicalDevice, |
| 42 uint64(size), | 42 uint64(size), |
| 49 template getDescriptorType*(v: Descriptor): auto = get(genericParams(typeof(v)), 0) | 49 template getDescriptorType*(v: Descriptor): auto = get(genericParams(typeof(v)), 0) |
| 50 | 50 |
| 51 func generateGLSLUniformDeclarations*[Uniforms](binding: int = 0): string {.compileTime.} = | 51 func generateGLSLUniformDeclarations*[Uniforms](binding: int = 0): string {.compileTime.} = |
| 52 var stmtList: seq[string] | 52 var stmtList: seq[string] |
| 53 | 53 |
| 54 let uniformTypeName = name(Uniforms).toUpper() | 54 when not (Uniforms is void): |
| 55 let uniformInstanceName = name(Uniforms).toLower() | 55 let uniformTypeName = name(Uniforms).toUpper() |
| 56 stmtList.add(&"layout(binding = {binding}) uniform {uniformTypeName} {{") | 56 let uniformInstanceName = name(Uniforms).toLower() |
| 57 for fieldname, value in Uniforms().fieldPairs: | 57 stmtList.add(&"layout(binding = {binding}) uniform {uniformTypeName} {{") |
| 58 when typeof(value) is Descriptor: | 58 for fieldname, value in Uniforms().fieldPairs: |
| 59 let glsltype = getGLSLType[getDescriptorType(value)]() | 59 when typeof(value) is Descriptor: |
| 60 let n = fieldname | 60 let glsltype = getGLSLType[getDescriptorType(value)]() |
| 61 stmtList.add(&" {glsltype} {n};") | 61 let n = fieldname |
| 62 stmtList.add(&"}} {uniformInstanceName};") | 62 stmtList.add(&" {glsltype} {n};") |
| 63 stmtList.add(&"}} {uniformInstanceName};") | |
| 63 | 64 |
| 64 return stmtList.join("\n") | 65 return stmtList.join("\n") |
