Implemented image creation for textures in the texture bank
This commit is contained in:
parent
7acf25a770
commit
3d9abcf19c
|
@ -138,6 +138,7 @@ xcopy /s /r /y /q "$(SolutionDir)/Dependencies/dotnet/bin" "$(OutDir)"</Command
|
||||||
<ClInclude Include="src\ECS_Base\UnitTesting\SHECSUnitTest.h" />
|
<ClInclude Include="src\ECS_Base\UnitTesting\SHECSUnitTest.h" />
|
||||||
<ClInclude Include="src\ECS_Base\UnitTesting\SHTestComponents.h" />
|
<ClInclude Include="src\ECS_Base\UnitTesting\SHTestComponents.h" />
|
||||||
<ClInclude Include="src\ECS_Base\UnitTesting\SHTestSystems.h" />
|
<ClInclude Include="src\ECS_Base\UnitTesting\SHTestSystems.h" />
|
||||||
|
<ClInclude Include="src\Editor\SHEditor.h" />
|
||||||
<ClInclude Include="src\Engine\SHEngine.h" />
|
<ClInclude Include="src\Engine\SHEngine.h" />
|
||||||
<ClInclude Include="src\Events\SHEvent.h" />
|
<ClInclude Include="src\Events\SHEvent.h" />
|
||||||
<ClInclude Include="src\Events\SHEventDefines.h" />
|
<ClInclude Include="src\Events\SHEventDefines.h" />
|
||||||
|
@ -167,13 +168,31 @@ xcopy /s /r /y /q "$(SolutionDir)/Dependencies/dotnet/bin" "$(OutDir)"</Command
|
||||||
<ClInclude Include="src\Graphics\Images\SHVkImageView.h" />
|
<ClInclude Include="src\Graphics\Images\SHVkImageView.h" />
|
||||||
<ClInclude Include="src\Graphics\Images\SHVkSampler.h" />
|
<ClInclude Include="src\Graphics\Images\SHVkSampler.h" />
|
||||||
<ClInclude Include="src\Graphics\Instance\SHVkInstance.h" />
|
<ClInclude Include="src\Graphics\Instance\SHVkInstance.h" />
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Batching\SHBatch.h" />
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Batching\SHBatcher.h" />
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Batching\SHSuperBatch.h" />
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\GlobalData\SHGraphicsGlobalData.h" />
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHCamera.h" />
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHGraphicsConstants.h" />
|
||||||
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHGraphicsSystem.h" />
|
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHGraphicsSystem.h" />
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHMaterial.h" />
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHMaterial.hpp" />
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHMaterialInstance.h" />
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHMaterialInstance.hpp" />
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHMeshLibrary.h" />
|
||||||
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHRenderTarget.h" />
|
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHRenderTarget.h" />
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHRenderable.h" />
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHRenderer.h" />
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHViewport.h" />
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Meshes\SHMeshData.h" />
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Meshes\SHPrimitiveGenerator.h" />
|
||||||
<ClInclude Include="src\Graphics\MiddleEnd\PerFrame\SHPerFrameData.h" />
|
<ClInclude Include="src\Graphics\MiddleEnd\PerFrame\SHPerFrameData.h" />
|
||||||
<ClInclude Include="src\Graphics\MiddleEnd\PerFrame\SHRenderContext.h" />
|
<ClInclude Include="src\Graphics\MiddleEnd\PerFrame\SHRenderContext.h" />
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Pipeline\SHPipelineLibrary.h" />
|
||||||
<ClInclude Include="src\Graphics\MiddleEnd\Shaders\SHShaderModuleLibrary.h" />
|
<ClInclude Include="src\Graphics\MiddleEnd\Shaders\SHShaderModuleLibrary.h" />
|
||||||
<ClInclude Include="src\Graphics\MiddleEnd\Shaders\SHShaderSourceLibrary.h" />
|
<ClInclude Include="src\Graphics\MiddleEnd\Shaders\SHShaderSourceLibrary.h" />
|
||||||
<ClInclude Include="src\Graphics\MiddleEnd\Shaders\SHShaderType.h" />
|
<ClInclude Include="src\Graphics\MiddleEnd\Shaders\SHShaderType.h" />
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Textures\SHTextureLibrary.h" />
|
||||||
<ClInclude Include="src\Graphics\Pipeline\SHPipelineLayoutParams.h" />
|
<ClInclude Include="src\Graphics\Pipeline\SHPipelineLayoutParams.h" />
|
||||||
<ClInclude Include="src\Graphics\Pipeline\SHPipelineState.h" />
|
<ClInclude Include="src\Graphics\Pipeline\SHPipelineState.h" />
|
||||||
<ClInclude Include="src\Graphics\Pipeline\SHPipelineType.h" />
|
<ClInclude Include="src\Graphics\Pipeline\SHPipelineType.h" />
|
||||||
|
@ -250,6 +269,7 @@ xcopy /s /r /y /q "$(SolutionDir)/Dependencies/dotnet/bin" "$(OutDir)"</Command
|
||||||
<ClCompile Include="src\ECS_Base\System\SHFixedSystemRoutine.cpp" />
|
<ClCompile Include="src\ECS_Base\System\SHFixedSystemRoutine.cpp" />
|
||||||
<ClCompile Include="src\ECS_Base\System\SHSystemRoutine.cpp" />
|
<ClCompile Include="src\ECS_Base\System\SHSystemRoutine.cpp" />
|
||||||
<ClCompile Include="src\ECS_Base\UnitTesting\SHECSUnitTest.cpp" />
|
<ClCompile Include="src\ECS_Base\UnitTesting\SHECSUnitTest.cpp" />
|
||||||
|
<ClCompile Include="src\Editor\SHEditor.cpp" />
|
||||||
<ClCompile Include="src\Engine\SHEngine.cpp" />
|
<ClCompile Include="src\Engine\SHEngine.cpp" />
|
||||||
<ClCompile Include="src\FRC\SHFramerateController.cpp" />
|
<ClCompile Include="src\FRC\SHFramerateController.cpp" />
|
||||||
<ClCompile Include="src\Filesystem\SHFileSystem.cpp" />
|
<ClCompile Include="src\Filesystem\SHFileSystem.cpp" />
|
||||||
|
@ -273,12 +293,26 @@ xcopy /s /r /y /q "$(SolutionDir)/Dependencies/dotnet/bin" "$(OutDir)"</Command
|
||||||
<ClCompile Include="src\Graphics\Images\SHVkImageView.cpp" />
|
<ClCompile Include="src\Graphics\Images\SHVkImageView.cpp" />
|
||||||
<ClCompile Include="src\Graphics\Images\SHVkSampler.cpp" />
|
<ClCompile Include="src\Graphics\Images\SHVkSampler.cpp" />
|
||||||
<ClCompile Include="src\Graphics\Instance\SHVkInstance.cpp" />
|
<ClCompile Include="src\Graphics\Instance\SHVkInstance.cpp" />
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\Batching\SHBatch.cpp" />
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\Batching\SHBatcher.cpp" />
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\Batching\SHSuperBatch.cpp" />
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\GlobalData\SHGraphicsGlobalData.cpp" />
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\Interface\SHCamera.cpp" />
|
||||||
<ClCompile Include="src\Graphics\MiddleEnd\Interface\SHGraphicsSystem.cpp" />
|
<ClCompile Include="src\Graphics\MiddleEnd\Interface\SHGraphicsSystem.cpp" />
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\Interface\SHMaterial.cpp" />
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\Interface\SHMaterialInstance.cpp" />
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\Interface\SHMeshLibrary.cpp" />
|
||||||
<ClCompile Include="src\Graphics\MiddleEnd\Interface\SHRenderTarget.cpp" />
|
<ClCompile Include="src\Graphics\MiddleEnd\Interface\SHRenderTarget.cpp" />
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\Interface\SHRenderable.cpp" />
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\Interface\SHRenderer.cpp" />
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\Interface\SHViewport.cpp" />
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\Meshes\SHPrimitiveGenerator.cpp" />
|
||||||
<ClCompile Include="src\Graphics\MiddleEnd\PerFrame\SHPerFrameData.cpp" />
|
<ClCompile Include="src\Graphics\MiddleEnd\PerFrame\SHPerFrameData.cpp" />
|
||||||
<ClCompile Include="src\Graphics\MiddleEnd\PerFrame\SHRenderContext.cpp" />
|
<ClCompile Include="src\Graphics\MiddleEnd\PerFrame\SHRenderContext.cpp" />
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\Pipeline\SHPipelineLibrary.cpp" />
|
||||||
<ClCompile Include="src\Graphics\MiddleEnd\Shaders\SHShaderModuleLibrary.cpp" />
|
<ClCompile Include="src\Graphics\MiddleEnd\Shaders\SHShaderModuleLibrary.cpp" />
|
||||||
<ClCompile Include="src\Graphics\MiddleEnd\Shaders\SHShaderSourceLibrary.cpp" />
|
<ClCompile Include="src\Graphics\MiddleEnd\Shaders\SHShaderSourceLibrary.cpp" />
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\Textures\SHTextureLibrary.cpp" />
|
||||||
<ClCompile Include="src\Graphics\Pipeline\SHPipelineState.cpp" />
|
<ClCompile Include="src\Graphics\Pipeline\SHPipelineState.cpp" />
|
||||||
<ClCompile Include="src\Graphics\Pipeline\SHPushConstantInterface.cpp" />
|
<ClCompile Include="src\Graphics\Pipeline\SHPushConstantInterface.cpp" />
|
||||||
<ClCompile Include="src\Graphics\Pipeline\SHVkPipeline.cpp" />
|
<ClCompile Include="src\Graphics\Pipeline\SHVkPipeline.cpp" />
|
||||||
|
|
|
@ -28,6 +28,9 @@
|
||||||
<Filter Include="ECS_Base\UnitTesting">
|
<Filter Include="ECS_Base\UnitTesting">
|
||||||
<UniqueIdentifier>{078AA1A3-F318-2B6D-9C37-3F6888A53B13}</UniqueIdentifier>
|
<UniqueIdentifier>{078AA1A3-F318-2B6D-9C37-3F6888A53B13}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
<Filter Include="Editor">
|
||||||
|
<UniqueIdentifier>{8C1A20B0-78BC-4A86-6177-5EDA4DB8D1D6}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
<Filter Include="Engine">
|
<Filter Include="Engine">
|
||||||
<UniqueIdentifier>{DBC7D3B0-C769-FE86-B024-12DB9C6585D7}</UniqueIdentifier>
|
<UniqueIdentifier>{DBC7D3B0-C769-FE86-B024-12DB9C6585D7}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
@ -70,15 +73,30 @@
|
||||||
<Filter Include="Graphics\MiddleEnd">
|
<Filter Include="Graphics\MiddleEnd">
|
||||||
<UniqueIdentifier>{4B204703-3704-0859-A064-02AC8C67F2DA}</UniqueIdentifier>
|
<UniqueIdentifier>{4B204703-3704-0859-A064-02AC8C67F2DA}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
<Filter Include="Graphics\MiddleEnd\Batching">
|
||||||
|
<UniqueIdentifier>{7A02D7B0-E60F-0597-6FF6-0082DB02D14D}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Graphics\MiddleEnd\GlobalData">
|
||||||
|
<UniqueIdentifier>{85EFB65D-F107-9E87-BAB4-2D21268C3221}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
<Filter Include="Graphics\MiddleEnd\Interface">
|
<Filter Include="Graphics\MiddleEnd\Interface">
|
||||||
<UniqueIdentifier>{EBA1D3FF-D75C-C3AB-8014-3CF66CAE0D3C}</UniqueIdentifier>
|
<UniqueIdentifier>{EBA1D3FF-D75C-C3AB-8014-3CF66CAE0D3C}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
<Filter Include="Graphics\MiddleEnd\Meshes">
|
||||||
|
<UniqueIdentifier>{1F603FFC-8B22-7386-D4D2-011340D44B64}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
<Filter Include="Graphics\MiddleEnd\PerFrame">
|
<Filter Include="Graphics\MiddleEnd\PerFrame">
|
||||||
<UniqueIdentifier>{8CDBA7C9-F8E8-D5AF-81CF-D19AEDDBA166}</UniqueIdentifier>
|
<UniqueIdentifier>{8CDBA7C9-F8E8-D5AF-81CF-D19AEDDBA166}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
<Filter Include="Graphics\MiddleEnd\Pipeline">
|
||||||
|
<UniqueIdentifier>{D04C14FB-3C5A-42E1-C540-3ECC314D0E98}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
<Filter Include="Graphics\MiddleEnd\Shaders">
|
<Filter Include="Graphics\MiddleEnd\Shaders">
|
||||||
<UniqueIdentifier>{2460C057-1070-6C28-7929-D14665585BC1}</UniqueIdentifier>
|
<UniqueIdentifier>{2460C057-1070-6C28-7929-D14665585BC1}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
<Filter Include="Graphics\MiddleEnd\Textures">
|
||||||
|
<UniqueIdentifier>{7E76F08B-EA83-1E72-736A-1A5DDF76EA28}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
<Filter Include="Graphics\Pipeline">
|
<Filter Include="Graphics\Pipeline">
|
||||||
<UniqueIdentifier>{FBD334F8-67EA-328E-B061-BEAF1CB70316}</UniqueIdentifier>
|
<UniqueIdentifier>{FBD334F8-67EA-328E-B061-BEAF1CB70316}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
@ -121,6 +139,9 @@
|
||||||
<Filter Include="Math\Geometry">
|
<Filter Include="Math\Geometry">
|
||||||
<UniqueIdentifier>{EAD6C33D-5697-3F74-1FD2-88F18B518450}</UniqueIdentifier>
|
<UniqueIdentifier>{EAD6C33D-5697-3F74-1FD2-88F18B518450}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
<Filter Include="Math\Transform">
|
||||||
|
<UniqueIdentifier>{3AB383AD-2681-77B3-0F15-E8D9FB815318}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
<Filter Include="Math\Vector">
|
<Filter Include="Math\Vector">
|
||||||
<UniqueIdentifier>{F1B75745-5D6D-D03A-E661-CA115216C73E}</UniqueIdentifier>
|
<UniqueIdentifier>{F1B75745-5D6D-D03A-E661-CA115216C73E}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
@ -207,6 +228,9 @@
|
||||||
<ClInclude Include="src\ECS_Base\UnitTesting\SHTestSystems.h">
|
<ClInclude Include="src\ECS_Base\UnitTesting\SHTestSystems.h">
|
||||||
<Filter>ECS_Base\UnitTesting</Filter>
|
<Filter>ECS_Base\UnitTesting</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\Editor\SHEditor.h">
|
||||||
|
<Filter>Editor</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="src\Engine\SHEngine.h">
|
<ClInclude Include="src\Engine\SHEngine.h">
|
||||||
<Filter>Engine</Filter>
|
<Filter>Engine</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
@ -294,18 +318,69 @@
|
||||||
<ClInclude Include="src\Graphics\Instance\SHVkInstance.h">
|
<ClInclude Include="src\Graphics\Instance\SHVkInstance.h">
|
||||||
<Filter>Graphics\Instance</Filter>
|
<Filter>Graphics\Instance</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Batching\SHBatch.h">
|
||||||
|
<Filter>Graphics\MiddleEnd\Batching</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Batching\SHBatcher.h">
|
||||||
|
<Filter>Graphics\MiddleEnd\Batching</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Batching\SHSuperBatch.h">
|
||||||
|
<Filter>Graphics\MiddleEnd\Batching</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\GlobalData\SHGraphicsGlobalData.h">
|
||||||
|
<Filter>Graphics\MiddleEnd\GlobalData</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHCamera.h">
|
||||||
|
<Filter>Graphics\MiddleEnd\Interface</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHGraphicsConstants.h">
|
||||||
|
<Filter>Graphics\MiddleEnd\Interface</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHGraphicsSystem.h">
|
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHGraphicsSystem.h">
|
||||||
<Filter>Graphics\MiddleEnd\Interface</Filter>
|
<Filter>Graphics\MiddleEnd\Interface</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHMaterial.h">
|
||||||
|
<Filter>Graphics\MiddleEnd\Interface</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHMaterial.hpp">
|
||||||
|
<Filter>Graphics\MiddleEnd\Interface</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHMaterialInstance.h">
|
||||||
|
<Filter>Graphics\MiddleEnd\Interface</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHMaterialInstance.hpp">
|
||||||
|
<Filter>Graphics\MiddleEnd\Interface</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHMeshLibrary.h">
|
||||||
|
<Filter>Graphics\MiddleEnd\Interface</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHRenderTarget.h">
|
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHRenderTarget.h">
|
||||||
<Filter>Graphics\MiddleEnd\Interface</Filter>
|
<Filter>Graphics\MiddleEnd\Interface</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHRenderable.h">
|
||||||
|
<Filter>Graphics\MiddleEnd\Interface</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHRenderer.h">
|
||||||
|
<Filter>Graphics\MiddleEnd\Interface</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Interface\SHViewport.h">
|
||||||
|
<Filter>Graphics\MiddleEnd\Interface</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Meshes\SHMeshData.h">
|
||||||
|
<Filter>Graphics\MiddleEnd\Meshes</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Meshes\SHPrimitiveGenerator.h">
|
||||||
|
<Filter>Graphics\MiddleEnd\Meshes</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="src\Graphics\MiddleEnd\PerFrame\SHPerFrameData.h">
|
<ClInclude Include="src\Graphics\MiddleEnd\PerFrame\SHPerFrameData.h">
|
||||||
<Filter>Graphics\MiddleEnd\PerFrame</Filter>
|
<Filter>Graphics\MiddleEnd\PerFrame</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\Graphics\MiddleEnd\PerFrame\SHRenderContext.h">
|
<ClInclude Include="src\Graphics\MiddleEnd\PerFrame\SHRenderContext.h">
|
||||||
<Filter>Graphics\MiddleEnd\PerFrame</Filter>
|
<Filter>Graphics\MiddleEnd\PerFrame</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Pipeline\SHPipelineLibrary.h">
|
||||||
|
<Filter>Graphics\MiddleEnd\Pipeline</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="src\Graphics\MiddleEnd\Shaders\SHShaderModuleLibrary.h">
|
<ClInclude Include="src\Graphics\MiddleEnd\Shaders\SHShaderModuleLibrary.h">
|
||||||
<Filter>Graphics\MiddleEnd\Shaders</Filter>
|
<Filter>Graphics\MiddleEnd\Shaders</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
@ -315,6 +390,9 @@
|
||||||
<ClInclude Include="src\Graphics\MiddleEnd\Shaders\SHShaderType.h">
|
<ClInclude Include="src\Graphics\MiddleEnd\Shaders\SHShaderType.h">
|
||||||
<Filter>Graphics\MiddleEnd\Shaders</Filter>
|
<Filter>Graphics\MiddleEnd\Shaders</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\Graphics\MiddleEnd\Textures\SHTextureLibrary.h">
|
||||||
|
<Filter>Graphics\MiddleEnd\Textures</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="src\Graphics\Pipeline\SHPipelineLayoutParams.h">
|
<ClInclude Include="src\Graphics\Pipeline\SHPipelineLayoutParams.h">
|
||||||
<Filter>Graphics\Pipeline</Filter>
|
<Filter>Graphics\Pipeline</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
@ -421,7 +499,13 @@
|
||||||
<Filter>Math</Filter>
|
<Filter>Math</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\Math\Transform\SHTransform.h">
|
<ClInclude Include="src\Math\Transform\SHTransform.h">
|
||||||
<Filter>Math</Filter>
|
<Filter>Math\Transform</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\Math\Transform\SHTransformComponent.h">
|
||||||
|
<Filter>Math\Transform</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\Math\Transform\SHTransformSystem.h">
|
||||||
|
<Filter>Math\Transform</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\Math\Vector\SHVec2.h">
|
<ClInclude Include="src\Math\Vector\SHVec2.h">
|
||||||
<Filter>Math\Vector</Filter>
|
<Filter>Math\Vector</Filter>
|
||||||
|
@ -498,8 +582,6 @@
|
||||||
<ClInclude Include="src\Tools\SHUtilities.hpp">
|
<ClInclude Include="src\Tools\SHUtilities.hpp">
|
||||||
<Filter>Tools</Filter>
|
<Filter>Tools</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\Math\Transform\SHTransformComponent.h" />
|
|
||||||
<ClInclude Include="src\Math\Transform\SHTransformSystem.h" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="src\ECS_Base\Components\SHComponent.cpp">
|
<ClCompile Include="src\ECS_Base\Components\SHComponent.cpp">
|
||||||
|
@ -529,6 +611,9 @@
|
||||||
<ClCompile Include="src\ECS_Base\UnitTesting\SHECSUnitTest.cpp">
|
<ClCompile Include="src\ECS_Base\UnitTesting\SHECSUnitTest.cpp">
|
||||||
<Filter>ECS_Base\UnitTesting</Filter>
|
<Filter>ECS_Base\UnitTesting</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\Editor\SHEditor.cpp">
|
||||||
|
<Filter>Editor</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="src\Engine\SHEngine.cpp">
|
<ClCompile Include="src\Engine\SHEngine.cpp">
|
||||||
<Filter>Engine</Filter>
|
<Filter>Engine</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@ -598,24 +683,66 @@
|
||||||
<ClCompile Include="src\Graphics\Instance\SHVkInstance.cpp">
|
<ClCompile Include="src\Graphics\Instance\SHVkInstance.cpp">
|
||||||
<Filter>Graphics\Instance</Filter>
|
<Filter>Graphics\Instance</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\Batching\SHBatch.cpp">
|
||||||
|
<Filter>Graphics\MiddleEnd\Batching</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\Batching\SHBatcher.cpp">
|
||||||
|
<Filter>Graphics\MiddleEnd\Batching</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\Batching\SHSuperBatch.cpp">
|
||||||
|
<Filter>Graphics\MiddleEnd\Batching</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\GlobalData\SHGraphicsGlobalData.cpp">
|
||||||
|
<Filter>Graphics\MiddleEnd\GlobalData</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\Interface\SHCamera.cpp">
|
||||||
|
<Filter>Graphics\MiddleEnd\Interface</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="src\Graphics\MiddleEnd\Interface\SHGraphicsSystem.cpp">
|
<ClCompile Include="src\Graphics\MiddleEnd\Interface\SHGraphicsSystem.cpp">
|
||||||
<Filter>Graphics\MiddleEnd\Interface</Filter>
|
<Filter>Graphics\MiddleEnd\Interface</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\Interface\SHMaterial.cpp">
|
||||||
|
<Filter>Graphics\MiddleEnd\Interface</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\Interface\SHMaterialInstance.cpp">
|
||||||
|
<Filter>Graphics\MiddleEnd\Interface</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\Interface\SHMeshLibrary.cpp">
|
||||||
|
<Filter>Graphics\MiddleEnd\Interface</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="src\Graphics\MiddleEnd\Interface\SHRenderTarget.cpp">
|
<ClCompile Include="src\Graphics\MiddleEnd\Interface\SHRenderTarget.cpp">
|
||||||
<Filter>Graphics\MiddleEnd\Interface</Filter>
|
<Filter>Graphics\MiddleEnd\Interface</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\Interface\SHRenderable.cpp">
|
||||||
|
<Filter>Graphics\MiddleEnd\Interface</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\Interface\SHRenderer.cpp">
|
||||||
|
<Filter>Graphics\MiddleEnd\Interface</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\Interface\SHViewport.cpp">
|
||||||
|
<Filter>Graphics\MiddleEnd\Interface</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\Meshes\SHPrimitiveGenerator.cpp">
|
||||||
|
<Filter>Graphics\MiddleEnd\Meshes</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="src\Graphics\MiddleEnd\PerFrame\SHPerFrameData.cpp">
|
<ClCompile Include="src\Graphics\MiddleEnd\PerFrame\SHPerFrameData.cpp">
|
||||||
<Filter>Graphics\MiddleEnd\PerFrame</Filter>
|
<Filter>Graphics\MiddleEnd\PerFrame</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="src\Graphics\MiddleEnd\PerFrame\SHRenderContext.cpp">
|
<ClCompile Include="src\Graphics\MiddleEnd\PerFrame\SHRenderContext.cpp">
|
||||||
<Filter>Graphics\MiddleEnd\PerFrame</Filter>
|
<Filter>Graphics\MiddleEnd\PerFrame</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\Pipeline\SHPipelineLibrary.cpp">
|
||||||
|
<Filter>Graphics\MiddleEnd\Pipeline</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="src\Graphics\MiddleEnd\Shaders\SHShaderModuleLibrary.cpp">
|
<ClCompile Include="src\Graphics\MiddleEnd\Shaders\SHShaderModuleLibrary.cpp">
|
||||||
<Filter>Graphics\MiddleEnd\Shaders</Filter>
|
<Filter>Graphics\MiddleEnd\Shaders</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="src\Graphics\MiddleEnd\Shaders\SHShaderSourceLibrary.cpp">
|
<ClCompile Include="src\Graphics\MiddleEnd\Shaders\SHShaderSourceLibrary.cpp">
|
||||||
<Filter>Graphics\MiddleEnd\Shaders</Filter>
|
<Filter>Graphics\MiddleEnd\Shaders</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\Graphics\MiddleEnd\Textures\SHTextureLibrary.cpp">
|
||||||
|
<Filter>Graphics\MiddleEnd\Textures</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="src\Graphics\Pipeline\SHPipelineState.cpp">
|
<ClCompile Include="src\Graphics\Pipeline\SHPipelineState.cpp">
|
||||||
<Filter>Graphics\Pipeline</Filter>
|
<Filter>Graphics\Pipeline</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@ -698,7 +825,13 @@
|
||||||
<Filter>Math</Filter>
|
<Filter>Math</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="src\Math\Transform\SHTransform.cpp">
|
<ClCompile Include="src\Math\Transform\SHTransform.cpp">
|
||||||
<Filter>Math</Filter>
|
<Filter>Math\Transform</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\Math\Transform\SHTransformComponent.cpp">
|
||||||
|
<Filter>Math\Transform</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\Math\Transform\SHTransformSystem.cpp">
|
||||||
|
<Filter>Math\Transform</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="src\Math\Vector\SHVec2.cpp">
|
<ClCompile Include="src\Math\Vector\SHVec2.cpp">
|
||||||
<Filter>Math\Vector</Filter>
|
<Filter>Math\Vector</Filter>
|
||||||
|
@ -740,7 +873,5 @@
|
||||||
<ClCompile Include="src\Tools\SHStringUtils.cpp">
|
<ClCompile Include="src\Tools\SHStringUtils.cpp">
|
||||||
<Filter>Tools</Filter>
|
<Filter>Tools</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="src\Math\Transform\SHTransformComponent.cpp" />
|
|
||||||
<ClCompile Include="src\Math\Transform\SHTransformSystem.cpp" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
|
@ -8,6 +8,7 @@
|
||||||
#include "Graphics/Framebuffer/SHVkFramebuffer.h"
|
#include "Graphics/Framebuffer/SHVkFramebuffer.h"
|
||||||
#include "Graphics/Pipeline/SHVkPipeline.h"
|
#include "Graphics/Pipeline/SHVkPipeline.h"
|
||||||
#include "Graphics/Buffers/SHVkBuffer.h"
|
#include "Graphics/Buffers/SHVkBuffer.h"
|
||||||
|
#include "Graphics/Images/SHVkImage.h"
|
||||||
#include "Graphics/Descriptors/SHVkDescriptorSetGroup.h"
|
#include "Graphics/Descriptors/SHVkDescriptorSetGroup.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -422,6 +423,39 @@ namespace SHADE
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***************************************************************************/
|
||||||
|
/*!
|
||||||
|
|
||||||
|
\brief
|
||||||
|
Issues a multi indirect draw call.
|
||||||
|
|
||||||
|
\param indirectDrawData
|
||||||
|
SHVkBuffer containing the data for the multi indirect draw call.
|
||||||
|
\param drawCount
|
||||||
|
Number of multi indirect draw sub-calls stored in indirectDrawData.
|
||||||
|
|
||||||
|
*/
|
||||||
|
/***************************************************************************/
|
||||||
|
|
||||||
|
void SHVkCommandBuffer::DrawMultiIndirect(Handle<SHVkBuffer> indirectDrawData, uint32_t drawCount)
|
||||||
|
{
|
||||||
|
if (cmdBufferState != SH_CMD_BUFFER_STATE::RECORDING)
|
||||||
|
{
|
||||||
|
SHLOG_ERROR("Command buffer must have started recording before a pipeline can be bound.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
vkCommandBuffer.drawIndexedIndirect(indirectDrawData->GetVkBuffer(), 0, drawCount, sizeof(vk::DrawIndexedIndirectCommand));
|
||||||
|
}
|
||||||
|
|
||||||
|
void SHVkCommandBuffer::CopyBufferToImage(const vk::Buffer& src, const vk::Image& dst, const std::vector<vk::BufferImageCopy>& copyInfo)
|
||||||
|
{
|
||||||
|
vkCommandBuffer.copyBufferToImage
|
||||||
|
(
|
||||||
|
src, dst, vk::ImageLayout::eTransferDstOptimal,
|
||||||
|
static_cast<uint32_t>(copyInfo.size()), copyInfo.data()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
void SHVkCommandBuffer::PipelineBarrier(
|
void SHVkCommandBuffer::PipelineBarrier(
|
||||||
vk::PipelineStageFlags srcStage,
|
vk::PipelineStageFlags srcStage,
|
||||||
|
@ -457,33 +491,6 @@ namespace SHADE
|
||||||
// //vkCommandBuffer.pipelineBarrier()
|
// //vkCommandBuffer.pipelineBarrier()
|
||||||
//}
|
//}
|
||||||
|
|
||||||
/***************************************************************************/
|
|
||||||
/*!
|
|
||||||
|
|
||||||
\brief
|
|
||||||
Issues a multi indirect draw call.
|
|
||||||
|
|
||||||
\param indirectDrawData
|
|
||||||
SHVkBuffer containing the data for the multi indirect draw call.
|
|
||||||
\param drawCount
|
|
||||||
Number of multi indirect draw sub-calls stored in indirectDrawData.
|
|
||||||
|
|
||||||
*/
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
void SHVkCommandBuffer::DrawMultiIndirect(Handle<SHVkBuffer> indirectDrawData, uint32_t drawCount)
|
|
||||||
{
|
|
||||||
if (cmdBufferState != SH_CMD_BUFFER_STATE::RECORDING)
|
|
||||||
{
|
|
||||||
SHLOG_ERROR("Command buffer must have started recording before a pipeline can be bound.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
vkCommandBuffer.drawIndexedIndirect(indirectDrawData->GetVkBuffer(), 0, drawCount, sizeof(vk::DrawIndexedIndirectCommand));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
/*!
|
/*!
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@ namespace SHADE
|
||||||
class SHVkFramebuffer;
|
class SHVkFramebuffer;
|
||||||
class SHVkPipeline;
|
class SHVkPipeline;
|
||||||
class SHVkBuffer;
|
class SHVkBuffer;
|
||||||
|
class SHVkImage;
|
||||||
class SHVkDescriptorSetGroup;
|
class SHVkDescriptorSetGroup;
|
||||||
|
|
||||||
enum class SH_CMD_BUFFER_TYPE
|
enum class SH_CMD_BUFFER_TYPE
|
||||||
|
@ -116,6 +117,10 @@ namespace SHADE
|
||||||
// Draw Commands
|
// Draw Commands
|
||||||
void DrawArrays (uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance) const noexcept;
|
void DrawArrays (uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance) const noexcept;
|
||||||
void DrawIndexed (uint32_t indexCount, uint32_t firstIndex, uint32_t vertexOffset) const noexcept;
|
void DrawIndexed (uint32_t indexCount, uint32_t firstIndex, uint32_t vertexOffset) const noexcept;
|
||||||
|
void DrawMultiIndirect (Handle<SHVkBuffer> indirectDrawData, uint32_t drawCount);
|
||||||
|
|
||||||
|
// Buffer Copy
|
||||||
|
void CopyBufferToImage (const vk::Buffer& src, const vk::Image& dst, const std::vector<vk::BufferImageCopy>& copyInfo);
|
||||||
|
|
||||||
// memory barriers
|
// memory barriers
|
||||||
void PipelineBarrier (
|
void PipelineBarrier (
|
||||||
|
@ -129,7 +134,6 @@ namespace SHADE
|
||||||
|
|
||||||
bool IsReadyToSubmit (void) const noexcept;
|
bool IsReadyToSubmit (void) const noexcept;
|
||||||
void HandlePostSubmit (void) noexcept;
|
void HandlePostSubmit (void) noexcept;
|
||||||
void DrawMultiIndirect (Handle<SHVkBuffer> indirectDrawData, uint32_t drawCount);
|
|
||||||
|
|
||||||
// Push Constant variable setting
|
// Push Constant variable setting
|
||||||
template <typename T>
|
template <typename T>
|
||||||
|
|
|
@ -234,7 +234,7 @@ namespace SHADE
|
||||||
return SHVkInstance::GetResourceManager().Create<SHVkImageView>(inLogicalDeviceHdl, parent, createParams);
|
return SHVkInstance::GetResourceManager().Create<SHVkImageView>(inLogicalDeviceHdl, parent, createParams);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SHVkImage::TransferToDeviceResource(void) noexcept
|
void SHVkImage::TransferToDeviceResource(Handle<SHVkCommandBuffer> cmdBufferHdl) noexcept
|
||||||
{
|
{
|
||||||
// prepare copy regions
|
// prepare copy regions
|
||||||
std::vector<vk::BufferImageCopy> copyRegions{mipOffsets.size()};
|
std::vector<vk::BufferImageCopy> copyRegions{mipOffsets.size()};
|
||||||
|
@ -252,7 +252,7 @@ namespace SHADE
|
||||||
copyRegions[i].imageExtent = vk::Extent3D{ width >> i, height >> i, 1 };
|
copyRegions[i].imageExtent = vk::Extent3D{ width >> i, height >> i, 1 };
|
||||||
}
|
}
|
||||||
|
|
||||||
//PrepareImageTransition();
|
cmdBufferHdl->CopyBufferToImage(stagingBuffer, vkImage, copyRegions);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
|
@ -274,7 +274,7 @@ namespace SHADE
|
||||||
|
|
||||||
*/
|
*/
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
void SHVkImage::PrepareImageTransition(vk::ImageLayout oldLayout, vk::ImageLayout newLayout, vk::ImageMemoryBarrier& barrier) noexcept
|
void SHVkImage::PrepareImageTransitionInfo(vk::ImageLayout oldLayout, vk::ImageLayout newLayout, vk::ImageMemoryBarrier& barrier) noexcept
|
||||||
{
|
{
|
||||||
barrier.oldLayout = oldLayout;
|
barrier.oldLayout = oldLayout;
|
||||||
barrier.newLayout = newLayout;
|
barrier.newLayout = newLayout;
|
||||||
|
@ -286,33 +286,6 @@ namespace SHADE
|
||||||
barrier.subresourceRange.levelCount = mipLevelCount;
|
barrier.subresourceRange.levelCount = mipLevelCount;
|
||||||
barrier.subresourceRange.baseArrayLayer = 0;
|
barrier.subresourceRange.baseArrayLayer = 0;
|
||||||
barrier.subresourceRange.layerCount = layerCount;
|
barrier.subresourceRange.layerCount = layerCount;
|
||||||
|
|
||||||
vk::PipelineStageFlagBits srcStage = vk::PipelineStageFlagBits::eTopOfPipe;
|
|
||||||
vk::PipelineStageFlagBits dstStage = vk::PipelineStageFlagBits::eTopOfPipe;
|
|
||||||
|
|
||||||
if (oldLayout == vk::ImageLayout::eUndefined && newLayout == vk::ImageLayout::eTransferDstOptimal)
|
|
||||||
{
|
|
||||||
srcStage = vk::PipelineStageFlagBits::eTopOfPipe;
|
|
||||||
dstStage = vk::PipelineStageFlagBits::eTransfer;
|
|
||||||
|
|
||||||
barrier.srcAccessMask = vk::AccessFlagBits::eNone;
|
|
||||||
barrier.dstAccessMask = vk::AccessFlagBits::eTransferWrite;
|
|
||||||
}
|
|
||||||
else if (oldLayout == vk::ImageLayout::eTransferDstOptimal && newLayout == vk::ImageLayout::eShaderReadOnlyOptimal)
|
|
||||||
{
|
|
||||||
srcStage = vk::PipelineStageFlagBits::eTransfer;
|
|
||||||
|
|
||||||
// TODO, what if we want to access in compute shader
|
|
||||||
dstStage = vk::PipelineStageFlagBits::eFragmentShader;
|
|
||||||
|
|
||||||
barrier.srcAccessMask = vk::AccessFlagBits::eTransferWrite;
|
|
||||||
barrier.dstAccessMask = vk::AccessFlagBits::eShaderRead;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SHLOG_ERROR("Image layouts are invalid. ");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SHVkImage::LinkWithExteriorImage(vk::Image inVkImage, vk::ImageType type, uint32_t inWidth, uint32_t inHeight, uint32_t inDepth, uint32_t layers, uint8_t levels, vk::Format format, vk::ImageUsageFlags flags) noexcept
|
void SHVkImage::LinkWithExteriorImage(vk::Image inVkImage, vk::ImageType type, uint32_t inWidth, uint32_t inHeight, uint32_t inDepth, uint32_t layers, uint8_t levels, vk::Format format, vk::ImageUsageFlags flags) noexcept
|
||||||
|
|
|
@ -135,8 +135,8 @@ namespace SHADE
|
||||||
/* PUBLIC MEMBER FUNCTIONS */
|
/* PUBLIC MEMBER FUNCTIONS */
|
||||||
/*-----------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------*/
|
||||||
Handle<SHVkImageView> CreateImageView (Handle<SHVkLogicalDevice> const& inLogicalDeviceHdl, Handle<SHVkImage> const& parent, SHImageViewDetails const& createParams) const noexcept;
|
Handle<SHVkImageView> CreateImageView (Handle<SHVkLogicalDevice> const& inLogicalDeviceHdl, Handle<SHVkImage> const& parent, SHImageViewDetails const& createParams) const noexcept;
|
||||||
void TransferToDeviceResource (void) noexcept;
|
void TransferToDeviceResource (Handle<SHVkCommandBuffer> cmdBufferHdl) noexcept;
|
||||||
void PrepareImageTransition (vk::ImageLayout oldLayout, vk::ImageLayout newLayout, vk::ImageMemoryBarrier& barrier) noexcept;
|
void PrepareImageTransitionInfo (vk::ImageLayout oldLayout, vk::ImageLayout newLayout, vk::ImageMemoryBarrier& barrier) noexcept;
|
||||||
|
|
||||||
/*-----------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------*/
|
||||||
/* GETTERS AND SETTERS */
|
/* GETTERS AND SETTERS */
|
||||||
|
|
|
@ -13,29 +13,130 @@ of DigiPen Institute of Technology is prohibited.
|
||||||
#include "SHpch.h"
|
#include "SHpch.h"
|
||||||
#include "SHTextureLibrary.h"
|
#include "SHTextureLibrary.h"
|
||||||
|
|
||||||
|
#include "Graphics/SHVulkanIncludes.h"
|
||||||
|
|
||||||
#include "Graphics/Devices/SHVkLogicalDevice.h"
|
#include "Graphics/Devices/SHVkLogicalDevice.h"
|
||||||
#include "Graphics/Buffers/SHVkBuffer.h"
|
#include "Graphics/Buffers/SHVkBuffer.h"
|
||||||
#include "Graphics/Commands/SHVkCommandBuffer.h"
|
#include "Graphics/Commands/SHVkCommandBuffer.h"
|
||||||
#include "Graphics/SHVkUtil.h"
|
#include "Graphics/SHVkUtil.h"
|
||||||
|
#include "Tools/SHLogger.h"
|
||||||
|
|
||||||
namespace SHADE
|
namespace SHADE
|
||||||
{
|
{
|
||||||
/*-----------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------------*/
|
||||||
/* Usage Functions */
|
/* Usage Functions */
|
||||||
/*-----------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------------*/
|
||||||
Handle<SHTexture> SHTextureLibrary::Add(uint32_t pixelCount, const SHTexture::PixelChannel* const pixelData)
|
Handle<SHTexture> SHTextureLibrary::Add(uint32_t pixelCount, const SHTexture::PixelChannel* const pixelData, SHTexture::TextureFormat format, int mipLevels)
|
||||||
{
|
{
|
||||||
return {};
|
isDirty = true;
|
||||||
|
|
||||||
|
auto handle = resourceManager.Create<SHTexture>();
|
||||||
|
addJobs.emplace_back(AddJob { pixelCount, pixelData, format, mipLevels });
|
||||||
|
return handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SHTextureLibrary::Remove(Handle<SHTexture> mesh)
|
void SHTextureLibrary::Remove(Handle<SHTexture> texture)
|
||||||
{
|
{
|
||||||
|
if (!texture)
|
||||||
|
throw std::invalid_argument("Attempted to remove a Texture that did not belong to the Texture Library!");
|
||||||
|
|
||||||
|
removeJobs.emplace_back(texture);
|
||||||
|
isDirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SHTextureLibrary::BuildBuffers(Handle<SHVkLogicalDevice> device, Handle<SHVkCommandBuffer> cmdBuffer)
|
void SHTextureLibrary::BuildImages(Handle<SHVkLogicalDevice> device, Handle<SHVkCommandBuffer> cmdBuffer, Handle<SHVkQueue> graphicsQueue, Handle<SHVkDescriptorPool> descPool, Handle<SHVkDescriptorSetLayout> descLayout)
|
||||||
{
|
{
|
||||||
|
/* Remove Textures */
|
||||||
|
std::vector<vk::ImageMemoryBarrier> pipelineBarriers(addJobs.size());
|
||||||
|
|
||||||
|
/* Add Textures */
|
||||||
|
// Transition
|
||||||
|
for (int i = 0; auto& job : addJobs)
|
||||||
|
{
|
||||||
|
job.Image = resourceManager.Create<SHVkImage>();
|
||||||
|
job.Image->PrepareImageTransitionInfo(vk::ImageLayout::eUndefined, vk::ImageLayout::eTransferDstOptimal, pipelineBarriers[i]);
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
vk::PipelineStageFlagBits srcStage = vk::PipelineStageFlagBits::eTopOfPipe;
|
||||||
|
vk::PipelineStageFlagBits dstStage = vk::PipelineStageFlagBits::eTopOfPipe;
|
||||||
|
preparePipelineBarriers(vk::ImageLayout::eUndefined, vk::ImageLayout::eTransferDstOptimal, srcStage, dstStage, pipelineBarriers);
|
||||||
|
cmdBuffer->PipelineBarrier(vk::PipelineStageFlagBits::eTopOfPipe, vk::PipelineStageFlagBits::eTransfer, {}, {}, {}, pipelineBarriers);
|
||||||
|
|
||||||
|
// Copy
|
||||||
|
for (auto& job : addJobs)
|
||||||
|
{
|
||||||
|
job.Image->TransferToDeviceResource(cmdBuffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Transition
|
||||||
|
for (int i = 0; auto & job : addJobs)
|
||||||
|
{
|
||||||
|
// Transition
|
||||||
|
job.Image->PrepareImageTransitionInfo(vk::ImageLayout::eTransferDstOptimal, vk::ImageLayout::eShaderReadOnlyOptimal, pipelineBarriers[i]);
|
||||||
|
}
|
||||||
|
preparePipelineBarriers(vk::ImageLayout::eTransferDstOptimal, vk::ImageLayout::eShaderReadOnlyOptimal, srcStage, dstStage, pipelineBarriers);
|
||||||
|
cmdBuffer->PipelineBarrier(vk::PipelineStageFlagBits::eTopOfPipe, vk::PipelineStageFlagBits::eTransfer, {}, {}, {}, pipelineBarriers);
|
||||||
|
|
||||||
|
// Execute Commands
|
||||||
|
graphicsQueue->SubmitCommandBuffer({ cmdBuffer });
|
||||||
|
device->WaitIdle();
|
||||||
|
|
||||||
|
// Create Image View
|
||||||
|
for (auto& job : addJobs)
|
||||||
|
{
|
||||||
|
const SHImageViewDetails DETAILS
|
||||||
|
{
|
||||||
|
.viewType = vk::ImageViewType::e2D,
|
||||||
|
.format = job.TextureFormat,
|
||||||
|
.imageAspectFlags = vk::ImageAspectFlagBits::eColor,
|
||||||
|
.baseMipLevel = 0,
|
||||||
|
.mipLevelCount = job.MipLevels,
|
||||||
|
.baseArrayLayer = 0,
|
||||||
|
.layerCount = 0
|
||||||
|
};
|
||||||
|
job.Handle->ImageView = job.Image->CreateImageView(device, job.Image, DETAILS);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build Descriptor
|
||||||
|
Handle<SHVkDescriptorSetGroup> descSetGroup = descPool->Allocate({ descLayout }, { 1 }).front();
|
||||||
|
|
||||||
|
|
||||||
|
isDirty = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------------*/
|
||||||
|
/* Usage Functions */
|
||||||
|
/*---------------------------------------------------------------------------------*/
|
||||||
|
void SHTextureLibrary::preparePipelineBarriers(vk::ImageLayout oldLayout, vk::ImageLayout newLayout, vk::PipelineStageFlagBits& srcStage, vk::PipelineStageFlagBits& dstStage, std::vector<vk::ImageMemoryBarrier>& barriers)
|
||||||
|
{
|
||||||
|
if (oldLayout == vk::ImageLayout::eUndefined && newLayout == vk::ImageLayout::eTransferDstOptimal)
|
||||||
|
{
|
||||||
|
srcStage = vk::PipelineStageFlagBits::eTopOfPipe;
|
||||||
|
dstStage = vk::PipelineStageFlagBits::eTransfer;
|
||||||
|
|
||||||
|
for (auto& barrier : barriers)
|
||||||
|
{
|
||||||
|
barrier.srcAccessMask = vk::AccessFlagBits::eNone;
|
||||||
|
barrier.dstAccessMask = vk::AccessFlagBits::eTransferWrite;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (oldLayout == vk::ImageLayout::eTransferDstOptimal && newLayout == vk::ImageLayout::eShaderReadOnlyOptimal)
|
||||||
|
{
|
||||||
|
srcStage = vk::PipelineStageFlagBits::eTransfer;
|
||||||
|
|
||||||
|
// TODO, what if we want to access in compute shader
|
||||||
|
dstStage = vk::PipelineStageFlagBits::eFragmentShader;
|
||||||
|
|
||||||
|
for (auto& barrier : barriers)
|
||||||
|
{
|
||||||
|
barrier.srcAccessMask = vk::AccessFlagBits::eTransferWrite;
|
||||||
|
barrier.dstAccessMask = vk::AccessFlagBits::eShaderRead;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SHLOG_ERROR("Image layouts are invalid. ");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,11 +37,15 @@ namespace SHADE
|
||||||
/*-----------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------*/
|
||||||
/* Type Definitions */
|
/* Type Definitions */
|
||||||
/*-----------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------*/
|
||||||
using PixelChannel = uint8_t;
|
using PixelChannel = void;
|
||||||
|
using TextureFormat = vk::Format; // TODO: Change
|
||||||
|
using Index = uint32_t;
|
||||||
|
|
||||||
/*-----------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------*/
|
||||||
/* Data Members */
|
/* Data Members */
|
||||||
/*-----------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------*/
|
||||||
|
Handle<SHVkImageView> ImageView;
|
||||||
|
Index TextureArrayIndex = std::numeric_limits<Index>::max();
|
||||||
};
|
};
|
||||||
/***********************************************************************************/
|
/***********************************************************************************/
|
||||||
/*!
|
/*!
|
||||||
|
@ -61,7 +65,7 @@ namespace SHADE
|
||||||
|
|
||||||
\brief
|
\brief
|
||||||
Adds a texture to the Texture Library. But this does not mean that the
|
Adds a texture to the Texture Library. But this does not mean that the
|
||||||
textures have been added yet. A call to "BuildBuffers()" is required to
|
textures have been added yet. A call to "BuildImages()" is required to
|
||||||
transfer all textures into the GPU.
|
transfer all textures into the GPU.
|
||||||
|
|
||||||
\param pixelCount
|
\param pixelCount
|
||||||
|
@ -69,20 +73,22 @@ namespace SHADE
|
||||||
\param positions
|
\param positions
|
||||||
Pointer to the first in a contiguous array of SHMathVec3s that define vertex
|
Pointer to the first in a contiguous array of SHMathVec3s that define vertex
|
||||||
positions.
|
positions.
|
||||||
|
\param format
|
||||||
|
Format of the texture loaded in.
|
||||||
|
|
||||||
\return
|
\return
|
||||||
Handle to the created Texture. This is not valid to be used until a call to
|
Handle to the created Texture. This is not valid to be used until a call to
|
||||||
BuildBuffers().
|
BuildImages().
|
||||||
|
|
||||||
*/
|
*/
|
||||||
/*******************************************************************************/
|
/*******************************************************************************/
|
||||||
Handle<SHTexture> Add(uint32_t pixelCount, const SHTexture::PixelChannel* const pixelData);
|
Handle<SHTexture> Add(uint32_t pixelCount, const SHTexture::PixelChannel* const pixelData, SHTexture::TextureFormat format, int mipLevels);
|
||||||
/*******************************************************************************/
|
/*******************************************************************************/
|
||||||
/*!
|
/*!
|
||||||
|
|
||||||
\brief
|
\brief
|
||||||
Removes a mesh from the Texture Library. But this does not mean that the
|
Removes a mesh from the Texture Library. But this does not mean that the
|
||||||
textures have been removed yet. A call to "BuildBuffers()" is required to
|
textures have been removed yet. A call to "BuildImages()" is required to
|
||||||
finalise all changes.
|
finalise all changes.
|
||||||
|
|
||||||
\param mesh
|
\param mesh
|
||||||
|
@ -106,7 +112,7 @@ namespace SHADE
|
||||||
queue.
|
queue.
|
||||||
*/
|
*/
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
void BuildBuffers(Handle<SHVkLogicalDevice> device, Handle<SHVkCommandBuffer> cmdBuffer);
|
void BuildImages(Handle<SHVkLogicalDevice> device, Handle<SHVkCommandBuffer> cmdBuffer, Handle<SHVkQueue> graphicsQueue);
|
||||||
|
|
||||||
/*-----------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------*/
|
||||||
/* Getter Functions */
|
/* Getter Functions */
|
||||||
|
@ -121,8 +127,12 @@ namespace SHADE
|
||||||
{
|
{
|
||||||
uint32_t PixelCount = 0;
|
uint32_t PixelCount = 0;
|
||||||
const SHTexture::PixelChannel* PixelData = nullptr;
|
const SHTexture::PixelChannel* PixelData = nullptr;
|
||||||
|
SHTexture::TextureFormat TextureFormat = {};
|
||||||
|
int MipLevels = 0;
|
||||||
|
Handle<SHVkImage> Image;
|
||||||
Handle<SHTexture> Handle;
|
Handle<SHTexture> Handle;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*-----------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------*/
|
||||||
/* Data Members */
|
/* Data Members */
|
||||||
/*-----------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------*/
|
||||||
|
@ -130,7 +140,7 @@ namespace SHADE
|
||||||
std::vector<AddJob> addJobs;
|
std::vector<AddJob> addJobs;
|
||||||
std::vector<Handle<SHTexture>> removeJobs;
|
std::vector<Handle<SHTexture>> removeJobs;
|
||||||
// Tracking
|
// Tracking
|
||||||
ResourceLibrary<SHTexture> textures{};
|
ResourceManager resourceManager;
|
||||||
std::vector<Handle<SHTexture>> texOrder;
|
std::vector<Handle<SHTexture>> texOrder;
|
||||||
// CPU Storage
|
// CPU Storage
|
||||||
std::vector<SHTexture::PixelChannel> texStorage;
|
std::vector<SHTexture::PixelChannel> texStorage;
|
||||||
|
@ -138,5 +148,10 @@ namespace SHADE
|
||||||
Handle<SHVkBuffer> texStorageBuffer{};
|
Handle<SHVkBuffer> texStorageBuffer{};
|
||||||
// Flags
|
// Flags
|
||||||
bool isDirty = true;
|
bool isDirty = true;
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------------------------*/
|
||||||
|
/* Helper Functions */
|
||||||
|
/*-----------------------------------------------------------------------------*/
|
||||||
|
void preparePipelineBarriers(vk::ImageLayout oldLayout, vk::ImageLayout newLayout, vk::PipelineStageFlagBits& srcStage, vk::PipelineStageFlagBits& dstStage, std::vector<vk::ImageMemoryBarrier>& barriers);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,4 +9,4 @@
|
||||||
#include "SHQuaternion.h"
|
#include "SHQuaternion.h"
|
||||||
#include "SHMatrix.h"
|
#include "SHMatrix.h"
|
||||||
|
|
||||||
#include "SHTransform.h"
|
#include "Transform/SHTransform.h"
|
Loading…
Reference in New Issue