Mercurial > games > semicongine
comparison semiconginev2/rendering/renderer.nim @ 1240:42eeb59f3a43
add: more tests, line and point rendering
author | sam <sam@basx.dev> |
---|---|
date | Mon, 22 Jul 2024 12:42:35 +0700 |
parents | 69489a678141 |
children | c15770761865 |
comparison
equal
deleted
inserted
replaced
1239:69489a678141 | 1240:42eeb59f3a43 |
---|---|
302 | 302 |
303 proc AllocateGPUData( | 303 proc AllocateGPUData( |
304 renderdata: var RenderData, | 304 renderdata: var RenderData, |
305 bufferType: BufferType, | 305 bufferType: BufferType, |
306 size: uint64, | 306 size: uint64, |
307 needsFrameInFlight = -1 | |
308 ): (Buffer, uint64) = | 307 ): (Buffer, uint64) = |
309 | 308 |
310 # find buffer that has space | 309 # find buffer that has space |
311 var selectedBufferI = -1 | 310 var selectedBufferI = -1 |
312 | 311 |
313 for i in 0 ..< renderData.buffers[bufferType].len: | 312 for i in 0 ..< renderData.buffers[bufferType].len: |
314 let buffer = renderData.buffers[bufferType][i] | 313 let buffer = renderData.buffers[bufferType][i] |
315 if needsFrameInFlight == -1 or buffer.useForFrameInFlight == needsFrameInFlight: | 314 if buffer.size - alignedTo(buffer.offsetNextFree, BUFFER_ALIGNMENT) >= size: |
316 if buffer.size - alignedTo(buffer.offsetNextFree, BUFFER_ALIGNMENT) >= size: | 315 selectedBufferI = i |
317 selectedBufferI = i | |
318 | 316 |
319 # otherwise create new buffer | 317 # otherwise create new buffer |
320 if selectedBufferI < 0: | 318 if selectedBufferI < 0: |
321 selectedBufferI = renderdata.buffers[bufferType].len | 319 selectedBufferI = renderdata.buffers[bufferType].len |
322 renderdata.buffers[bufferType].add renderdata.AllocateNewBuffer( | 320 renderdata.buffers[bufferType].add renderdata.AllocateNewBuffer( |
323 size = max(size, BUFFER_ALLOCATION_SIZE), | 321 size = max(size, BUFFER_ALLOCATION_SIZE), |
324 bufferType = bufferType, | 322 bufferType = bufferType, |
325 ) | 323 ) |
326 if needsFrameInFlight >= 0: | |
327 renderdata.buffers[bufferType][selectedBufferI].useForFrameInFlight = needsFrameInFlight | |
328 | 324 |
329 # assigne value | 325 # assigne value |
330 let selectedBuffer = renderdata.buffers[bufferType][selectedBufferI] | 326 let selectedBuffer = renderdata.buffers[bufferType][selectedBufferI] |
331 renderdata.buffers[bufferType][selectedBufferI].offsetNextFree = alignedTo( | 327 renderdata.buffers[bufferType][selectedBufferI].offsetNextFree = alignedTo( |
332 selectedBuffer.offsetNextFree, | 328 selectedBuffer.offsetNextFree, |