Commit Graph

937 Commits

Author SHA1 Message Date
183f7057e2 Added KRPipeline::StageInfo to hold cached SPV reflection information used for dynamic descriptor set and push constant binding. 2022-09-15 20:10:25 -07:00
327167c9b1 Expanded KRSurface::m_imageAvailableSemaphores and m_renderFinishedSemaphores to have one semaphore per frame in flight. (Missed files in prior commit) 2022-09-15 19:20:10 -07:00
cc4efe34e1 kMaxGraphicsCommandBuffers is now initialized to KRENGINE_MAX_FRAMES_IN_FLIGHT rather than using a magic number. 2022-09-15 19:18:54 -07:00
4d0158c0ec Added KRSurface::m_inFlightFences.
Now properly handling multiple frames in flight and waiting on fences when the CPU catches up.
2022-09-15 00:26:23 -07:00
478669ed81 Expanded KRSurface::m_imageAvailableSemaphores and m_renderFinishedSemaphores to have one semaphore per frame in flight. 2022-09-14 23:59:52 -07:00
5b70ce077d Add KRENGINE_MAX_FRAMES_IN_FLIGHT constant 2022-09-14 23:41:03 -07:00
9b46917171 Added requirement for Vulkan SPV_EXT_descriptor_indexing extension. 2022-09-13 18:18:37 -07:00
5ffc3d9b9b Refactor - DescriptorSet and DescriptorManager are now UniformBuffer and UniformBufferManager. 2022-09-13 18:18:25 -07:00
175c4e2008 Add KRDescriptorManager and KRDescriptorSet classes with stub functions. 2022-09-13 17:31:41 -07:00
5ed6b8eccd Push constants are now supported for all stages. 2022-09-09 00:38:46 -07:00
aeaed68efb Moved ShaderStage to KRShader and expanded to include all stages.
Added mapping functions, getShaderStageFromExtension and getShaderStageFlagBitsFromShaderStage.
KRShader::m_stage is now typed as ShaderStage.
2022-09-09 00:36:22 -07:00
f20f7f73d6 Centralized shader file sub-extension to shader stage mapping to KRShader. 2022-09-08 23:58:24 -07:00
e695bca3f9 Refactoring to rename uniform related functions and members to reflect that they are actually push constants after the Vulkan refactoring. 2022-09-07 23:48:46 -07:00
10f9c17cf1 Now initializing VkDescriptorSetLayout for each pipeline using SPV reflection. 2022-09-07 22:33:07 -07:00
0d848bd53b Now using more VkSamplerCreateInfo for hash generation. 2022-09-07 22:32:37 -07:00
414ec8ca81 Removed no longer relevant comment. 2022-08-30 00:38:10 -07:00
8594c7d4b1 Implemented KRSampler::destroy 2022-08-30 00:30:22 -07:00
6682cbdedd Implemented KRSampler::createSamplers 2022-08-30 00:18:47 -07:00
0e5fee2d80 Implemented KRSampler::getSampler 2022-08-29 23:59:02 -07:00
e318a5b4aa Added KRSamplerManager::DEFAULT_CLAMPED_SAMPLER and DEFAULT_WRAPPING_SAMPLER
Added KRSamplerManager::init
2022-08-25 00:00:55 -07:00
191167f9d3 Added KRSamplerManager::destroy() 2022-08-19 20:10:03 -07:00
9f245a9765 Implemented KRSamplerManager 2022-08-19 20:02:11 -07:00
5c75dc754a Fix build issue, removed unneeded stub function. 2022-08-18 19:05:24 -07:00
42e8365751 Added KRSampler and KRSamplerManager classes. Marked stub functions to be implemented. 2022-08-18 17:57:11 -07:00
cef2372ce8 Modernization - KRMesh::Submesh::vbo_data_blocks is now a vector<shared_ptr>. 2022-08-17 01:56:01 -07:00
2391ed9785 Modernization - KRMesh::m_submeshes now contains KRMesh::Submesh objects rather than pointers. Insertion done with emplace. 2022-08-16 20:08:30 -07:00
2085908017 Added KRShaderManager::Includer
Now able to include shaders from other shaders with GL_GOOGLE_include_directive.
Added vulkan_test_include.glsl and included it from vulkan_test.vert.
2022-08-15 19:48:59 -07:00
7433d54c16 Auto format C++ source 2022-08-08 01:07:26 -07:00
c5a640e22d Updated editorconfig with C++ code style 2022-08-08 00:21:57 -07:00
d3abb3ef0d Updated hydra library 2022-08-08 00:21:31 -07:00
f5855aeaec Corrected normals for KRMeshSphere so the sphere will have a smooth surface.
Disabled KRMesh::optimizeIndexes as it is crashing with certain meshes, such as those generated by KRMeshSphere
2022-08-08 00:09:02 -07:00
9b31914371 Added VS editorconfig for C++ formatting style 2022-08-07 23:56:20 -07:00
732560f732 Separate push constants can now be sent to vertex and fragment stages. 2022-08-06 00:14:21 -07:00
29d928ca29 Eliminated static_cast from KRPipeline::hasUniform
KRPipeline::setUniform now updates push constants for all stages
2022-08-05 23:44:46 -07:00
347a258c99 Fixed bug that caused indexed strip meshes to be changed to indexed triangle meshes when optimized. 2022-08-03 22:08:32 -07:00
5f32d4dede KRENGINE_ATTRIB_..._SHORT types are now mapped to equivalent Vulkan ..._SNORM types. 2022-08-02 02:15:46 -07:00
b714f7b52a Reduced verbosity of KRPipeline::Uniform 2022-08-02 01:31:13 -07:00
06f4056887 Added KRPipeline::Uniform enum class to replace existing untyped enum. 2022-08-02 01:04:00 -07:00
2dab7a2b48 Moved many KRPipeline public members to private.
Added KRPipeline::hasUniform to avoid accessing private members directly in KRMaterial.
Added KRPipeline::setUniform overload, for setting an array of Matrix4's.
2022-08-02 00:43:36 -07:00
74ed52fefd Refactoring push KRPipeline::m_pushConstantOffset and KRPipeline::m_pushConstantSize in preparation to support push constants for multiple shader stages 2022-08-01 23:44:46 -07:00
f52ddc007f Changed Vulkan test code in KRCamera::renderPost, preparing for testing the debug font shader.
Fixed bug causing KRMeshManager::KRVBOData::bind to crash when there is no index data.
2022-07-29 01:12:23 -07:00
fb6e197f2b Eliminated KRCamera::m_debug_text_indices 2022-07-29 01:01:17 -07:00
40024ed9d8 Added KRMeshManager::KRENGINE_VBO_DATA_RANDOM_PARTICLES and KRMeshManager::KRENGINE_VBO_DATA_VOLUMETRIC_LIGHTING.
The random particle and volumetric lighting plane geometry is now static, computed on initialization, and no longer lazily initialized.
Removed KRMeshManager::bindVBO function overload that accepted KRDataBlock's directly for index and vertex data.  This was creating KRVBOData objects with KRVBOData::IMMEDIATE that were no longer being owned or de-allocated by KRMeshManager.
2022-07-29 00:51:01 -07:00
5f7912524f vbo_type::TEMPORARY changed to vbo_type::IMMEDIATE.
KRMeshManager no longer allocates, owns, and deletes IMMEDIATE/TEMPORARY data.

Added KRCamera::m_debug_text_vertices, and KRCamera::m_debug_text_vbo_data in preparation for further work on immediately loaded mesh data.
2022-07-29 00:10:13 -07:00
c02ad5c3e7 KRMeshManager::bindVBO now swaps handles immediately for anything not loaded on the streamer thread. 2022-07-28 23:40:09 -07:00
33f5292c5e Added commandBuffer argument to KRDevice::graphicsUpload. 2022-07-27 23:22:51 -07:00
d19f340d32 Temporary vertex data is now uploaded synchronously in the presentation thread with the graphics command buffer. 2022-07-25 00:43:11 -07:00
6551e6d8a6 Added KRTexture::TextureHandle::destroy to eliminate duplicate code in KRTexture::destroyHandles and KRTexture::destroyNewHandles.
Now creating an image view for each KRTexture for full access.
2022-07-24 23:57:01 -07:00
9eb9cfe7c5 Added KRDevice::graphicsUpload 2022-07-22 18:31:11 -07:00
cfd8e35f29 Added KRDevice::setDebugLabel and helper function overloads. Now labeling more Vulkan objects. 2022-07-21 00:19:51 -07:00